You are on page 1of 39

Mach in ng h co hen gi dung ic lp trinh AT89C51

Trc ht hay tim hiu cach cho hin thi cac s dung ma quet trn cac chn Anode cua cac en s dung ma 7 oan va s mach in ng h dung chay oan chng trinh ngun sau y:

Tt ca cac linh kin cho rap trn mt bang mach in nho. Trn o dung 6 en s ma 7 oan hin thi gi - phut - giy.

S mach in cho thy, chung ta dung cac xung ra ng vi bit 0, tun t cho ra trn cac chn cua cac chn p2.0, p2.1, p2.2, p2.3, p2.4 va p2.5 ln lt cho chn anode cua cac en s ni ln ngun 5V, nh vy trong mt luc chi co mt en s phat sang, vi nhip xung quay vong nhanh va do mt co hin tng lu anh, chung ta co cam tng la 6 en Led cung c kich sang.

Chung ta dung 7 chn cua cang p1 cho xut cac con s theo dang ma 7 oan. Mun Led nao sang, chung ta t bit 0 vao chn cathode cua no, vy bit 1 tt Led va bit 0 cp dong cho Led sang. Theo s chung ta thy: Chn Chn Chn Chn Chn Chn Chn p1.0 p1.1 p1.2 p1.3 p1.4 p1.5 p1.6 kim kim kim kim kim kim kim soat soat soat soat soat soat soat dong dong dong dong dong dong dong cp cp cp cp cp cp cp cho cho cho cho cho cho cho Led-a trong en s. Led-b trong en s. Led-c trong en s. Led-d trong en s. Led-e trong en s. Led-f trong en s. Led-g trong en s.

Sau khi a chon inh phn cng nh s mach in trn, chung ta se inh ra c cac dang ma bit tun t cho hin cac con s: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 trn cac en s ma 7 oan. tab: ; Cac ma dung hin s trn en 7 oan t trong bang co tn nhan la tab: db 0c0h, 0f9h, 0a4h, 0b0h, 99h, 92h, 82h, 0f8h, 80h, 90h ; cac ma hin s vit theo dang h 16. d thy y nghia vt ly chung ta se vit lai cac ma h 16 dang ma h c 2 theo trong gia 8-4-2-1. * * * * * * * * * * 0c0h, 0f9h, 0a4h, 0b0h, 99h, 92h, 82h, 0f8h, 80h, 90h, vit lai dang ma h c 2: 1100 0000b ng vi s 0 vit lai dang ma h c 2: 1111 1001b ng vi s 1 vit lai dang ma h c 2: 1010 0100b ng vi s 2 vit lai dang ma h c 2: 1011 0000b ng vi s 3 vit lai dang ma h c 2: 1001 1001b ng vi s 4 vit lai dang ma h c 2: 1001 0010b ng vi s 5 vit lai dang ma h c 2: 1000 0010b ng vi s 6 vit lai dang ma h c 2: 1111 1000b ng vi s 7 vit lai dang ma h c 2: 1000 0000b ng vi s 8 vit lai dang ma h c 2: 1001 0000b ng vi s 9

Tim hiu tac dung cua cac nut nhn va cac led chi thi trang thai:

Dung hinh ng giai s dung ma 7 oan:

thich hoat

ng

cua en

Cach cho xut s liu trn ma 7 oan, hin cac s 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

Cach dung ma quet quay vong, mi ln chi co mt en s phat sang:

Cach dung MIDE-51 cho bin dich oan chng trinh ngun sau y ra dang ma lnh:

Sau khi bin dich thanh cng, chung ta co cac dong ma lnh nh sau: :020000000130CD :0200030021B921 :02000B0001E30F :10003000758150C20075210075220075230075245A :1000400000752500752600752700752800752900A4 :10005000758C05758A05758902D2AFD2A8C2A9C26E :100060008CC288E523B52609E524B52704D2B7015B :100070007DE523B52807E524B52902C2B73000E3A2 :10008000118E0163C0F9A4B0999282F88090A823E0 :10009000900084E8C4540F93F590C2A0319FD2A081 :1000A000E8540F93F590C2A1319FD2A1A924E9C4CD :1000B000540F93F590C2A2319FD2A2E9540F93F549 :1000C00090C2A3319FD2A3AA25EAC4540F93F590FE :1000D000C2A4319FD2A4EA540F93F590C2A5319FD8 :1000E000D2A522C0E0C0D00521E521B4C8387521D1 :1000F000000522E522B40A2E752200B280B2817476 :10010000012525D4F525B4601D752500740125242D :10011000D4F524B4601075240074012523D4F5238C :10012000B42403752300D0D0D0E032A826900084F8 :10013000E8C4540F93F590C2A0319FD2A0E8540FA9 :1001400093F590C2A1319FD2A1A927E9C4540F937E :10015000F590C2A2319FD2A2E9540F93F590C2A3A9 :10016000319FD2A322A828900084E8C4540F93F5AD :1001700090C2A0319FD2A0E8540F93F590C2A13154 :100180009FD2A1A929E9C4540F93F590C2A2319F2F :10019000D2A2E9540F93F590C2A3319FD2A3227546 :1001A00030027531FFD531FDD530F72275326475D7 :1001B00033FAD533FDD532F722C0E0C0D0C2A8C291 :1001C0008CC2A9118E20B2FB118E30B2FBD2B1D2FB :1001D000B0118E20B413118E30B4FBA82374012803 :1001E000D4F523B424EB75230020B313118E30B360 :1001F000FBA824740128D4F524B460D5752400200C :10020000B507118E30B5FB418720B2C5118E30B2D3 :10021000FBC2B0D2B1312B20B413312B30B4FBA8C8 :1002200026740128D4F526B424EB75260020B313D8 :10023000312B30B3FBA827740128D4F527B460D53F :1002400075270020B2CF312B30B2FBD2B0C2B13112 :100250006520B413316530B4FBA828740128D4F5A7

:1002600028B424EB75280020B313316530B3FBA804 :1002700029740128D4F529B460D575290020B2CF9E :10028000316530B2FB21CDD2A8D28CD200D2A9D216 :06029000B7D0D0D0E0322F :00000001FF By gi Ban dung hp nap, cho nap cac dong ma lnh nay vao b nh EEPROM cua ic lp trinh AT89C51, gn IC nay vao mach in, Ban se co mt ng h co chc nng chinh gi m gi tt va co th dung chn p3.7 iu khin cac thit bi in t khac. y la chng trinh ngun cua mach in ng h co hen, Ban co th ct chng trinh nay dan vao vung soan thao cua MIDE51 go phim F9 cho dich ra file .hex, va nap cac dong ma lnh nay vao b nh EEPROM nm trong ic lp trinh AT89C51 lam mach in ng h co hen. Ban xem phn giai thich cach dung cac cu lnh phn bn di. ;; Dong ho co nut chinh mo chinh tat ;;-----------------------------------------k1 bit p3.2 k2 bit p3.4 k3 bit p3.3 k4 bit p3.5 c_hour equ 23h c_minute equ 24h c_second equ 25h on_hour equ 26h on_minute equ 27h off_hour equ 28h off_minute equ 29h org 0000h jmp main org 0003h jmp wint0 org 000bh jmp wt0 org 0030h

main: mov sp, #50h clr 00h mov 21h, #0 mov 22h, #0 mov c_hour, #0 mov c_minute, #0 mov c_second, #0 mov on_hour, #0 mov on_minute, #0 mov off_hour, #0 mov off_minute, #0 ;; mov th0, #05 mov tl0, #05 mov tmod, #00000010b ;02h ;; setb ea setb ex0 clr et0 clr tr0 clr it0 m: mov a, c_hour cjne a, on_hour, off_time mov a, c_minute cjne a, on_minute, off_time setb p3.7 jmp next off_time: mov a, c_hour cjne a, off_hour, next mov a, c_minute cjne a, off_minute, next clr p3.7 next: jnb 00h, m call disp1 jmp m ;; tab: db 0c0h, 0f9h, 0a4h, 0b0h, 99h, 92h, 82h, 0f8h, 80h

db 90h ;; disp1: mov r0, c_hour mov dptr, #tab mov a, r0 swap a anl a, #0fh movc a, @a+dptr mov p1, a clr p2.0 call dl setb p2.0 mov a, r0 anl a, #0fh movc a, @a+dptr mov p1, a clr p2.1 call dl setb p2.1 ;; mov r1, c_minute mov a, r1 swap a anl a, #0fh movc a, @a+dptr mov p1, a clr p2.2 call dl setb p2.2 mov a, r1 anl a, #0fh movc a, @a+dptr mov p1, a clr p2.3 call dl setb p2.3 ;; mov r2, c_second mov a, r2 swap a

anl a, #0fh movc a, @a+dptr mov p1, a clr p2.4 call dl setb p2.4 mov a, r2 anl a, #0fh movc a, @a+dptr mov p1, a clr p2.5 call dl setb p2.5 ret ;; wt0: push acc push psw inc 21h mov a, 21h cjne a, 0c8h, t0reti ; 200d=0c8h 0.5ms*200=100ms mov 21h, #0 inc 22h mov a, 22h cjne a, #10, t0reti ; 100ms*10=1s mov 22h, #0 cpl p0.0 cpl p0.1 ;; mov a, #01h add a, c_second da a mov c_second, a cjne a, #60h, t0reti mov c_second, #0 ;; mov a, #01h add a, c_minute da a mov c_minute, a cjne a, #60h, t0reti

mov c_minute, #0 ;; mov a, #01h add a, c_hour da a mov c_hour, a cjne a, #24h, t0reti mov c_hour, #0 ;; t0reti: pop psw pop acc reti ;; disp2: mov r0, on_hour mov dptr, #tab mov a, r0 swap a anl a, #0fh movc a, @a+dptr mov p1, a clr p2.0 call dl setb p2.0 mov a, r0 anl a, #0fh movc a, @a+dptr mov p1, a clr p2.1 call dl setb p2.1 ;; mov r1, on_minute mov a, r1 swap a anl a, #0fh movc a, @a+dptr mov p1, a clr p2.2 call dl

setb p2.2 mov a, r1 anl a, #0fh movc a, @a+dptr mov p1, a clr p2.3 call dl setb p2.3 ret ;; disp3: mov r0, off_hour mov dptr, #tab mov a, r0 swap a anl a, #0fh movc a, @a+dptr mov p1, a clr p2.0 call dl setb p2.0 mov a, r0 anl a, #0fh movc a, @a+dptr mov p1, a clr p2.1 call dl setb p2.1 ;; mov r1, off_minute mov a, r1 swap a anl a, #0fh movc a, @a+dptr mov p1, a clr p2.2 call dl setb p2.2 mov a, r1 anl a, #0fh movc a, @a+dptr

mov p1, a clr p2.3 call dl setb p2.3 ret ;; dl: mov 30h, #02h dl1: mov 31h, #0ffh djnz 31h, $ djnz 30h, dl1 ret ;; del: mov 32h, #100 del1: mov 33h, #250 djnz 33h, $ djnz 32h, del1 ret ;; wint0: push acc push psw clr ex0 clr tr0 clr et0 k1_11: call disp1 jb k1, k1_11 k11_1: call disp1 jnb k1, k11_1 ;; ph4: setb p3.1 setb p3.0 ph0: call disp1 jb k2, ph01 ;; k2_1: call disp1

jnb k2, k2_1 mov r0, c_hour mov a, #01h add a, r0 da a mov c_hour, a cjne a, #24h, ph0 mov c_hour, #0 ph01: jb k3, ph1 k3_1: call disp1 jnb k3, k3_1 mov r0, c_minute mov a, #01h add a, r0 da a mov c_minute, a cjne a, #60h, ph0 mov c_minute, #0 ph1: jb k4, ph10 k4_1: call disp1 jnb k4, k4_1 jmp tend ph10: jb k1, ph0 k1_1: call disp1 jnb k1, k1_1 clr p3.0 setb p3.1 ;;-------------------------------ph2: call disp2 jb k2, ph201 k22_1: call disp2 jnb k2, k22_1 mov r0, on_hour

mov a, #01h add a, r0 da a mov on_hour, a cjne a, #24h, ph2 mov on_hour, #0 ph201: jb k3, ph210 k22_2: call disp2 jnb k3, k22_2 mov r0, on_minute mov a, #01h add a, r0 da a mov on_minute, a cjne a, #60h, ph2 mov on_minute, #0 ph210: jb k1, ph2 k22_3: call disp2 jnb k1, k22_3 setb p3.0 clr p3.1 ;;---------------------------------------ph3: call disp3 jb k2, ph301 k33_1: call disp3 jnb k2, k33_1 mov r0, off_hour mov a, #01h add a, r0 da a mov off_hour, a cjne a, #24h, ph3 mov off_hour, #0 ph301: jb k3, ph310 k33_2:

call disp3 jnb k3, k33_2 mov r0, off_minute mov a, #01h add a, r0 da a mov off_minute, a cjne a, #60h, ph3 mov off_minute, #0 ph310: jb k1, ph3 k33_3: call disp3 jnb k1, k33_3 jmp ph4 ;;---------------------------------------tend: setb ex0 setb tr0 setb 00h setb et0 setb p3.7 pop psw pop acc reti end

Phn tich y nghia va cach dung cua cac cu lnh trong chng trinh ngun: 1. Khi u Ban dung cac inh nghia bit va equ t tn cho cac bit va thanh ghi tin dung. ;; Dong ho co nut chinh mo chinh tat ;;-----------------------------------------; t tn cho cac nut nhn k1 bit p3.2 ; t tn chn p3.2 la k1 k2 bit p3.4 ; nh trn k3 bit p3.3 ; nh trn

k4 bit p3.5 ; nh trn ; t tn cac thanh nh dung ct cac con s chi gi-phut- giy c_hour equ 23h ; t tn cho thanh nh co ia chi 23h la c_hour c_minute equ 24h ; lam nh trn c_second equ 25h ; lam nh trn ; t tn cho cac thanh nh dung ct s gi cho m on_hour equ 26h ; lam nh trn on_minute equ 27h ; lam nh trn ; t tn cho cac thanh nh dung ct s gi cho tt off_hour equ 28h ; lam nh trn off_minute equ 29h ; lam nh trn 2. Cho chng trinh khi u t thanh reset, co ia chi 0000h. ; Vao chng trinh org 0000h jmp main ; cho nhy n tn nhan main, nhy qua cac thanh dung cho ngt 3. t cac chng trinh cho cac dang ngt org 0003h ; ngt theo bit trn INT0 jmp wint0 ; nhy n tn nhan wint0 org 000bh ; ngt theo bit TF0, bit trang cua Timer10 jmp wt0 ; nhy n tn nhan wt0 org 0030h ; Cac chng trinh iu khin ng h khi t ia chi nay main: ; tn nhan dung cho lnh nhy mov sp, #50h ; inh ia chi cho ngn xp clr 00h ; cho xoa bit co ia chi 00h ; t tri khi u cho cac thanh ghi dung hin thi gi-phut-giy mov 21h, #0 ; tri khi u t s 0 vao thanh ghi 21h mov 22h, #0 ; lam nh trn

mov mov mov mov mov mov mov

c_hour, #0 ; lam nh trn c_minute, #0 ; lam nh trn c_second, #0 ; lam nh trn on_hour, #0 ; lam nh trn on_minute, #0 ; lam nh trn off_hour, #0 ; lam nh trn off_minute, #0 ; lam nh trn

; Khai bao cac tri cho Timer 0 mov th0, #05 ; nap tri khi u cho thanh m 8 bit th0 mov tl0, #05 ; nap tri khi u cho thanh m 8 bit tl0 mov tmod, #00000010b ; chon inh cho timer 0 lam vic mode 2 hiu ro hn hoat ng cua cac timer trong AT89C51, Ban xem hinh sau:

Trong thanh tmod, co 2 bit dung chon mode cho cac ng h timer trong AT89C51. Nu Ban chon:

M1 = 0 , M0 = 0 la cho timer chay mode 0, mode dung thanh m 13 bit M1 = 0 , M0 = 1 la cho timer chay mode 1, mode dung thanh m 16 bit M1 = 1 , M0 = 0 la cho timer chay mode 2, mode dung thanh m 8 bit M1 = 1 , M0 = 1 la cho timer chay mode 3, mode hn hp. Vi dong khai bao trong thanh tmod la 00000010b thi chung ta chon timer 0 cho lam vic mode 2, tc dung thanh tl0 lam thanh m 8 bit. Khi thanh tl0 m n tran s, bit bao tran tf0se nhy ln 1. No se co 2 tac dung. * Tac dung th nht: la cho tri trong tl0 v 0 va ng thi ly tri co trong th0 cho nap vao thanh tl0. * Tac dung th hai: la nhy ngt theo bit tf0. Chng trinh nhy v ia chi 000bh cua b nh Hinh ve trn cho thy hoat ng cua Timer 0 (giai thich tng t cho Timer 1) nh sau: Trong AT89C51 co mach dao ng tao ra xung nhip, tn s xung ly theo thanh anh trn chn 18, 19. Xung nay co th a vao b m cua cac timer, Ban cung co th ly xung ngoai a vao thanh m trn chn T0 hay chn p3.4. cho xung nhip a vao thanh m, Ban hay inh bit cho C/T ao, nu inh no la bit 1 thi mach m se ly xung ngoai a vao trn chn T0, nu inh la bit 0 thi mach m se ly xung cua mach dao ng ni. Xung nhip trc khi vao b m con phai qua mt khoa in, khoa in nay chiu iu khin theo cac bit sau: * Bit tr0, nu cho tr0 c inh bit 1, khoa in se ong lai va nu tr0 bit 0 no se lam h khoa in va ct xung nhip khng cho vao thanh m. * Bit INT0 ao, khi bit Gate chon bit 1 thi ngt ngoai INT0 se co tac dung n mach m, khi INT0 la bit 1 no cho m va khi INT0 bit 0, no se ngt mach m. Khi bit Gate chon bit 0 thi ngt ngoai trn chn INT0 se mt tac dung. Tom lai, nu Ban khng dung ngt ngoai INT0 thi t bit Gate mc bit 0. Luc nay dung bit tr0 ong m mach m. Nghia la:

setb tr0 la cho xung nhip vao b m cua timer 0 clr tr0 la ngt xung nhip khng cho vao b m cua timer0 ; Khai bao chon dang ngt va iu khin hoat ng cua timer 0. setb ea ; bit ea dung tt/m 6 dang ngt trong AT89C51, set cho dung ngt setb ex0 ; t ex0 = 1 la cho dung ngt ngoai trn chn INT0 clr et0 ; tam thi cho tt ngt theo bit bao tran tf0 clr tr0 ; tam thi cho tt xung nhip vao b m tl0, tt time 0 clr it0 ; chon hinh thc ngt theo mc volt thp cua ngt ngoai INT0 Mun hiu ro vai tro cua cac ngt trong AT89C51, chung ta xem hinh ve sau:

Chc nng Ngt la gi? Ngt la mt chc nng rt hay cua cac ic lp trinh, khi Ban a chon du hiu nhy ngt, tc chon kiu ngt, khng cn bit chng trinh cua Ban luc nay ang lam gi, mi khi xut hin du hin bao ngt, chng trinh ang chay se dng lai va cho nhy n ia chi a qui inh cua cac ngt chay chng trinh ngt, cho n khi gp cu lnh reti thi kt thuc chng trinh

ngt va quay tr lai tip tuc lam cng vic a tam dng trc o. Thi du: Ban a chon dang ngt theo bit bao tran cua timer 0, o la bit tf0. Khi timer 0 ang m xung nhip, xung vao cac thanh m tl0, th0, bit tf0 a cho bit 0 vi cu lnh clr tf0, khi cac thanh m tran s thi bit tf0 se nhy ln bit 1 va luc nay ngt tf0 se bi kich hoat, no tam dng chng trinh ang chay, nhy v ia chi 000bh va chay chng trinh co ia chi nay, cho n khi gp cu lnh reti, no se ngng chay chng trinh ngt va quay lai tip tuc chay chng trinh a tam dng trc o.

4. Cho kim tra vi cac tri a inh trc ; Cho kim tra tri trong cac vung nh off_timer va on_timer m: ; t tn nhan m: mov a, c_hour ; chuyn tri trong c_hour vao a cjne a, on_hour, off_time ; cho so sanh tri trong on_hour va a chon kiu nhy mov a, c_minute ; chuyn tri trong c_minute vao a cjne a, on_minute, off_time ; cho so sanh tri trong on_minute vi a chon kiu nhy setb p3.7 ; t bit iu khin trang thai trn chn p3.7 ln mc ap cao jmp next ; cho nhy n tn nhan next: off_time: ; t tn nhan off_time mov a, c_hour ; chuyn tri trong c_hour vao a cjne a, off_hour, next ; cho so sanh tri trong off_hour va a chon kiu nhy mov a, c_minute ; chuyn tri trong c_minute vao a cjne a, off_minute, next ; so sanh tri trong off_minute va a chon kiu nhy clr p3.7 ; t bit trn chn p3.7 xung mc ap thp next: jnb 00h, m ; cho nhy theo bit kim tra 00h call disp1 ; cho goi trinh hin thi s jmp m ; nhy v tn nhan m: Y nghia cua oan chng trinh trn la cho kim tra tri co trong c_hour va c_minute vi cac tri a co trong on_hour, on_minute

va off_hour, off_minute iu khin trang thai bit p3.7. y Ban chu y cach dung cu lnh cjne (compare jump no equal), mt cu lnh dung phep so sanh 2 tri xem bng hay khng bng chon kiu nhy, y la mt lnh rt hay. Cung chu y n bit kim tra co ia chi bit c chon la 00h ; tao bang ct cac tri dung lam hin cac s ma thp phn trn cac Led 7 oan tab: ; t tn nhan db 0c0h, 0f9h, 0a4h, 0b0h, 99h, 92h, 82h, 0f8h, 80h, 90h ; ma hin s khi cho xut trn cang p1 Ban xem phn giai thich cach cho hin cac s trn cac en s dung ma 7 oan 5. Vit chng trinh hin thi s ; y la oan chng trinh dung hin thi s ln bang en s ; Vit chng trinh hin thi gi (hour) disp1: ; t tn nhan hin s la disp1: mov r0, c_hour ; chuyn tri trong c_hour vao r0 mov dptr, #tab ; t bang tra ma con s vao thanh ghi con tro mov a, r0 ; chuyn tri trong r0 vao a swap a ; cho ao vi tri 4 bit cao / thp trong thanh a anl a, #0fh ; ly logic and che 4 bit cao, gi nguyn tri 4 bit thp movc a, @a+dptr ; ly tri trong bang hin s gn vao a mov p1, a ; cho xut tri trong a ra cang p1 hin s clr p2.0 ; t chn p2.0 xung mc thp m en s nay call dl ; goi chng trinh lam chm dl: tao mc sang cho con s setb p2.0 ; tt en s a m trc khi m qua en s khac mov a, r0 ; chuyn tri con trong r0 vao a anl a, #0fh ; dung logic and che 4 bit cao, gi nguyn 4 bit thp movc a, @a+dptr ; truy bang ly ma hin s chuyn vao a mov p1, a ; lai cho xut ma con s trong a ra cang p1 clr p2.1 ; t chn p2.1 xung mc ap thp m en s call dl ; cho lam chm co mc sang tt

setb p2.1 ; t chn p2.1 ln cao tt en s nay tranh lem s ; Vit chng trinh hin thi cac con s chi phut (minute) ; Ban xem cach vit tng t nh phn trn mov r1, c_minute mov a, r1 swap a anl a, #0fh movc a, @a+dptr mov p1, a clr p2.2 call dl setb p2.2 mov a, r1 anl a, #0fh movc a, @a+dptr mov p1, a clr p2.3 call dl setb p2.3 ; Vit chng trinh cho hin thi giy (second) ; Ban xem cach vit tng t nh phn trn. mov r2, c_second mov a, r2 swap a anl a, #0fh movc a, @a+dptr mov p1, a clr p2.4 call dl setb p2.4 mov a, r2 anl a, #0fh movc a, @a+dptr mov p1, a clr p2.5 call dl setb p2.5

ret Trong cac cu lnh trn co nhiu cu lnh dung rt hay, nh: * Trong thanh m 8 bit, 4 bit cao co th la hang chuc va 4 bit thp la hang n vi, trong trng hp nay Ban dung lnh swap a chuyn i vi tri cua 4 bit thp ln cao va cao qua thp. * Mun ly tri thp phn co trn 4 bit thp chung ta co th cho 4 bit cao u bng 0, va cho bao toan tri cua 4 bit thp, mun vy, chung ta dung logic and, cu lnh anl a, #0fh (00001111b). * ly cac s ma co trong bang vi tn nhan la tab: , chung ta dung cu lnh: movc a, @a+dptr. Trc o trong a cha tri thp phn dang c 2, t tri nay se tim ra c ma cua con s co trong bang tra tab:, va ma nay c ly ra va ri cung cho ct vao a, sau o se cho xut ra trn cang p1. 6. oan chng trinh dung cho mach m theo bc tng 1 ; y la chng trinh ngt mi khi xut hin bit bao tran tf0 wt0: ; t tn nha wt0 push acc ; tam cho ct tri cua a vao ngn xp, mn dung a push psw ; tam cho ct tri trong thanh psw vao ngn xp inc 21h ; cho tng tri co trong thanh 21h ln +1 mov a, 21h ; cho chuyn tri cua thanh 21h vao a cjne a, 0c8h, t0reti ; 200d=0c8h 0.5ms*200=100ms ; so sanh tri trong a bng 0c8h cha nhy n tt ngt mov 21h, #0 ; tra tri trong thanh 21h tr v 0 inc 22h ; by gi cho tng tri trong thanh 22h mov a, 22h ; cung chuyn tri trong thanh 22h vao a cjne a, #10, t0reti ; 100ms*10=1s ; lai so sanh tri trong a vi tri 10, nhy n tt ngt mov 22h, #0 ; lai tra tri trong 22h v mc m 0 cpl p0.0 ; ly bu bit trn chn p0.0, co th gn led trn chn nay hin thi trang thai m cpl p0.1 ; ly bu bit trn chn p0.1, co th gn led trn chn nay hin thi trang thai m 7. Tao tri tng trong cac thanh nh c_second, c_minute, c_hour

;; mov a, #01h ; cho tri 1 vao thanh a add a, c_second ; cho cng tri trong a vi tri trong c_second, kt qua ct vao a da a ; bin i tao tri thp phn dang c 2 t trong vung 4 bit thp, 4 bit cao mov c_second, a ; chuyn tri co trong a ct vao c_second cjne a, #60h, t0reti ; so sanh tri trong a bng 60 cha chon hng nhy mov c_second, #0 ; tra tri trong c_second v lai mc 0. ;; mov a, #01h ; t tri 1 vao thanh a add a, c_minute ; cho cng tri trong a va tri cua c_minute, kt qua ct vao a da a ; bin i tri trong a ra s h thp phn dang c 2, t trong 4 bit thp va 4 bit cao mov c_minute, a ; chuyn tri trong a vao ct trong c_minute cjne a, #60h, t0reti ; cho a so sanh vi tri 60 chon hng nhy mov c_minute, #0 ; tra tri trong c_minute v lai mc 0 ;; mov a, #01h ; t tri 1 vao thanh a add a, c_hour ; cho cng tri trong a va tri cua c_hour, kt qua ct vao a da a ; bin i tri trong a ra dang s thp phn h c 2, ct vung 4 bit thp va 4 bit cao mov c_hour, a ; chuyn tri trong a vao ct trong c_hour cjne a, #24h, t0reti ; so sanh tri trong a vi s 24, chon hng nhy mov c_hour, #0 ; tra tri trong c_hour v lai mc 0 ;; t0reti: ; t tn nhan dng chay chng trinh ngt pop psw ; ly tri a ct trong ngn xp tra lai cho thanh psw pop acc ; ly tri a ct trong ngn xp tra lai thanh a reti ; dng chay chng trinh ngt, quay lai chay chng trinh chinh

8. Vit chng trinh hin thi s cho mode chinh gi ; Hin s luc ang chinh inh hen gi m ; Tham khao chng hinh hin gi luc binh thng ;; disp2: ; tn nhan dung cho lnh nhy mov r0, on_hour mov dptr, #tab mov a, r0 swap a anl a, #0fh movc a, @a+dptr mov p1, a clr p2.0 call dl setb p2.0 mov a, r0 anl a, #0fh movc a, @a+dptr mov p1, a clr p2.1 call dl setb p2.1 ;; mov r1, on_minute mov a, r1 swap a anl a, #0fh movc a, @a+dptr mov p1, a clr p2.2 call dl setb p2.2 mov a, r1 anl a, #0fh movc a, @a+dptr mov p1, a clr p2.3

call dl setb p2.3 ret ; Hin s luc ang chinh inh hen gi tt ; Tham khao chng hinh hin gi luc binh thng ;; disp3: ; tn nhan dung cho lnh nhy mov r0, off_hour mov dptr, #tab mov a, r0 swap a anl a, #0fh movc a, @a+dptr mov p1, a clr p2.0 call dl setb p2.0 mov a, r0 anl a, #0fh movc a, @a+dptr mov p1, a clr p2.1 call dl setb p2.1 ;; mov r1, off_minute mov a, r1 swap a anl a, #0fh movc a, @a+dptr mov p1, a clr p2.2 call dl setb p2.2 mov a, r1 anl a, #0fh movc a, @a+dptr mov p1, a clr p2.3

call dl setb p2.3 ret 9. Cac oan chng trinh lam tr ; Lam tr co sang ro ;; dl: mov 30h, #02h dl1: mov 31h, #0ffh djnz 31h, $ djnz 30h, dl1 ret ;; del: mov 32h, #100 del1: mov 33h, #250 djnz 33h, $ djnz 32h, del1 ret 10. Chng trinh vit cho cac nut chinh

Hinh ve trn cho thy cng dung c giao cho cac nut chinh. oan chng trinh sau c vit cho 4 nut chinh K1, K2, K3 va K4. Khi Ban nht nut K1 se nhy ngt ngoai va vao mode chinh.Nhn K1 ln u se cho chinh gi-phut binh thng, luc nay K2 dung chinh gi va K3 dung chinh phut. Nhn K4 ra mode chinh. Nhn K1 ln na vao vao mode chinh gi-phut cho mode on_timer, luc nay K2 cung dung chinh gi va K3 dung chinh phut. Nhn K4 ra mode chinh. Nhn K1 ln na vao mode chinh off_timer va luc nay K2 cung dung chinh gi, K3 dung chinh phut. Nhn K4 ra mode chinh.

;; wint0: ; t tn nhan cho lnh ngt ngoai ng vi nut nhn K1 push acc ; tam cho ct tri trong thanh acc vao ngn xp push psw ; tam cho ct tri trong thanh psw vao ngn xp clr ex0 ; tam cho tt ngt ngoai clr tr0 ; tam dng mach m cua timer 0 clr et0 ; tam dng ngt theo bit bao tran tf0 k1_11: ; t tn nhan cho lnh nhy call disp1 ; cho goi chng trinh hin thi s jb k1, k1_11 ; kim tra bit 1 cua nut nhn K1 k11_1: ; t tn nhan cho lnh nhy call disp1 ; tip tuc cho goi chng trinh hin s jnb k1, k11_1 ; kim tra bit 0 trn nut nhn K1 ; Khi nht nut K1, se kich nhy ngt ngoai _INT0, chng trinh se nhy n tn nhan WINT0:, y ngi ta tip tuc cho kim tra trang thai bit cua nut nhn K1, ng thi lun cho goi chng trinh hin thi tranh hin thi s bi gian oan trong mode iu chinh gi. Chi khi bo nut nht K1 ra, luc o se chuyn qua kim tra trang thai bit cua cac nut nhn khac, nh K2, K3. ;; ph4: ; t tn nhan cho lnh nhy setb p3.1 ; cho tt Led trn chn p3.1 setb p3.0 ; cho tt Led trn chn p3.0 ph0: ; t tn nhan cho lnh nhy call disp1 ; tip tuc cho goi chng trinh hin thi s jb k2, ph01 ; kim tra bit 1 trn nut nhn K2 ;; k2_1: ; t tn nhan cho lnh nhy call disp1 ; tip tuc cho hin thi s jnb k2, k2_1 ; kim tra bit 0 trn nut nhn K2 mov r0, c_hour ; chuyn tri trong c_hour vao thanh r0 mov a, #01h ; t tri 1 vao thanh a add a, r0 ; cho tri trong r0 cng vi tri trong a, kt qua ct vao a

da a ; bin i ra dang hai s thp phn dang c 2, ct trong 4 bit thp va 4 bit cao mov c_hour, a ; chuyn tri co trong a vao thanh c_hour cjne a, #24h, ph0 ; so sang tri trong a vi s 24, inh hng nhy mov c_hour, #0 ; n y tra tri trong c_hour v lai mc 0 ph01: ; t tn nhan cho lnh nhy jb k3, ph1 ; kim tra bit 1 trn nut nhn K3 k3_1: ; t tn nhan cho lnh nhy call disp1 ; tip tuc cho hin s tranh gian oan luc vao mode chinh jnb k3, k3_1 ; kim tra bit 0 trn nut nhn K3 mov r0, c_minute ; chuyn tri co trong c_minute vao thanh r0 mov a, #01h ; t tri 1 vao thanh a add a, r0 ; cho tri trong r0 cng vi tri trong a, kt qua ct vao da a ; bin i ra dang s thp phn h c 2, ct trong 4 bit thp va 4 bit cao mov c_minute, a ; chuyn tri co trong a ct vao thanh c_minute cjne a, #60h, ph0 ; cho so sanh a vi tri 60 chon hng nhy mov c_minute, #0 ; tra tri trong c_minute v mc 0 ph1: ; t tn nhan dung cho lnh nhy jb k4, ph10 ; kim tra bit 1 trn nut nht K4 k4_1: ; t tn nhan dung cho lnh nhy call disp1 ; tip tuc goi trinh hin thi s jnb k4, k4_1 ; kim tra bit 0 trn nut nhn K4 jmp tend ; nhy n tn nhan tend:, kt thuc trinh ng h ph10: ; t tn nhan dung cho lnh nhy jb k1, ph0 ; kim tra bit 1 trn nut nhn K1 k1_1: ; t tn nhan dung cho lnh nhy call disp1 ; tip tuc goi trinh hin thi s jnb k1, k1_1 ; kim tra bit 0 trn nut nhn K1 clr p3.0 ; lam sang Led trn chn p3.0 setb p3.1 ; lam tt Led trn chn p3.1 ;;--------------------------------

ph2: ; t tn nhan dung cho lnh nhy call disp2 ; cho goi chng trinh hin thi 2 con s jb k2, ph201 ; kim tra bit 1 trn nut nhn K2 k22_1: ; t tn nhn dung cho lnh nhy call disp2 ; tip tuc cho goi trinh hin thi s disp2 jnb k2, k22_1 ; kim tra bit 0 trn nut nhn K2 mov r0, on_hour ; chuyn tri co trong on_hour vao r0 mov a, #01h ; cho tri 1 vao thanh a add a, r0 ; cho tri trong r0 cng vi tri trong a, kt qua ct vao a da a ; bin i thanh hai s thp phn h c 2, cho ct vao 4 bit thp va 4 bit cao mov on_hour, a ; chuyn tri trong a vao ct trong thanh on_hour cjne a, #24h, ph2 ; cho so sanh tri trong a vi s 24 chon hng nhy mov on_hour, #0 ; tra tri trong thanh on_hour v mc 0 ph201: ; t tn nhan dung cho lnh nhy jb k3, ph210 ; cho kim tra bit 1 trn nut nhn K3 k22_2: ; t tn nhan dung cho lnh nhy call disp2 ; tip tuc cho hin thi s vi disp2 jnb k3, k22_2 ; kim tra bit 0 trn nut nhn K3 mov r0, on_minute ; cho chuyn tri trong on_hour vao thanh r0 mov a, #01h ; t tri 1 vao thanh a add a, r0 ; cho tri trong r0 cng vi tri trong a, kt qua ct vao a da a ; bin i tri trong a ra hai s thp phn h c 2, cho ct vao 4 bit thp va 4 bit cao mov on_minute, a ; chuyn tri trong a ct vao thanh on_minute cjne a, #60h, ph2 ; cho so sanh tri trong a vi s 60 chon hng nhy mov on_minute, #0 ; tra tri trong thanh on_minute v mc 0 ph210: ; t tn nhan dung cho lnh nhy jb k1, ph2 ; kim tra bit 1 trn nut chinh K1 k22_3: ; t tn nhan dung cho lnh nhy call disp2 ; tip tuc cho hin thi s vi disp2

jnb k1, k22_3 ; kim tra bit 0 trn nut nhn K1 setb p3.0 ; cho tt Led trn chn p3.0 clr p3.1 ; cho sang Led trn chn p3.1 ;;---------------------------------------ph3: ; t tn nhan dung cho lnh nhy call disp3 ; cho hin thi s vi trinh disp3 jb k2, ph301 ; kim tra bit 1 trn nut nhn K2 k33_1: ; t tn nhan dung cho lnh nhy call disp3 ; tip tuc cho hin s vi trinh disp3 jnb k2, k33_1 ; kim tra bit 0 trn nut nhn K2 mov r0, off_hour ; chuyn tri trong off_hour vao thanh r0 mov a, #01h ; t tri 1 vao thanh a add a, r0 ; cho cng tri trong r0 vi a, kt qua cho ct trong a da a ; bin i s trong a ra dang hai s thp phn h c 2, ct vao 4 bit thp va 4 bit cao mov off_hour, a ; chuyn tri trong a ct vao thanh off_hour cjne a, #24h, ph3 ; cho a so sanh vi tri 24, inh hng nhy mov off_hour, #0 ; tra tri trong off_hour v lai mc 0 ph301: ; t tn nhan dung cho lnh nhy jb k3, ph310 ; kim tra bit 1 trn nut nhn K3 k33_2: ; t tn nhan dung cho lnh nhy call disp3 ; tip tuc cho hin s vi trinh disp3 jnb k3, k33_2 ; kim tra bit 0 trn nut nhn K3 mov r0, off_minute ; chuyn tri trong off_minute vao thanh r0 mov a, #01h ; t tri 1 vao thanh ghi a add a, r0 ; cho tri trong r0 cng vi tri trong a, kt qua ct vao a da a ; bin i tri trong a ra hai s thp phn h c 2, ct trong 4 bit thp va 4 bit cao mov off_minute, a ; chuyn tri trong a ct vao thanh off_minute cjne a, #60h, ph3 ; cho tri trong a so sanh vi con s 60, inh hng nhy mov off_minute, #0 ; tra tri trong thanh off_minute v mc 0 ph310: ; t tn nhan dung cho lnh nhy jb k1, ph3 ; kim tra bit 1 trn nut nhn K1

k33_3: ; t tn nhan dung cho lnh nhy call disp3 ; tip tuc cho hin thi s vi trinh disp3 jnb k1, k33_3 ; kim tra bit 0 trn nut nhn K1 jmp ph4 ; nhy n tn nhan ph4 ;;---------------------------------------tend: ; t tn nhan dung cho lnh nhy setb ex0 ; cho m lai chc nng ngt ngoai, ngt vi _INT0 setb tr0 ; cho xung vao mach m cua timer 0 setb 00h ; t bit kim tra v trang thai 00h setb et0 ; cho m ngt theo bit bao tran tf0 setb p3.7 ; t chn p3.7 ln mc ap cao pop psw ; hoan tra lai tri trc o cho thanh psw pop acc ; hoan tra lai tri trc o cho thanh a reti ; dung chng trinh ngt end ; dng bin dich ra ma lnh tai y

You might also like