Top Banner

of 29

10 chương trình cho vi điều khiển AT89C51

Jul 20, 2015

Download

Documents

nguyen27k
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

10 chng trnh cho vi iu khin AT89C51 nguyn l lm vic ca ic vi iu khin AT89C51 (Bn xem hnh).

IC AT89C51 c 40 chn. Cng dng ca cc chn nh sau: * Chn 40 ni vo ng ngun 5V, chn 20 cho ni masse. * Chn 9 ni vo mch reset vi in tr 10K v t 10uF. Khi mch va c cp in, t np v ko chn 9 ln mc p cao to tc ng reset. Sau mt lc chn 9 tr li mc p thp. IC AT89C51 bt u hot ng t trng thi khi u. * Chn 18, 19 mc thch anh nh tn. Nh vy tn s xung nhp s l 1Mhz (hay 1us). Ngang thch anh mc 2 t nh dng b nhit n tn (Bn xem hnh).

* Chn 31 Bn phi cho treo ln mc p cao, xc nh l mch ch lm vic vi b nh ni (V mch khng dng thm b nh ngoi). * Bn ch , ic c 4 cng, l port 0 (p0), port 1 (p1), port 2 (p2) v port 3 (p3). Mi cng c 8 chn. Mi hot ng ca ic vi iu khin u c thc hin trn cc cng ny. Ghi nhn: Bn thy ic AT89C51 ch cn mt t linh kin bn ngoi l c th chp hnh cc cu lnh c trong b nh EEP-ROM, Bn dng cc cu lnh ny xc nh trng thi in p cao thp trn cc cng v dng cc mc p cao thp ny cho vic iu khin cc dng mch in, hay cc thit b. Bi 1: Vit chng trnh Led trn chn s 1 (p1.0) lun nhp nhy.

ORG 0000h ; Khi u t thanh ghi c a ch l 0000h START: CLR P1.0 ; t chn p1.0 xung mc p thp, Led s sng. LCALL DELAY ; Cho gi trnh lm tr (c tn nhn l delay). SETB P1.0 ; t chn p1.0 ln mc p cao, Led s tt LCALL DELAY ; Li cho gi trnh lm tr (c tn nhn l delay). LJMP START ; Cho nhy v dng lnh vi tn nhn l start, cng vic s lp li. DELAY: MOV R5,#20 ; Np tr 50 vo thanh nh r5. D1: MOV R6,#20 ; Np tr 20 vo thanh nh r6. D2: MOV R7,#248 ; Np tr 248 vo thanh nh r7. DJNZ R7,$ ; Cho gim r7 theo bc -1 cho n 0. DJNZ R6,D2 ; Cho gim r6 theo bc -1, cha bng 0 th nhy v D2. DJNZ R5,D1 ; Cho gim r5 theo bc -1, cha bng 0 th nhy v D1. RET ; Quay li dng lnh sau lnh lcall.

END ; dng bin dch. Phn tch cch vit cc cu lnh: Bn thy khi u lun dng cu khai bo gi lnh: org 0000h Ngha l mi vic s bt u t thanh nh c a ch l 0000h. y cng l thanh m chng trnh s nhy n mi khi Bn nhn nt Reset. v kt thc vi khai bo gi lnh: end Cc cu lnh sau khai bo bi gi lnh "end" s khng c bin dch. Ni r hn v cch tnh thi gian tr ca on chng trnh con delay: Trong hnh trn do dng thch anh 12MHz nn mt chu k my s l 1us. Vy cu lnh: mov r6,#20 s thc hin 2 ln. Bn phi cho nhn 2. T cch tnh nh sau: MOV R6,#20 2ln 2 2 22248498 (498 10002 20

D1: MOV R7,#248 2 ln

DJNZ R7,$ 2 ln 2248 DJNZ R6,D1 2 ln 22040

Qua cc nhn thi gian tr ca on chng trnh delay ny l 10.002ms. Nu Bn mov vo r6=10 th thi gian tr s l 5ms. Nu Bn mov vo r6=20 th thi gian tr s l 10ms. V c thi gian tr l 200ms. Bn dng thm thanh nh r5. Mov vo r5=20. V nh vy on chng trnh tr delay 200ms nh sau: DELAY: MOV R5,#20 ; chuyn vo thanh ghi r5 s thp phn 20. D1: MOV R6,#20 ; chuyn vo thanh ghi r6 s thp phn 20. D2: MOV R7,#248 ; chuyn vo thanh ghi r7 s thp phn 248. DJNZ R7,$ ; cho s trong r7 gim theo bc -1, ti ch v ch n khi bng 0. DJNZ R6,D2 ; cho s trong r6 gim theo bc -1, v nhy v D2 nu cha bng 0. DJNZ R5,D1 ; cho s trong r5 gim theo bc -1, v nhy v D1 nu cha bng 0. RET ; quay tr li thc hin dng lnh sau lnh call.

Bi 2: Vit chng trnh dng Led trn chn 1 (p1.0) theo di kha in K1 trn chn 10 (p3.0). * K1 ng li Led sng. * K1 b ra Led tt.

ORG 0000H ; Khi u t thanh ghi 0000h START: JB P3.0, LIG ; Lnh nhy. Nu chn p3.0 bit 1 th nhy n tn nhn LIG, Led tt CLR P1.0 ; t p1.0 v bit 0, chn p1.0 mc p thp. Led s sng SJMP START ; Nhy v tn nhn START. LIG: SETB P1.0 ; t p1.0 v bit 1, chn p1.0 mc p cao, Led tt. SJMP START ; Nhy v tn nhn START. END ; Dng bin dch y. Phn tch cch vit cc cu lnh: y, Bn dng lnh nhy theo iu kin bit, tc lnh jb (jump bit) hay jnb (jump no bit). JB P3.0, LIG

Lnh ny c ngha l s nhy theo trng thi bit trn chn p3.0. Nu xt chn p3.0 mc p cao (nt nhn K1 h) th nhy n tn nhn LIG, v Nu xt chn p3.0 mc p thp (nt nhn K1 kn) th thc hin cu lnh k tip bn di. Bn nh, khi chn p3.0 mc p cao th Led tt v khi chn p3.0 mc p thp th Led s sng.

Bi 3: Vit chng trnh dng 4 led trn cc chn 1 (p0.0), 2 (p0.1), 3 (p0.2), 4 (p0.3) cho bit trng thi ca 4 kha in trn cc chn 5 (p0.4), 6 (p0.5), 7(p0.6), 8 (p0.7). * Khi kha in ng li Led tng ng sng. * Khi kha in nh ra, Led tng tng tt.

ORG 0000H ; Bt u t thanh ghi 0000h START: MOV A,P1 ; Ly trang thi trn cng port 1 np vo thanh ghi tch ly a. ANL A,#0F0H ; dng logic AND che 4 bit thp, gi nguyn trng thi 4 bit cao. RR A ; cho ni dung trong thanh ghi a quay qua phi 1 bit. RR A ; cho ni dung trong thanh ghi a quay qua phi 2 bit. RR A ; cho ni dung trong thanh ghi a quay qua phi 3 bit.

RR A ; cho ni dung trong thanh ghi a quay qua phi 4 bit. XOR A,#0F0H ; dng logic Ex-OR pht hin s khc bit trn 4 bit thp. ; nh vy Led ng vi v tr c bit 0 s pht sng. MOV P1,A ; Chuyn trng thi ca thanh ghi a ra trn port 1 lm sng Led. SJMP START ; nhy v tn nhn start tip tc lm nh trn. END ; ngng bin dch dng lnh ny. Phn tch cch vit cc cu lnh: a- Dng 4 phm tt m 4 Led trn port 1

Bn cho chuyn trng thi ca port 1 vo thanh ghi tch ly a, ch trng thi ca 4 bit cao. N phn nh nt nhn K1, K2, K3, K4. b- Dng logic And vi hng 11110000b cho che 4 bit thp.

Bn ly logic AND gia thanh a v hng 0f0h (hay l 11110000b), cch lm ny l bo ton trng thi ca 4 bit cao, cn 4 bit thp u ha ra bit 0. Ngi ta quen gi l cho che 4 bit thp.

c- Dng lnh quay phi 4 ln di 4 bit cao xung 4 bit thp.

Dng lnh rr a cho quay bit qua phi, nu cho quay 4 ln th 4 bit thp s ln nm vng 4 bit cao v 4 bit cao s xung nm vng 4 bit thp. Chng ta ni cho chuyn trng thi ca 4 bit cao xung vng 4 bit thp. Cng c th dng lnh swap.

d- Dng logic Ex-Or pht hin cc bit khc nhau.

Ly logic D-OR pht hin cc bit ging nhau hay khc nhau: Nu cc bit ging nhau, kt qu s l bit 0. Nu cc bit khc nhau, kt qu s l bit 1. T ng ra, Bn s thy Led nm trn bit 0 s pht sng. Cc Led nm trn bit 1 s tt.

Bi 4: Vit chng trnh cho 8 Led trn port 1 ln lt nhp nhy, nhy qua tri ri nhy qua phi.

ORG 0000h START: MOV R2,#8 ; t tr 8 (s ln m) vo thanh ghi r2 MOV A,#0FEH ; t tr 0feh tc 11111110b v thanh ghi a. SETB C ; t bit Cary ln mc 1. LOOP: MOV P1,A ; Chuyn ni dung trong thanh ghi a vo cng port 1. LCALL DELAY ; Cho gi chng trnh lm tr RLC A ; Cho ni dung trong thanh ghi a quay qua tri c cho quay qua bit c C. DJNZ R2,LOOP ; m li tr trong thanh ghi r2. Nu cha bng 0 th lm tip lnh LOOP. MOV R2,#8 ; Np li tr 8 vo thanh ghi r2. LOOP1: MOV P1,A ; Chuyn ni dung trong thanh ghi a vo cng port 1. LCALL DELAY ; Cho gi chng trnh lm tr RRC A ; Cho ni dung trong thanh ghi a quay qua phi c cho quay qua bit c C. DJNZ R2,LOOP1 ; m li tr trong thanh ghi r2. Nu cha bng 0 th lm tip lnh LOOP1. LJMP START ; Nhy khng iu kin v tn nhn start li tip tc. DELAY: MOV R5,#20 ; Chng trnh dng lm tr (xem li phn th d 1) D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END ; Dng bin dch.

Phn tch cch vit cc cu lnh: Bi ny dng lnh quay bit qua phi v ri cho quay bit qua tri di bit 0 ln lt i qua 8 chn ca port 1, chng ta bit bit 0 s lm sng Led. Nh vy Bn s thy cc Led trn port 1 s ln lt sng v nhy qua phi ri i chiu nhy qua tri. bit 0 c th i trn 8 chn ca port 1, chng ta dng lnh quay c quay qua bit c C (rrl v rlc), d nhin trc phi nh set bit c C ln mc 1. Trnh by lnh quay rrc v rlc bng hnh minh ha (Bn xem hnh): a- Bn dng lnh quay c qua c C, vy qua 8 nhp bit 0 s vo nm trong c C, lc ny 8 bit port 1 u mc 1 v nh vy 8 Led trn port 1 u s tt. Vi lnh rlc a (rotate left Carry). Bn s thy tng Led sng ln v nhy qua bn tri.

b- Bn dng lnh quay c qua c C, vy qua 8 nhp bit 0 s vo nm trong c C, lc ny 8 bit port 1 u mc 1 v nh vy 8 Led trn port 1 u s tt. Vi lnh rrc a (rotate right Carry). Bn s thy tng Led sng ln v nhy qua bn phi.

c- Lnh quay (rotate) ch c tc dng vi thanh ghi a, do Bn mun th hin kt qu ra 8 Led trn port 1, Bn phi chuyn ni dung c trong a ra port 1. Bn dng lnh mov p1, a.

Tm li, trong bi ny Bn lm quen vi cch dng lnh quay c cho qua c C. Vi cch vit ny, Bn thy chng ta dng rt t cu lnh m vn khin cho cc Led sng nhy (nhy qua nhy li) trn port 1. Bi 5: Vit chng trnh mch pht ra ting cnh bo. Tn hiu 1KHz v 500Hz pht ra trn chn 1 (p1.0), thi gian pht tn hiu 1KHz l 100ms v thi gian pht tn hiu 500Hz l 200ms. Kha in trn chn 8 (p1.7) dng tt m tn hiu cnh bo.

FLAG BIT 00h ; nh ngh Flag dng lm bit c, hin c tr l 0. ORG 0000H START: JB P1.7,START ; Ch t nt K1 t xung mc 0. JNB FLAG,NEXT ; Nu bit c Flag l 0 th nhy n tn nhn NEXT. MOV R2,#200 ; Np s thp phn 200 vo thanh ghi r2. DV: CPL P1.0 ; Ly b chn p1.0, lnh b bit c chc nng t o. LCALL DELY500 ; Cho gi chng trnh lm tr 500us. LCALL DELY500 ; gi ln na chng trnh dely500. DJNZ R2,DV ; Cho m li v thc hin lnh b cpl p1.0 n 200 ln. CPL FLAG ; o bit trong c Flag. NEXT: MOV R2,#200 ; Np li s thp phn 200 vo thanh ghi r2. DV1: CPL P1.0 ; Ly b chn p1.0, c chc nng t o. LCALL DELY500 ; Cho gi chng trnh lm tr 500us. DJNZ R2,DV1 ; Cho m li v thc hin b cpl p1.0 n 200 ln. CPL FLAG ; Li cho o bit trong c Flag. SJMP START ; Lp li lnh t tn nhn START. DELY500: MOV R7,#250 ; Vit chng trnh con lm tr 500us. Np s 250 v thanh ghi r7. LOOP: NOP ; Lnh trng, dng n lm tng thi gian tr ln gp i. DJNZ R7,LOOP ; m li r7 lm tr. RET ; Cho quay li thc hin dng lnh sau lnh call. END ; Dng bin dch Phn tch cch vit cc cu lnh:

Trong bi ny, Bn thy dng khai bo bit nh ngha tn t t ca Bn, nh: flag BIT 0 ; Ch flag do Bn t t l mt BIT, hin c gi tr l bit 0. Bn dng lnh nhy theo bit kim tra kha in K1. start: jb p1.7, start ; Lnh ny s ch chn p1.7 xung bit 0, nu khng n s lun dng li y. cpl p1.0 ; Lnh ly b trn chn p1.0, ngha l n ang mc 0 th cho chuyn ln 1 v ngc li. Phn tch cc cu lnh trn Bn thy: Loa s h vi tn hiu 1000us (do 2 ln gi dely500) v ko di 200 ln ri chuyn qua h vi tn hiu 500us (do ch gi dely500 c 1 ln) cng thc hin 200 ln. Vi cch to ra tn hiu h 2 nhp ny, Bn s nghe ting h t Loa pht ra, tn hiu nghe nh ting ci h cnh bo..

Bi 6: Vit chng trnh dng cch ly d liu khai bo trong bng, tt m 8 Led trn port 1. * Nhy nhy qua tri 2 ln. * Nhy nhy qua phi 2 ln. * Ton phn nhp nhy 2 ln. (Thi gian tr 0.2 giy).

ORG 0000h START: MOV DPTR,#TABLE ; Lnh cho t a ch bng vo thanh ghi con tr. LOOP: CLR A ; cho xa ni dung trong thanh ghi a, lc ny a = 00000000b MOVC A,@A+DPTR ; Cho ly ni dung trong bng theo tr trong a, v cho ct kt qu vo a. CJNE A,#01H,LOOP1 ; Nu a cha bng 01h th nhy qua tn nhn LOOP1. JMP START ; Nu trong a bng 01h th nhy v tn nhn START. LOOP1: MOV P1,A ; Chuyn ni dung trong a ra trn cng port 1. MOV R3,#20 ; Np s thp phn 20 vo thanh ghi r3. LCALL DELAY ; Gi chng trnh lm tr, tn nhn l delay. INC DPTR ; cho tng a ch bng ln +1. JMP LOOP ; Nhy v tn nhn LOOP. DELAY: MOV R4,#20 ; Vit chng trnh con dng lm tr, tn nhn l delay D1: MOV R5,#248 ; Np tr thp phn 248 vo r5. DJNZ R5,$ ; Cho gim theo bc -1, ch r5 bng 0. DJNZ R4,D1 ; Cho r4 gim theo bc -1, cha bng 0, nhy v D1. DJNZ R3,DELAY ; Cho r3 gim theo bc -1, cha bng 0, nhy v DELAY. RET ; Quay li chy cu lnh nm sau lnh call. TABLE: DB 0FEH,0FDH,0FBH,0F7H ; Khai bo cc d liu t trong bng, tn bng l TABLE. DB 0EFH,0DFH,0BFH,07FH ; cc d liu ln lt sp trong bng. DB 0FEH,0FDH,0FBH,0F7H ; cc d liu ln lt sp trong bng. DB 0EFH,0DFH,0BFH,07FH ; cc d liu ln lt sp trong bng. DB 07FH,0BFH,0DFH,0EFH ; cc d liu ln lt sp trong bng.

DB 0F7H,0FBH,0FDH,0FEH ; cc d liu ln lt sp trong bng. DB 07FH,0BFH,0DFH,0EFH ; cc d liu ln lt sp trong bng. DB 0F7H,0FBH,0FDH,0FEH ; cc d liu ln lt sp trong bng. DB 00H, 0FFH,00H, 0FFH ; cc d liu ln lt sp trong bng. DB 01H ; D liu dng soa snh nhy (Xem cu lnh trn). END ; Dng bin dch ti y.

Phn tch cch vit cc cu lnh: Trong bi ny, chng ta cho ly d liu lit k trong bng lm sng cc Led trn port 1. Trnh t lm nh sau: Trc ht Bn chn cch lm sng tt cho 8 Led trn port 1 vi m 0/1. Chng ta nh bit 0 lm Led sng v bit 1 s lm Led tt. Th d: Mun Led sng nhy qua tri, chng ta s chn m iu khin nh sau: 11111110b i ra dng m h 16 s l 0FEH. 11111101b i ra dng m h 16 s l 0FDH. 11111011b i ra dng m h 16 s l 0FBH. 11110111b i ra dng m h 16 s l 0F7H. 11101111b i ra dng m h 16 s l 0EFH. 11011111b i ra dng m h 16 s l 0DFH. 10111111b i ra dng m h 16 s l 0BFH. 01111111b i ra dng m h 16 s l 07FH. Bn c lit k ra trong bng. Sau ny s dng lnh: movc a, @a + dptr. ly cc m ny ct vo a. ngha ca cu lnh ny nh sau: Nu khi u a=0 th n s ly m d liu u trong bng v ri ct vo thanh ghia. Bn dng lnh inc dptr d cho tr trong a tng ln +1. Vy khi dng cu lnh: movc a, @a +dptr, Bn s cho ly m d liu tip theo... Sau mi ln ly d liu t bng ra, Bn dng cu lnh nhy theo php so snh: cjne a, #01h, loop1 xem ly n m d liu cui cng cha, v Bn t m 01H cui bng. Ghi nhn: Dng cch vit ny, Bn rt d chn cc kiu nhp nhy cho cc Led trn port 1. Bn ch cn khai bo cc m iu khin trong bng l c. bn c th khai bo theo dng m nh phn cho d nhn thy s sng tt ca cc Led. Bi 7: Vit chng trnh trn n s dng Led 7 on ln lt xut hin cc con s 0, 1, 2, 3...Thi gian thay i s l 0.2s. Ch : Dng loi n s Led 7 on c Cathode chung, vy Led sng vi mc 1.

Phn tch cch vit cc cu lnh: hin cc s thp lc phn trn n s 7 on vi chn cathode (K) m cc s s nh sau: 0 hay 3 FH 1 hay 06H 2 hay 5BH 3 hay 4FH 4 hay 66H 5 hay 6DH 6 hay 7DH 7 hay 07H 8 hay 7FH 9 hay 6FH A hay 77H b hay 7CH C hay 39H d hay 5EH E hay 79H F hay 71H Do vy to ra bng hin th cc s thp phn, chng ta s vit nh sau: TABLE DB 3FH06H5BH4FH66H6DH7DH07H7FH6FH

ORG 0000h START: MOV R1,#00H ; t tr khi u 0 cho thanh ghi r1 NEXT: MOV A,R1 ; Cho chuyn ni dung trong r1 vo a. MOV DPTR,#TABLE ; t a ch ca bng vo thanh ghi con tr dptr. MOVC A,@A+DPTR ; Ly cc m d liu trong bng theo tr ca a v d liu ct vo a. MOV P2,A ; Xut d liu trong a ra port 2 cho hin s. LCALL DELAY ; Cho gi chng trnh lm tr, tn nhn l delay. INC R1 ; Cho tng tr trong r1 theo kiu +1. CJNE R1,#10,NEXT ; So snh tr trong r1, xem bng 10 cha? cha, nhy v NEXT. LJMP START ; Lnh nhy khng iu kin v cu lnh c tn nhn l START. DELAY: MOV R5,#20 ; Vit chng trnh lm tr. Bn xem li cc phn th d trn. D2: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D2 RET TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ; Bng m cho hin cc s thp phn. END ; Dng bin dch.

Ni r hn v loi n hin s dng Led 7 on (Bn xem hnh): Khi chn trn port 2 mc p cao, th Led tng ng s pht sng. Vy chng ta c th t m trn n Led 7 on ln lt hin ra cc con s thp phn.

Hnh cho thy cc m tng ng vi cc con s thp phn hin trn bng n s dng Led 7 on.

Bi 8: Vit mch m s hin thi theo h c 2 vi 4 Led trn cc chn 1 (p1.0), 2 (p1.1), 3 (p1.2), 4 (p1.3). Mi ln nhn kha in SP1 trn chn 17 (p3.7) th s tng ln +1.

ORG 0000h START: MOV R1,#00H ; Cho khi u vi tr 0 trong thanh ghi r1. MOV A,R1 ; chuyn ni dung trong r1 vo a. CPL A ; Ly b 8 bit trong thanh ghi a. MOV P1,A ; Xut ni dung trong a ra cng port 1. REL: JNB P3.7,REL ; Ch bun phm nhn chn p3.7. LCALL DELAY10MS ; Gi chng trnh con lm tr 10ms. JNB P3.7,REL ; Trnh nh hng ca rung phm. INC R1 ; Cho tng tr trong thanh ghi r1 MOV A,R1 ; Cho chuyn ni dung trong r1 vo a. CPL A ; Ly b 8 bit trong thanh ghi a MOV P1,A ; Xut ni dung trong a ra cng port 1. JNB P3.7,$ ; Ch bung phm SP1 SJMP REL ; Nhy khng iu kin v dng lnh tn nhn l REL DELAY10MS: MOV R6,#20 ; Vit chng trnh lm tr 10ms L1: MOV R7,#248 DJNZ R7,$ DJNZ R6,L1 RET END ; Dng bin dch ti dng ny. Phn tch cch vit cc cu lnh: Ni dung bi vit l c nhn mt ln phm SP1, mch m s h c 2 s nhy ln 1 s (Bn

xem hnh).

y c 2 cu hi, ti hi Bn: (1) Vn rung phm l g? (2) Ti sao phi ly b a ri mi cho xut trn cng port1? Vn rung phm l do phn tip xc xu, khi Bn nhn xung, phm s b rung, n ngt m nhiu ln v to ra kt qu sai. Do vy Bn phi vit on chng trnh ch 10ms ri mi xc lp trng hi ca phm, iu ny s tng n nh khi dng loi phm c kh. Cch vit nh sau:

REL: JNB P3.7,REL ; Khi bn nhn xung, nu phm tt, n s bit 0 v s trng thi ch bung phm. Nu c rung phm, n s nhy xung cu lnh di l cho gi chng trnh tr 10ms. LCALL DELAY10MS ; Gi chng trnh con lm tr 10ms. ; Sau chng trnh tr n s quay li li kim tra phm vi cu lnh: JNB P3.7,REL Nu n bit 0 th quay li REL v li ch bung phm. Ch khi n Bit 1 th mi cho tng

tr trong r1.

..... .

JNB P3.7,$ ; Cu lnh ny l nhy tai ch khi Bn cha b phm nhn SP1 ra. Tr li cu hi th 2: Ti sao phi ly b a (cpl a) ri mi cho xut ra trn cng port1. y chng ta kch Led bng mc p thp, do khi tng 1, n s l: 00000000b --> 00000001b Vy phi ly b ca n s l 11111110b iu ny s ch c Led p1.0 sng m thi n ng vi 1 ln nhn phm. Nu 2 ln nhn phm kt qu l: 00000010b --> ly b l 11111101b. Vy Led p1.1 s sng. Bn c l lun tip tc s thy mch ny dng m h c 2, kt qu cho hin th trn cc Led ca port 1. v nu Bn thy thch, Bn c th gn 8 Led trn port 1 v s thy hin tng trng s. Thanh ghi 8 bit ch m c 256 nhp s trang s, quay v 0 v bt u m tip...

Bi 9: Vit chng trnh , mi ln nhn kha in SP1 trn chn 17 (p3.7) th Led D1 trn chn 1 (p1.0), nhp nhy. Khi nhn SP1 ln na n Led D2 trn chn 2 nhp nhy, nhn SP1 ln na n Led D3 trn chn 3 nhp nhy v nhn SP1 ln na th n Led D4 trn chn 4 nhp nhy, v qui trnh tip tc lp li nh trn.

ID EQU 30H ; Ly thanh nh c a ch 30h nh ngha l thanh ID. K1 BIT P3.7 ; Chn p3.7 nh ngha vi tn l K1 L1 BIT P1.0 ; Chn p1.0 nh ngha vi tn l L1. L2 BIT P1.1 ; Chn p1.1 nh ngha vi tn l L2. L3 BIT P1.2 ; Chn p1.2 nh ngha vi tn l L3. L4 BIT P1.3 ; Chn p1.3 nh ngha vi tn l L4. ORG 0000h MOV ID,#00H ; Tr khi u ca ID l 0. START: JB K1,REL ; Cha nhn phm th nhy n tn nhn REL. LCALL DELAY10MS ; Gi chng trnh lm tr 10ms (trnh rung phm). JB K1,REL ; Cha nhn phm th nhy n tn nhn REL. INC ID ; Tng tr trong ID. MOV A,ID ; Cho chuyn ni dung trong ID v thanh ghi a. CJNE A,#04,REL ; Cho so snh a vi #04 pht hin s ln nhn K1 MOV ID,#00H ; Tr tr trong ID v tr o. REL: JNB K1,$ ; Ch bung phm K1

MOV A,ID ; Cho chuyn ni dung trong ID v thanh ghi a. CJNE A,#00H,IS0 ; Cho so snh a vi #00 pht hin s ln nhn K1 CPL L1 ; Ly b L1 tt/m Led D1 LCALL DELAY ; Gi chng trnh lm tr vi tn nhn l delay. SJMP START ; Nhy khng iu kin v tn nhn START IS0: CJNE A,#01H,IS1 ; Cho so snh a vi #01 pht hin s ln nhn K1 CPL L2 ; Ly b L2 tt/m Led D2 LCALL DELAY ; Gi chng trnh lm tr vi tn nhn l delay. SJMP START ; Nhy khng iu kin v tn nhn START IS1: CJNE A,#02H,IS2 ; Cho so snh a vi #02 pht hin s ln nhn K1 CPL L3 ; Ly b L3 tt/m Led D3 LCALL DELAY ; Gi chng trnh lm tr vi tn nhn l delay. SJMP START ; Nhy khng iu kin v tn nhn START IS2: CJNE A,#03H,IS3 ; Cho so snh a vi #03 pht hin s ln nhn K1 CPL L4 ; Ly b L4 tt/m Led D4 LCALL DELAY ; Gi chng trnh lm tr vi tn nhn l delay. SJMP START ; Nhy khng iu kin v tn nhn START IS3: LJMP START ; Nhy khng iu kin v tn nhn START DELAY10MS: MOV R6,#20 ; Chng trnh lm tr LOOP1: MOV R7,#248 DJNZ R7,$ DJNZ R6,LOOP1 RET DELAY: MOV R5,#20 LOOP2: LCALL DELAY10MS DJNZ R5,LOOP2 RET END ; Dng bin dch ti y. Phn tch cch vit cc cu lnh: Bn hy ch n lnh so snh c iu kin, dng pht hin cc m trng nhau hay khc nhau v t a ra hng s l vn . Th d: CJNE A,#00H,IS0 ; Cho so snh a vi s #00, nu khc th nhy n tn nhn IS0, nu ng th xung thi hnh dng lnh bn di. CPL L1 ; Ly b L1 tt/m Led D1. LCALL DELAY ; Gi chng trnh lm tr vi tn nhn l delay. SJMP START ; Nhy khng iu kin v tn nhn START.

Bi 10: Vit chng trnh mch m s ln nhn phm SP1 trn chn 17 (p3.7), kt qu

hin th trn n s dng Led 7 on. S m bt u t 00, 01, 02,...99.

Count EQU 30H ; t tn thanh ghi 8 bit 30h l Count. SP1 BIT P3.7 ; t tn bit p3.7 l SP1. ORG 0000h ; Bt u t thanh ghi Reset 0000h START: MOV Count,#00H ; t Count v mc khi u l s 0. NEXT: MOV A,Count ; Cho chuyn ni dung trong Count vo thanh ghi a. MOV B,#10 ; t s 10 vo thanh ghi b. DIV AB ; Cho s trong a chia cho 10 (s trong b). MOV DPTR,#TABLE ; t a ch ca bng c tn l Table vo thanh ghi con tr. MOVC A,@A+DPTR ; Ly s t bng theo tr c trong a v kt qu gi trong a. MOV P1,A ; Cho xut ni dung trong a ra port 1. MOV A,B ; By gi cho chuyn ni dung trong thanh ghi b vo a. MOVC A,@A+DPTR ; Li ly s t bng theo tr c trong a v kt qu gi trong a. MOV P2,A ; Cho xut ni dung trong a ra port 2. WT: JNB SP1,WT ; Ch bung phm SP1. WAIT: JB SP1,WAIT ; Ch nhn phm SP1. LCALL DELY10MS ; Gi chng trnh tr 10ms, trnh hin tng rung phm. JB SP1,WAIT ; Kim tra bung phm INC Count ; Tng ni dung trong Count ln theo bc +1. MOV A,Count ; Cho chuyn ni dung trong Count vo thanh ghi a. CJNE A,#100,NEXT ; So snh tr trong a bng 100 cha? Nu cha th tip tc. LJMP START ; Quay li t u. DELY10MS: MOV R6,#20 ; Lm tr 10ms trnh nh hng ca rung phm. D1: MOV R7,#248

DJNZ R7,$ DJNZ R6,D1 RET TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ; Bng m s dng cho Led 7 on. END ; Dng bin dch ti dng ny. Phn tch cch vit cc cu lnh: Trong on chng trnh trn, chng ta c dng n lnh lm php ton chia: div ab Bn ly s c trong a chia cho b. Kt qua s chia c trong a v s d c trong b. chia a cho 10, Bn phi np vo thanh ghi b tr 10 vi cu lnh: mov b, #10. Bn ch n trnh lm tr 10ms, y dng trnh nh hng c sai do rung phm, v mi khi Bn nhn phm, trong khong thi gian ngn phm b rung v to ra s ghi nhn sai. Dng cu lnh so snh (cjne: Compare Jump iu kin Non-Zero) kim tra tr trong thanh ghi a. y l mt cu lnh rt thng dng.