You are on page 1of 29

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.

You might also like