code viết bằng ASM, mình viết xong phần điều khiển tốc độ động cơ bằng bàn phím ma trận, nhưng giờ mình muốn có thêm đảo chiều động cơ. ai biết thì gợi ý dùm mình nhé. Tks
Code:
mtphim equ p2 ;ket noi voi ma tran ban phim
maphim equ r5 ;luu tamma phim
maquet equ 11111110B ;FEH
PWM BIT P1.6 ;BIT DIEU KHIEN THIET BI
PWM_VALUE EQU 31H
ORG 0000H
LJMP SETUP ;KHOI DONG CHUONG TRINH KHI CAP NGUON
ORG 000BH
LJMP T0_ISR ;NGAT TIMER 0 DIEU RONG XUNG
ORG 0030H
SETUP:
SETB EA ;CHO PHEP NGAT TOAN CUC
SETB ET0 ;CHO PHEP NGAT TIMER 0
CLR PWM ;TAT THIET BI
CLR P1.1 ;CHAN CON LAI NOI VOI DONG CO
MOV TMOD,#11H
MOV TH0,#HIGH(-200) ;TA 12MHZ => 200us x 100% = 20000us = 20ms
MOV TL0,#LOW(-200) ;CHU KY DIEU XUNG
MOV PWM_VALUE,#0 ;MAC DINH GIA TRI PWM = 0
MOV R7,#0 ;BIEN XAC DINH SO LAN NGAT TIMER
SETB TR0 ;CHO PHEP TIMER HOAT DONG
MAIN:
CALL KEYPRES
CJNE A,#0FFH,MAIN1
SJMP MAIN
MAIN1:
CJNE A,#0,CAP1
MOV PWM_VALUE,#0
SJMP MAIN
CAP1:
CJNE A,#1,CAP2
MOV PWM_VALUE,#5
MOV A,PWM_VALUE
SJMP MAIN
CAP2:
CJNE A,#2,CAP3
MOV PWM_VALUE,#10
MOV A,PWM_VALUE
SJMP MAIN
CAP3:
CJNE A,#3,CAP4
MOV PWM_VALUE,#20
MOV A,PWM_VALUE
SJMP MAIN
CAP4:
CJNE A,#4,CAP5
MOV PWM_VALUE,#25
MOV A,PWM_VALUE
SJMP MAIN
CAP5:
CJNE A,#5,CAP6
MOV PWM_VALUE,#50
MOV A,PWM_VALUE
SJMP MAIN
CAP6:
CJNE A,#6,CAP7
MOV PWM_VALUE,#75
MOV A,PWM_VALUE
SJMP MAIN
CAP7:
CJNE A,#7,main
MOV PWM_VALUE,#100
MOV A,PWM_VALUE
SJMP MAIN
T0_ISR: ;NGAT TIMER DUNG DE DIEU RONG XUNG
PUSH ACC
MOV 7FH,C
CLR TR0
MOV TH0,#HIGH(-200)
MOV TL0,#LOW(-200)
SETB TR0
MOV A,PWM_VALUE
CJNE A,#0,EN_PWM ;DO DAY XUNG <> 0 THI CHO DIEU XUNG
JMP EXIT_ISR ;DO DAY XUNG = 0 THI THOAT KHOI THU TUC NGAT
EN_PWM:
INC R7 ;TANG BIEN DEM NGAT
MOV A,R7
CJNE A,PWM_VALUE,OFF_PULSE ;DU THOI GIAN DAY XUNG THI TAT THIET BI
CLR PWM ;TAT THIET BI
OFF_PULSE:
CJNE A,#100,EXIT_ISR ;CHUA HET CHU KY DIEU XUNG THI THOAT NGAT
SETB PWM ;TOI ROI THI MO THIET BI
MOV R7,#0 ;RESET LAI BIEN DEM
EXIT_ISR:
MOV C,7FH
POP ACC
RETI
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;CHUONG TRINH CON CHONG RUNG PHIM
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
KEYPRES:
MOV R4,#5 ;NHAP SO DEM 5 LAN
keypres1 :
LCALL KEY ;NEU CO PHIM NHAN THI CO C = 1
JC PN1 ;KIEM TRA TIEP NEU C = 1
RET ;NEU K CO PHIM NHAN THI C = 0
PN1:
DJNZ R4,KEYPRES1 ;QUAY VE LAP LAI CHONG NAY
PUSH ACC ;CAT NOI DUNG PHIM TRONG A
KEYPRES2:
MOV R4,#5 ;NHAP SO DEM 5 LAN CHO NHA PHIM
KEYPRES3:
LCALL KEY ;CO PHIM NHAN HAY K
JC KEYPRES2 ;CO THI KIEM TRA LAI
DJNZ R4,KEYPRES3 ;KHONG THI LAP LAI 5 LAN DE DAM BAO
POP ACC ;KHOI PHUC LAI GIA TRI CHO A
RET
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
;CHUONG TRINH CON QUET PHIM
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
key:
MOV R3,#MAQUET ;BAT DAU VOI COT SO 0(FEH)
MOV R6,#4 ;SU DUNG R6 LAM BO DEM
mov MAPHIM,#00
KEY1:
MOV MTPHIM,R3 ;XUAT MA QUET RA COT
MOV A,MTPHIM ;DOC LAI PORT1 DE XU LY TIEP THEO
ANL A,#0F0H ;XOA 4 BIT THAP LA HANG
CJNE A,#0F0H,KEY2 ;co nhan fim thi nhay
MOV A,R3
RL A ;XOAY DE CHUYEN DEN COT KE
MOV R3,A
MOV A,MAPHIM ;CHUYEN MA PHIM SANG COT KE
ADD A,#4
MOV MAPHIM,A
DJNZ R6,KEY1
CLR C ;CLR C NEU NHU K CO PHIM NHAN
MOV A,#0FFH ;THOAT VOI MA TRONG A = FFH
RET
KEY2:
SWAP A
KEY4:
RRC A ;XOAY SANG PHAI TIM BIT 0
JNC KEY3 ;NHAY NEU (C)=0
INC MAPHIM ;TANG MA PHIM LEN COT KE
SJMP KEY4 ;TIEP TUC CHO DEN KHI (C)=0
KEY3:
MOV A,MAPHIM
SETB C
RET
END
(mạo phạm phát biểu câu.e k biết gì mong các bác chém nhẹ nha)

Comment