Professional Documents
Culture Documents
VXL 8051 Mot So Ky Thuat Lap Trinh Hop Ngu Version 1 Print
VXL 8051 Mot So Ky Thuat Lap Trinh Hop Ngu Version 1 Print
. Hy trnh by cc cch lm cho a) C Carry bng 1 b) C Carry bng 0 Bi gii (BG). Cch tt nht l cch c nh du *. a) C Carry bng 1 Hp ng M my (hex)
Cch 1 (*) Cch 2 Cch 3 SETB SETB CLR CPL C CY C C D3 D2 D7 C3 B3
S chu k my (MC)
1 2 1 1
b) C Carry bng 0 Hp ng
Cch 1 (*) Cch 2 Cch 3 CLR CLR SETB CPL C CY C C
M my (hex)
C3 C2 D7 D3 B3
S chu k my (MC)
1 2 1 1
Ch : Ngoi ra cc lnh cng/tr/xoay bit cng lm thay i gi tr ca c Carry! 2. Hy trnh by cc cch xa thanh ghi A v cho bit cch no tt nht BG. Hp ng M my (hex)
Cch Cch Cch Cch Cch 1 (*) 2 3 4 5 CLR ANL MOV XRL XRL A A,#0 A,#0 A,0E0h 0E0h,A E4 54 74 65 62 00 00 E0 E0
S chu k my (MC)
1 2 2 1 1
3. Hon i ni dung ca a) 4 bit cao vi 4 bit thp ca thanh ghi A b) Thanh ghi R1 v R2 bank 0 c) 2 byte trong RAM ni (TD: 30h v 32h) BG. Cch 1 (*) SWAP A a) Hai na byte ca A
Cch 2
RL RL RL RL PUSH PUSH POP POP PUSH PUSH POP POP A A A A 1 2 1 2 30h 32h 30h 32h
Cch 3
RR RR RR RR MOV MOV MOV MOV MOV MOV A A A A A,R1 1,2 R2,A A,30h 30h,32h 32h,A
b) Thanh ghi R1v R2 ( bank 0) c) 2 byte trong RAM ni (TD: 30h v 32h)
if
if
CJNE A, B, ANEB ; khi A <= B MOV R7,#2 SJMP CONT ANEB: ; x l khi A > B JC ALEB MOV R7,#1 CONT: CJNE A, B, ANEB AEQB: MOV R7,#2 ; khi A = B SJMP CONT ANEB: ; khi A <> B JC ALTB AGTB: ; x l khi A > B MOV R7,#3 SJMP CONT ALTB: ; x l khi A < B MOV R7,#1 CONT: ALEB:
Ch : SV t vit code cho cc trng hp cn li 5. p dng lnh so snh v nhy (CJNE) ci t 1 s cu trc chng trnh Cu trc iu khin trong gii thut Chng trnh hp ng tng ng
Gi s XVAL v YVAL l cc a ch trc tip MOV A, XVAL CJNE A, YVAL, L1 . . Do something . L1: ..
CJNE op1. op2, label if (op1 < op2) C 1 else C 0 MOV A, XVAL CJNE A,YVAL, L1 L1: JNC L2 . . Do Something . L2: ..
Next:
NEXT:
Ch : N l hng s c nh ngha bng EQU Trong vng lp khng c thay i bin Count ! (tr cui vng lp) Trng hp c bit nu N = 0 th vi cu trc ny n thc hin lp 256 ln 7. Thc hin cu trc iu khin repeat until
M gi Loop: repeat . . . until codition is true Next: . . . JNC LOOP . . . JNB bit. LOOP Condition l cc c hoc t hp cc c ; TD: condition l Carry CLR C ; c C 0 LOOP: ; trong vng lp c ; lnh lm c C = 1 Condition l cc c hoc t hp cc c ; TD: condition l bit CLR bit ; bit 0 LOOP:;trong vng lp c ;lnh lm c bit = 1
NEXT:
NEXT:
Ch : Nu nhn LOOP qu xa th c th dng AJMP hay LJMP, khi JNC LOOP c vit thnh 2 lnh lin tip JC NEXT v LJMP LOOP bit l 1 bin Boole TD nh c F0, a ch bit 00H (l bit 0 ca byte c a ch 20H), ACC.0, TF0, 8. Hi vng kim tra mc ca 1 chn nhp (TD: P1.0) thc hin cng vic cho mc 0 hay 1. M gi
while (1) { if P1.0 = 0 then do task0 else do task1 }
Chng trnh hp ng
SETB P1.0 ; t cu hnh nhp LOOP: JB Task_1 Task_0: . . . ; cc lnh thc hin task0 SJMP LOOP Task_1: . . . ; cc lnh thc hin task1 SJMP LOOP
TD: p dng cho mch x l LED sng chy sang tri hoc phi ty theo mc logic chn nhp
Vi mch trn ch l cc cng tc ti cng 0 cn c in tr ko ln. Hot ng ca mch nh sau: Nu P1.1 = 0 th 8 LED s sng t phi sang tri, mi LED sng trong 25ms. Nu P1.1 = 1 th 8 LED s sng t tri sang phi, mi LED sng trong 25ms. n DS1 th hin trng thi ca phm S1, nu c nhn S1 th n DS1 sng. n DB1 v DB2 th hin trng thi ca phm B1 v B2, nu c nhn phm B1 v B2 th n DB1 v DB2 tng ng s sng. Chng trnh hp ng cho mch trn: Pattern EQU 0FEh DELAY_25MS: ORG 0 ; Chng trnh ny ng vi XTAL = 12 MHz MOV P0,#03H ; t cu hnh nhp cho P0.1 v P0.0 MOV R1, #250 MOV P3,#80H ; t cu hnh nhp cho P3.7 L1: MOV R0,#50 MOV P1,#Pattern DJNZ R0, $ Loop: DJNZ R1, L1 ; Ly trng thi ca cc cng tc B1,S1 ct vo ACC RET MOV A,P0 END ANL A,#00000011B ; ch ly P0.1 v P0.0 ORL A,# 10000000B ; t cu hnh nhp cho P3.7 ; Sao chp bit P3.7 vo bit P3.2 MOV C, P3.7 MOV ACC.2, C MOV P3, A ; X l cho LED chy MOV A, P1 JB P0.1, RoR ; Xoay tri P1 RL A SJMP Next RoR: ; Xoay phi P1 RR A Next: MOV P1, A ; Lm tr 25ms ACALL DELAY_25MS SJMP Loop VXL_Mt s k thut lp trnh hp ng 8051 trang 4/6
9. Hi vng kim tra cnh xung ca 1 chn nhp (TD: P1.0) khi c th thc hin cng vic (task) M gi
while (1) { if P1.0 = then do task } LOOP: Task:
Chng trnh hp ng
SETB P1.0 ; t cu hnh nhp JNB P1.0, $ ; i P1.0 = 1 JB P1.0, $ ; i P1.0 = 0 . . . ; cc lnh thc hin task SJMP LOOP
TD: Mch sau m phng b m ln nh phn modulo 10 (m t 0 n 9 v lp li) vi hin th LED 7 on c gn cng P0 v xung nhp CK c ni vo chn P3.7 Mch
X1
Chng trnh
CK EQU ORG MOV MOV MOV JNB JB INC CJNE MOV NEXT: MOV A,R0 ACALL BCD2LED SJMP LOOP BCD2LED: MOV DPTR,#LED_DATA MOVC A,@A+DPTR MOV P0,A RET LED_DATA: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H DB 0F8H, 80H, 90H RET END P3.7 0 P3,#80H ; t cu hnh nhp cho P3.7 R0,#0 ; S m ban u l 0 P0,#0C0H; u tin hin th 0 CK,$ ; i CK o muc 1 CK,$ ; i CK o muc 0 R0 R0,#10,NEXT ; kim tra trn th v 0 R0,#0
CRST
10n
CX1 12MHz
33p
CX2
33p
U1 RRST
10k
18 19 XTAL1 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17
XTAL2
LOOP:
RST
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
80C51
10. Vit cc chng trnh con ci t cc cng logic AND, OR, v XOR 8 ng vo (8 bit trong thanh ghi A v ng ra l c C) AND 8 ng vo OR 8 ng vo XOR 8 ng vo XOR8: OR8: AND8: MOV C,P CJNE A,#0, OR_1 CJNE A,#0FFH, AN_0 RET CLR C SETB C RET RET Ch : C P lun lun bng XOR ca 8 bit OR_1: AN_0: trong thanh ghi A SETB C CLR C RET RET 11. Ci 1 h tun t ng b khng ng vo. TD: Vit chng trnh to dng sng sau (gi c sn chng trnh lm tr 1 giy DELAY_1S)
Bi gii.
Cch tng qut gii loi bi ton ny l tm biu din tng ng my trng thi ca n. Vi TD trn ta thy c th phn tch thnh my trng thi vi chu k ca 1 trng thi l 1s nh sau:
Nh vy ta c my trng thi vi 6 trng thi v trng thi S0 th P[2:0]=100, S1 th P[2:0]=101, .., S5 th P[2:0] = 001. Tn dng lnh tra bng th ta c th d dng ci t my trng thi trn nh sau: ORG 0 MOV DPTR,#STATE_TBL MOV R0,#0 ; Ch th ang trng thi my LOOP: MOV A, R0 MOVC A,@A+DPTR MOV P2,A INC R0 CJNE R0,#6,LOOP MOV R0,#0 SJMP LOOP STATE_TBL: DB 4, 5, 3, 4, 5, 1 END 12. So snh 2 s khng du v c du (vi biu din b 2) vi CJNE. V khi so snh CJNE th 8051 lun lun hiu l so snh vi 2 s nh phn khng du! Do khi so snh c du th ta phi bin i tr s ca 2 s cn so snh ri mi p dng CJNE c. d theo di, ta ly TD vi 2 s 3 bit (n=3) Nh phn
000 001 010 011 100 101 110 111
S khng du
0 1 2 3 4 5 6 7
S c du (b 2)
0 +1 +2 +3 4 3 2 1
S c du + 4
4 5 6 7 0 1 2 3
Nh phn
100 101 110 111 000 001 010 011
Tr s mi ct c in tiu m (S c du + 4) (vi 4 = 22 =2n-1) hoc nu so snh 2 ct nh phn u v cui th ta c cch bin i khc l o gi tr ca MSB. TD: Nu R2 > R1 th R0 = 2 cn ngc li th R0 = 1 cho c 2 trng hp khng du v c du. Biu din s trong R2 v R1 l s khng du
NEXT: CJNE JNC MOV SJMP MOV R1, 02H, NEXT R1GER2 R0, #2 CONT R0, #1 NEXT_S:
CONT:
CONT_S: