org 00h ;dia chi dau chuong trinh ljmp main ;nhay qua trinh vu ngat org 03h ;dia chi vecto ngat ngoai 0 ljmp ngat1
org 30h main:
mov p0,#0f0h ;xoa port 0 mov a,#00h ;xoa thanh chua a
mov R2,#00h ;xoa thanh ghi r2--- mov R3,#1 ;Nap gia tri ban dau cho he so dem =1
mov R7,#50 ;Nap chu ky xung thap - cao la 1s CU 16 mov tmod,#01h ;khoi dong bo dinh thoi 0
mov ie,#81h ;cho phep ngat ngoai 0
mov DPTR,#200h ;nap dia chi dau cho con tro
mov R4,#1 ;Ma vong nap ngay gia tri dau--- setb IT0 ;ngat ngoai tich cuc muc
;clr 00h ;xoa bit BAO Co xung ngat1 ;clr 01h ;xoa bit kiem tra duoc phep nhan ;clr 02h ;xoa bit bao co xung ngat 2 ;CHUONG TRINH KIEM TRA TRINH TU
start: JNB 00h,Loop1 ;neu khong co xung kich thuc hien nhiem vu binh thuong clr 00h ;neu co xoa ngay bit xung
JNB P1.0,quaynguoc ;sau do kiem tra chieu quay
quaythuan: Lcall doiT ;goi chuong trinh tang doi R2 thanh R4 JNB 01h,start11 ;bo qua nhanT neu doiT khong lam viec Lcall nhanT ;Neu khong thuc hien chuong trinh nhan
start11:cjne R4,#17,start12 ;so sanh muc nguong vong xem co vuot 16 hay chua? mov R4,#1 ;hoan doi hai muc nguong vong 17 va 1 neu co vuot start12:jmp Loop1 ;thuc hien hoan tat chu trinh quay thuan
quaynguoc: Lcall doiG ;goi chuong trinh doi giam R2 thanh R4 JNB 01h,start21 ;Bo qua nhanG neu doiG khong lam viec Lcall nhanT ;neu khong thuc hien chuong trinh nhan
start21:cjne R4,#0,start22 ;so sanh muc nguong xem co lui qua 0 hay chua? mov R4,#16 ;hoan doi hai muc nguong 0 va 16
start22: Loop1:
wait11:Cjne R4,#01,loop2 ;kiem tra ma vong mov p0,#00000001b ;
jmp finish ;thoat khoi vong lap 1 loop2: Cjne R4,#02,loop3 ;kiem tra ma vong setb p0.0 ;A=1
lcall kxungB ;B rung clr p0.2 ;C=0 clr p0.3 ;D=0 jmp finish ;tiep tuc
mov p0,#00000011b ;A=1,B=1 jmp finish ;tiep tuc
loop4: Cjne R4,#04,loop5 ;kiem tra ma vong setb p0.1 ;B=1
lcall kxungA ; A rung clr p0.2 ;C=0 clr p0.3 ;D=0 jmp finish ;tiep tuc
loop5: Cjne R4,#05,loop6 ;kiem tra ma vong mov p0,#00000010b ;B=1
jmp finish ;tiep tuc
loop6: Cjne R4,#06,loop7 ;kiem tra ma vong clr p0.0 ;A=0
setb p0.1 ;B=1 lcall kxungC ;C rung clr P0.3 ;D=0 jmp finish ;tiep tuc
loop7: Cjne R4,#07,loop8 ;kiem tra ma vong mov p0,#00000110b ;B=1,C=1
jmp finish ;tiep tuc
loop8: Cjne R4,#08,loop9 ;kiem tra ma vong clr p0.0 ;A=0
setb p0.2 ;C=1 lcall kxungB ;B rung clr P0.3 ;D=0 jmp finish ;tiep tuc
loop9: Cjne R4,#09,loop10 ;kiem tra ma vong mov p0,#00000100b ;C=1
jmp finish ;tiep tuc
loop10:Cjne R4,#10,loop11 ;kiem tra ma vong clr P0.0 ;A=0
clr P0.1 ;B=0 setb p0.2 ;C=1 lcall kxungD ;D rung jmp finish ;tiep tuc
loop11:Cjne R4,#11,loop12 ;kiem tra ma vong mov p0,#00001100b ;C=1,D=1
jmp finish ;tiep tuc
loop12:Cjne R4,#12,loop13 ;kiem tra ma vong clr P0.0 ;A=0
setb P0.3 ;D=1 Lcall kxungC ;C rung jmp finish ;tiep tuc
loop13:Cjne R4,#13,loop14 ;kiem tra ma vong mov p0,#00001000b ;D=1
jmp finish ;tiep tuc
loop14:Cjne R4,#14,loop15 ;kiem tra ma vong clr P0.1 ;B=0
clr P0.2 ;C=0 setb P0.3 ;D=1 Lcall kxungA ;A rung jmp finish ;tiep tuc
loop15:Cjne R4,#15,loop16 ;kiem tra ma vong mov p0,#00001001b ;D=1,A=1
jmp finish ;tiep tuc
loop16:Cjne R4,#16,loop17 ;kiem tra ma vong clr P0.1 ;B=0
clr P0.2 ;C=0 setb P0.0 ;A=1 Lcall kxungD ;D rung jmp finish ;tiep tuc loop17:
finish: jmp start
;CHUONG TRINH XU LY NGAT KHI NHAN XUNG ngat1: JNB P1.0,done1 ;Kiem tra chieu quay jmp done2 ;thuc hien neu chieu quay duong done1: Cjne R2,#0,done3 ;thuc hien neu chieu quay am mov R2,#20 ;doi gia tri giua hai nguong 0 va 36
cjne R3,#1,done12 ;so sanh xem da vuot ma nguong duoi hay chua? mov R3,#5 ;doi gia tri giua hai nguong cho he so 0 va 4
done12: dec R3 ;giam he so
done3: dec R2 ;giam R2 neu chieu quay am jmp skipN ;thoat den cuoi trinh ngat
done2: cjne R2,#20,done4 ;thuc hien chieu quay duong mov R2,#0 ;doi muc gia tri hai nguong 36 va 0
cjne R3,#4,done21 ;so sanh xem da vuot ma nguong tren hay chua? mov R3,#0 ; doi gia tri giua hai nguong cho he so 4 va 0 done21: inc R3 ;tang he so
done4: inc R2 ;Tang r2 len 1 don vi neu co xung kich skipN:setb 00h ;bit ra hieu co xung ngat1 dung de tinh R4
reti
;1/chuong trinh con doi R2 thanh R4(doi tang) doiT:
mov A,R2
eq1T: cjne A,#1,eq5T mov A,#2
jmp fdoi1T
eq5T: cjne A,#10,eq6T mov A,#3
jmp fdoi1T
eq6T: cjne A,#11,eq10T mov A,#4 jmp fdoi1T eq10T:cjne A,#20,skipT mov A,#5 fdoi1T:mov R4,A setb 01h skipT: ret
;2/chuong trinh con tinh R4=R4+R3*4 nhanT: clr 01h mov A,R3 mov b,#4 Mul AB ADD A,R4 subb A,#4 mov R4,A ret
;3/chuong trinh con doi R2 thanh R4(doi giam) doiG:
mov A,R2
eq9G: cjne A,#19,eq5G mov A,#4
jmp fdoiG
eq5G: cjne A,#10,eq4G mov A,#3
jmp fdoiG
eq4G: cjne A,#9,eq0G mov A,#2
jmp fdoiG
mov A,#1 fdoiG:mov R4,A setb 01h skipG: ret
kxungA: setb P0.0 ;DUA DONG CUON DAY A LEN MUC CAO lcall kxung ;goi chuong trinh giu muc cao
clr P0.0 ;NGAT DONG TAI CUON DAY A lcall hxung ;duy tri thoi gian ha xung
ret
kxungB: setb P0.1 ;DUA DONG CUON DAY B LEN MUC CAO lcall kxung ;goi chuong trinh giu muc cao
clr P0.1 ;NGAT DONG TAI CUON DAY B lcall hxung ;duy tri thoi gian ha xung
ret
kxungC: setb P0.2 ;DUA DONG CUON DAY C LEN MUC CAO lcall kxung ;goi chuong trinh giu muc cao
clr P0.2 ;NGAT DONG TAI CUON DAY C lcall hxung ;duy tri thoi gian ha xung
ret
kxungD: setb P0.3 ;DUA DONG CUON DAY D LEN MUC CAO lcall kxung ;goi chuong trinh giu muc cao
clr P0.3 ;NGAT DONG TAI CUON DAY D lcall hxung ;duy tri thoi gian ha xung
ret
;CHUONG TRINH CON KICH XUNG CHUNG
kxung: mov a,R2 ;lay tin hieu xung kich tu ngat movc a,@a+dptr ;bien thanh tan so kich xung mov R6,a ;dua vao thanh ghi quy dinh tan so mov R0,a ;cat tam vao R0
Lcall delayxs ;thoi gian kich xung
mov a,R7 ;dua gia tri R7 vao thanh chua
subb a,R0 ;lay R7 tru di R6 sau do luu vao thanh chua ret
;CHUONG TRINH CON HA XUNG
hxung: mov R6,a ;dua noi dung vao thanh ghi quy dinh tan so Lcall delayxs ;thoi gian kich xung
clr 02h ret
delayxs: loop:
mov tl0,#0e7h;D8 setb tr0 wait:JB 02h,exitkx jnb tf0,wait clr tr0 clr tf0 djnz r6,loop exitkx: ret
;CHUONG TRINH DO TANG (12 x200)= 2400 XUNG/VONG(sua db kem sua ngat va tang, giam)
org 200h ; Nap Db
DB #00h ;coi nhu khong kich xung
DB #13 ;kich xung tan so cao nhat DB #22 ;kich xung tan so cao thu nhi
DB #27 ;kich xung tan so cao thu ba DB #32 ;kich xung tan so cao thu tu DB #34 ;kich xung tan so cao thu nam DB #37 ;kich xung tan so cao thu sau DB #39 ;kich xung tan so cao thu bay DB #42 ;kich xung tan so cao thu tam DB #47 ;kich xung tan so cao thu chin
DB #00h ;coi nhu khong kich xung vi tri giua cua 2 cuc 10 DB #47 ;kich xung tan so cao thu chin
DB #42 ;kich xung tan so cao thu tam DB #39 ;kich xung tan so cao thu bay DB #37 ;kich xung tan so cao thu sau DB #34 ;kich xung tan so cao thu nam DB #32 ;kich xung tan so cao thu tu DB #27 ;kich xung tan so cao thu ba
DB #22 ;kich xung tan so cao thu nhi DB #13 ;kich xung tan so cao nhat DB #00h ;coi nhu khong kich xung end