You are on page 1of 6

HBK Tp HCM BMT Mn hc: Vi x l GVPT: H Trung M Mt s k thut lp trnh hp ng 8051 1.

. 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

XRL A,ACC XRL ACC,A

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)

XCH XCH XCH XCH XCH XCH

A,R1 A,R2 A,R1 A,30h A,32h A,30h

4. So snh thanh ghi A vi B v kt qu tc ng n php gn cho thanh ghi R7


if M gi A = B then R7 1 else R7 2 Chng trnh hp ng #1 CJNE A,B, ANEB MOV R7, #1 SJMP CONT ANEB: MOV R7, #2 CONT: Chng trnh hp ng #2 XRL A, B JNZ ANEB MOV R7,#1 SJMP CONT: ANEB: MOV R7,#2 CONT:

VXL_Mt s k thut lp trnh hp ng 8051 trang 1/6

if

A > B then R7 1 else R7 2

if

A < B then R7 1 else if A = B then R7 2 else R7 3

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: ..

L1: L2: L3:

MOV A, XVAL CJNE A, YVAL, L1 SJMP L2 JNC L3 ... ..

VXL_Mt s k thut lp trnh hp ng 8051 trang 2/6

Ch : Ta c th bin i iu kin so snh, TD nh iu kin X<=Y c th i thnh NOT(Y<X) nh sau:

6. Thc hin cu trc iu khin thc hin vng lp trong N ln ( N= 1 255)


M gi Loop: Count N . . . Count Count 1 if Count 0 goto Loop NEXT: Dng thanh ghi R7 lm bin Count LD R7,#N LOOP: . . . DEC R7 CJNE R7,#0,LOOP Dng thanh ghi R7 lm bin Count LD R7,#N LOOP: . . . DJNZ R7,LOOP

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

VXL_Mt s k thut lp trnh hp ng 8051 trang 3/6

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

R7 R6 R5 270R R4 270R R3 270R R2 270R R1 270R


270R 270R

LOOP:

RST

29 30 31

PSEN ALE EA

1 2 3 4 5 6 7 8

P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

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.

VXL_Mt s k thut lp trnh hp ng 8051 trang 5/6

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:

Biu din s trong R2 v R1 l s c du


MOV XRL MOV MOV XRL CJNE JNC MOV SJMP MOV A,R2 A,#80H ; o tr MSB B, A A, R1 A,#80H ; o tr MSB A, B, NEXT_S AGEB R0, #2 CONT_S R0, #1

CONT:

CONT_S:

VXL_Mt s k thut lp trnh hp ng 8051 trang 6/6

You might also like