You are on page 1of 22

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

Chng 2: LP

TRNH HP NG TRN VI IU KHIN MCS-51

Chng ny gii thiu cch thc lp trnh trn MCS-51 cng nh gii thch hot ng ca cc lnh s dng cho h MCS-51. Cc k hiu cn ch : Rn : cc thanh ghi t R0 R7 (bank thanh ghi hin hnh) Ri : cc thanh ghi t R0 R1 (bank thanh ghi hin hnh) @Rn : nh a ch gin tip 8 bit dng thanh ghi Rn @DPTR : nh a ch gin tip 16 bit dng thanh ghi DPTR direct : nh a ch trc tip RAM ni (00h 7Fh) hay SFR (80h FFh) (direct) : ni dung ca b nh ti a ch direct #data8 : gi tr tc thi 8 bit #data16 : gi tr tc thi 16 bit bit : a ch bit ca cc nh c th nh a ch bit (00h 7Fh i vi a ch bit v 20h 2Fh i vi a ch byte)

1. Cc phng php nh a ch
nh a ch trc tip nh a ch trc tip ch dng cho cc thanh ghi chc nng c bit v RAM ni ca 8951. Gi tr a ch trc tip 8 bit c thm vo pha sau m lnh. Nu a ch trc tip t 00h 7Fh th l RAM ni ca 8951 (128 byte), cn a ch t 80h FFh l a ch cc thanh ghi chc nng c bit (xem bng 1.2, chng 1). Cc lnh sau c kiu nh a ch trc tip: MOV A, P0 MOV A, 30h Lnh u tin chuyn ni dung t Port 0 vo thanh ghi A. Khi bin dch, chng trnh s thay th t gi nh P0 bng a ch trc tip ca Port 0 (80h) v a vo byte 2 ca m lnh. Lnh th hai chuyn ni dung ca RAM ni c a ch 30h vo thanh ghi A. nh a ch gin tip nh a ch gin tip c th dng cho c RAM ni v RAM ngoi. Trong ch ny, a ch ca RAM xc nh thng qua mt thanh ghi (R0, R1, SP cho a ch 8 bit v DPTR cho a ch 16 bit). Cc lnh sau c kiu a ch gin tip: MOV A, @R0
Phm Hng Kim Khnh Trang 35

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

MOVX A, @DPTR Lnh u tin chuyn ni dung ca RAM ni c a ch cha trong thanh ghi R0 vo thanh ghi A (gi s R0 = 30h th chuyn ni dung ca nh 30h). Lnh th hai chuyn ni dung RAM ngoi vo thanh ghi A (a ch RAM cha trong DPTR). nh a ch thanh ghi Cc thanh ghi t R0 R7 c th truy xut bng cch nh a ch trc tip hay gin tip nh trn. Ngoi ra, cc thanh ghi ny cn c th truy xut bng cch dng 3 bit trong m lnh chn 1 trong 8 thanh ghi (8 thanh ghi ny c a ch trc tip thay i tu theo bank thanh ghi ang s dng). nh a ch tc thi Gi tr ca mt hng s c th a trc tip vo m lnh ca chng trnh. Trong hp ng, hng s c xc nh bng cch s dng du #. Lnh: MOV A, #10h c ch a ch tc thi. nh a ch ch s Qu trnh nh a ch ch s ch c th dng cho b nh chng trnh, c dng c d liu trong cc bng tm kim. Ch ny thng dng mt thanh ghi nn 16 bit (PC hay DPTR) ch v tr ca bng v thanh ghi A ch v tr ca cc phn t trong bng.

2. Cc vn lin quan khi lp trnh hp ng


2.1.
Nhn A: LED On_Led

C php lnh
Lnh MOV EQU BIT Ton hng A, #10h 30h 00h Ch thch ; a gi tr 10h vo thanh ghi A ; nh ngha nh cha m led ; C trng thi led

Mt lnh trong chng trnh hp ng c dng nh sau:

Trng nhn nh ngha cc k hiu (c th l a ch trong chng trnh, cc hng d liu, tn on hay cc cu trc lp trnh). Trng nhn khng bt u bng s v khng trng vi cc t kho c sn. Trng lnh cha cc t gi nh cho cc lnh ca MCS-51 hay cc lnh gi dng cho chng trnh dch.
Phm Hng Kim Khnh Trang 36

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

Trng ton hng cha cc thng s lin quan n lnh ang s dng. Trng ch thch dng ghi ch trong chng trnh hp ng. Trng ny phi c bt u bng du ; v chng trnh dch s b qua cc t t sau du ;. Lu rng cc chng trnh dch khng phn bit ch hoa v ch thng.

2.2.
-

Khai bo d liu

Khi khai bo hng s, ch h cui cng xc nh hng s l s thp lc phn; ch b cui cng xc nh s nh phn v ch d cui (hay khng c) xc nh s thp phn. Lu rng i vi s thp lc phn, khi bt u bng ch A F th phi thm s 0 vo pha trc.

V d: 1010b ; S nh phn 1010h ; S thp lc phn 1010 ; S thp phn 0F0h ; S thp lc phn nhng bt u bng ch F nn phi thm vo pha trc s 0. Khi dng du # pha trc mt con s, chnh l d liu tc thi cn nu khng dng du # th l a ch ca nh. Lu rng khi dng RAM ni th ch dng a ch t 00 7Fh cn vng a ch t 80h 0FFh dng cho cc thanh ghi chc nng c bit. i vi h 89x52, RAM ni c 256 byte th cc byte a ch cao (t 80h 0FFh) khng th truy xut trc tip m phi truy xut gin tip.

V d: MOV A,30h MOV A,#30h MOV A,80h MOV R0,#80h MOV A,@R0 ; ; ; ; ; ; Chuyn ni dung nh 30h vo A Chuyn gi tr 30h vo A Chuyn ni dung Port 0 vo A (80h l a ch Port 0 Chuyn ni dung nh 80h vo A (ch dng cho h 89x52)

nh ngha trc mt vng nh trong b nh chng trnh, c th dng cc ch dn DB (define byte nh ngha 1 byte) hay DW (define word nh ngha 2 byte).

V d: nh ngha trc d liu cho led nh sau:

Phm Hng Kim Khnh

Trang 37

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

Led: DB

01h,02h,04h,08h,10h,20h,40h,80h

on chng trnh ny xc nh ti nhn Led c cha cc gi tr ln lt t 01h n 80h. Nu nhn Led t ti a ch 100h th gi tr tng ng nh sau: a ch 100h 101h 102h 103h 104h 105h 106h 107h Gi tr 01h 02h 04h 08h 10h 20h 40h 80h

d nh v d hiu khi lp trnh, cc chng trnh dch cho php dng cc k t thay th cho cc nh bng cc lnh gi EQU, BIT.

V d: LED EQU 30h ON_LED BIT 00h Gi s chng trnh hp ng c cc lnh sau: MOV A,LED SETB ON_LED Khi bin dch, chng trnh dch s t ng chuyn thnh dng lnh sau: MOV A,30h SETB 00h

2.3.

Cc ton t

Cc ton t s hc: Bao gm cc ton t +, -, *, /, mod. V d: Cc lnh sau tng ng: MOV A,#12h MOV A,#21 mod 2 MOV A,#12/4 MOV A,#10h + 2h MOV A,#1 MOV A,#3

Phm Hng Kim Khnh

Trang 38

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

Cc ton t logic: Bao gm cc ton t: OR, AND, NOT, XOR. V d: Cc lnh sau tng ng: MOV A,#01h MOV A,#-5 MOV A,#24h MOV A,#03h AND 91h MOV A,#NOT 5 MOV A,#20h OR 04h

Cc ton t quan h: Bao gm cc ton t: EQ (=), NE (<>), LT ( <), LE (<=), GT (>), GE (>=). Lu rng kh s dng cc ton t quan h, ch c 2 kt qu: sai (= 0) hay ng (= FFh hay FFFFh tu theo kt qu l 8 bit hay 16 bit). V d: Cc lnh sau tng ng: MOV A,#00h MOV A,#0FFh MOV DPTR,#0FFFFh Cc ton t khc: Bao gm cc ton t: SHR (dch phi), SHL (dch tri), HIGH (byte cao), LOW (byte thp), (, ). V d: Cc lnh sau tng ng: MOV A,#06h MOV A,#01h MOV A,#02h MOV A,#03h SHL 1 MOV A,#HIGH 0123h MOV A,#LOW 0102h MOV A,#5 EQ 6 MOV A,#7 < 9 MOV DPTR,#5 NE 6

2.4.
-

Cu trc chng trnh


; t lnh LJMP main ti a ch ; 0000h (a ch bt u khi ; reset AT89C51)

Cu trc chng trnh hp ng c bn m t nh sau: ORG 0000h LJMP main

ORG 0030h Main:

; Vng a ch 0003h 002Fh ; dng cha cc chng trnh ; phc v ngt

Phm Hng Kim Khnh

Trang 39

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

CALL Subname ;-------------Subname: RET END ; kt thc chng trnh

Cc lnh gi ORG cho bit lnh pha sau t ti v tr no trong chng trnh. Lu rng khi khi ng, chng trnh trong AT89C51 s c thc thi ti a ch 0000h nn thng thng ti a ch ny s c lnh LJMP main xc nh chng trnh chnh s bt u ti nhn main. Cc du ; xc nh y l mt ch thch, chng trnh dch s b qua tt c cc phn nm sau du ;. Cc a ch t 0003h 002Fh phc v cho mc ch x l ngt nn khng s dng. Tuy nhin, nu chng trnh khng cn x l ngt th cng c th s dng lun vng a ch ny. Khi thc hin son tho chng trnh hp ng, c th dng bt k chng trnh son tho khng nh dng (nh NotePad, Norton Commander, ) v thng lu file vi phn m rng .asm, .a51 (tu theo chng trnh dch). Sau khi son tho, dng mt chng trnh dch chuyn t file vn bn thnh file .hex (c th dng sim51.exe, oh.exe). Ngoi ra, c nhiu chng trnh son tho bao gm c chng trnh dch bn trong (xem thm phn ph lc). Khi dch ra file .hex, dng mt mch np np file .hex vo AT89C51 (xem thm ph lc).

Phm Hng Kim Khnh

Trang 40

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

3. Tp lnh
3.1. Nhm lnh chuyn d liu

3.1.1. RAM ni Cc lnh trong nhm lnh chuyn d liu trong RAM ni m t nh bng sau: Bng 2.1 Cc lnh chuyn d liu trong RAM ni Lnh MOV A,(byte) MOV (byte),A MOV (byte1),(byte2) MOV DPTR,#data16 PUSH (byte) POP (byte) XCH A,(byte) Hot ng A = (byte) (byte) = A (byte1) = (byte2) DPTR = data16 SP = SP + 1 [SP] = (byte) (byte) = [SP] SP = SP 1 Chuyn i d liu gia ACC v (byte) Chuyn i 4 bit thp gia ACC v @Ri Tc thi x x x x x x x x Ch a ch Trc tip Gin tip x x x x x x Thanh ghi x x x Chu k thc thi 1 1 2 2 2 2 1

XCHD A,@Ri

Lnh MOV (Move): Di chuyn d liu gia cc thanh ghi v b nh trong 128 byte RAM c a ch t 80h FFh (ch c trong 8x52) ch c th truy xut bng cch nh a ch gin tip. Cc dng ca lnh MOV nh sau: MOV A, Rn MOV Rn, A MOV A, direct MOV direct, A MOV A,@Ri MOV @Ri,A
Phm Hng Kim Khnh

; Chuyn ni dung thanh ghi Rn vo thanh ghi A ; Chuyn ni dung thanh ghi A vo thanh ghi Rn ; Chuyn ni dung nh trc tip vo thanh ghi A ; Chuyn ni dung thanh ghi A vo nh trc tip ; Chuyn ni dung ca nh c a ch cha trong Ri vo A ; Chuyn ni dung caA vo nh c a ch cha trong Ri
Trang 41

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

MOV A, #data8 ; Chuyn gi tr 8 bit vo A MOV Rn, direct; Chuyn ni dung nh trc tip vo thanh ghi Rn MOV direct, Rn ; Chuyn ni dung thanh ghi Rn vo nh trc tip MOV Rn, #data8; Chuyn gi tr 8 bit vo Rn MOV direct, direct; Chuyn ni dung gia 2 nh trc tip MOV direct, @Ri; Chuyn ni dung ca nh c a ch cha trong Ri vo nh trc tip MOV @Ri, direct; Chuyn ni dung ca nh trc tip vo nh c a ch cha trong Ri MOV direct, #data8; Chuyn gi tr 8 bit vo nh trc tip MOV @Ri, #data8; Chuyn gi tr 8 bit vo nh c a ch cha trong Ri MOV C, bit ; Chuyn gi tr 1 bit vo c C MOV bit, C ; Chuyn gi tr c C vo 1 bit MOV DPTR, #data16 ; Chuyn gi tr tc thi 16 bit vo thanh ghi DPTR Trong lnh MOV, khi s dng a ch trc tip t 80h FFh th c th thay bng cc t gi nh ca cc thanh ghi chc nng c bit. V d: lnh MOV A, 80h c th thay th bng lnh MOV A, P0 (xem thm bng 1.2, chng 1). Khi lnh MOV thc hin truy xut bit, cc bit c th l a ch trc tip (t 00h 7Fh) hay cc t gi nh c nh ngha. Cc bit c nh ngha trc m t nh sau: Bng 2.2 Cc bit c nh ngha trc trong 8951 Thanh ghi A T gi nh ACC.0 ACC.7 CY hay C AC F0 RS1 RS0 OV P P0.0 P0.7 P1.0 P1.7 P2.0 P2.7 P3.0 P3.7 a ch bit E0h E7h D7h D6h D5h D4h D3h D2h D0h 80h 87h 90h 97h A0h A7h B0h B7h Thanh ghi B T gi nh B.0 B.7 SM0 SM1 SM2 REN TB8 RB8 TI RI PS PX1 PT1 PX0 PT0 a ch bit F0h F7h 9Fh 9Eh 9Dh 9Ch 9Bh 9Ah 99h 98h BCh BBh BAh B9h B8h

PSW

SCON

Cc thanh ghi Port

IP

Phm Hng Kim Khnh

Trang 42

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

TF1 TR0 TF0 TR0 IE TCON IE1 IT1 IE0 IT0 V d: Lnh MOV C, P0.0 c th thay bng lnh MOV C, 80h. Lnh PUSH / POP:

EA ES EX1 ET1 EX0 ET0

AFh ACh ABh AAh A9h A8h

8Fh 8Eh 8Dh 8Ch 8Bh 8Ah 89h 88h

Cc lnh ny cho php ct hay ly ni dung ca stack. Khi thc hin lnh PUSH, ni dung thanh ghi SP tng ln 1 v ct byte vo stack. Khi thc hin lnh POP, byte c ly ra t stack v sau gim SP 1 gi tr. Lu rng khi s dng 8951, do b nh ni ch c 128 byte (00h 7Fh) nn gi tr ca SP khng c vt qu 7Fh (nu vt qua th d liu s b mt khi dng lnh PUSH v d liu khng xc nh khi dng lnh POP). Cn i vi 8x52, do RAM ni l 256 byte nn khng c hin tng ny. Cc dng ca lnh PUSH / POP: PUSH direct POP direct ; Ct vo stack ; Ly d liu t stack

Lu rng lnh PUSH v POP ch dng cho a ch trc tip nn khng th thc hin lnh PUSH Rn do thanh ghi Rn c 4 a ch khc nhau tu theo bank thanh ghi s dng. Xt thanh ghi R0: 4 a ch ca R0 ng vi 4 bank l 00h, 08h, 10h, 18h. Mc nh khi reset, bank 0 c s dng nn cc thanh ghi Rn c a ch t 00h 07h. Khi thay v dng lnh PUSH R0, ta c th thay bng lnh PUSH 00h. Lnh XCH / XCHD (Exchange / Exchange Digit): Lnh XCH / XCHD dng hon chuyn 8 bit / 4 bit thp ca thanh ghi A vi cc thanh ghi khc hay b nh (lnh XCHD ch dng cho b nh ni nh a ch gin tip). Cc dng lnh nh sau: XCH A,(byte) ; Hon chuyn 8 bit XCHD A,@Ri ; Hon chuyn 4 bit thp V d: Xt on lnh: MOV A, #30h
Phm Hng Kim Khnh

; A = 30h
Trang 43

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

MOV R0, #54h ; R0 = 54h MOV 30h, #20h ; nh 30h cha gi tr 20h hay ;(30h) = 20h XCH A, R0 ; Hon chuyn gia A v R0 A = 54h ; v R0 = 30h XCHD A, @R0 ; Chuyn 4 bit thp gia A v nh ; R0 = 30h @R0: ni dung nh 30h 20h ;Chuyn 4 bit thp A = 50h v (30h) = 24h 3.1.2. RAM ngoi Cc lnh trong nhm lnh chuyn d liu trong RAM ngoi m t nh sau: Bng 2.3 Cc lnh chuyn d liu trong RAM ngoi Lnh Hot ng Chu k thc thi MOVX A, @Ri c ni dung t RAM ngoi ti a ch Ri 2 MOVX @Ri, A Ghi vo RAM ngoi ti a ch Ri 2 MOVX A, @DPTR c ni dung t RAM ngoi ti a ch DPTR 2 MOVX @DPTR, A Ghi vo RAM ngoi ti a ch DPTR 2 (MOVX : Move eXternal) i vi cc lnh c / ghi d liu ca RAM ngoi, ch cho php thc hin nh a ch gin tip. Khi a ch RAM l 8 bit th dng thanh ghi R0 hay R1 cn nu l a ch 16 bit th phi dng thanh ghi DPTR. Lu rng khi dng a ch 8 bit th cc bit a ch cao khng s dng nn Port 2 c th s dng cho mc ch khc nhng nu dng a ch 16 bit th Port 2 ch c nhim v l xut 8 bit a ch cao. Khi thc hin lnh c t RAM ngoi, chn RD s xung mc thp cn khi thc hin lnh ghi, chn WR xung mc thp. 3.1.3. Bng tm kim Cc lnh trong nhm lnh tm kim d liu trong bng m t nh sau: Bng 2.4 Cc lnh tm kim d liu Lnh MOVC A, @A + DPTR Hot ng Chu k thc thi 2 2

c ni dung b nh chng trnh ti a ch A + DPTR c ni dung b nh chng trnh ti a MOVC A, @A +PC ch A + PC (MOVC: Move Code)

Phm Hng Kim Khnh

Trang 44

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

Cc lnh ny cho php tm kim d liu nh ngha sn trong b nh chng trnh (nu b nh chng trnh l ROM ngoi th tn hiu c l PSEN ). Cc thanh ghi DPTR hay PC (Program Counter: b m chng trnh xc nh a ch ca lnh k tip s thc hin) cha v tr nn ca cc bng tm kim cn thanh ghi A cha v tr ca phn t (thng thng kch thc 1 phn t trong bng tm kim l 1 byte). V d: Ly phn t th 2 trong bng LED_7S: MOV A, #2 ; Phn t th 2 MOV DPTR, #LED_7S ; a ch nn ca bng tm kim MOVC A, @A + DPTR ; c ni dung phn t LED_7S: DB data8, data8, data8, data8, ; Ni dung bng tm kim c th t tu trong b nh chng trnh s dng thanh ghi PC tm kim d liu, qu trinh tm kim phi thc hin thng qua chng trnh con v bng phi c t ngay sau chng trnh con. V d: Ly phn t th 2 trong bng LED_7S: MOV A, #2 ; Phn t th 2 CALL Read_Led7s Read_Led7s: MOVC A, @A+PC RET LED_7S: DB 0, data8, data8, data8, data8, ; Ni dung bng tm kim Lu rng trong on lnh trn, khi thc hin lnh MOVC, thanh ghi PC s ch n lnh k tip l lnh RET ch khng phi bng LED_7S. Do , bng tm kim trong trng hp ny s khng c phn t 0 m bt u ti phn t 1. chng trnh ging nh cch thc hin dng DPTR, cn phi thay i chng trnh con nh sau: V d: Ly phn t th 2 trong bng LED_7S: MOV A, #2 ; Phn t th 2 CALL Read_Led7s Read_Led7s: INC A ; Tng ni dung A ln 1 hiu chnh v tr bng MOVC A, @A+PC RET

Phm Hng Kim Khnh

Trang 45

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

LED_7S: DB data8, data8, data8, data8, ; Ni dung bng tm kim

3.2.

Nhm lnh x l bit

H MCS-51 cha mt b x l bit hon chnh. RAM ni c 128 bit c th x l bit v cc thanh ghi chc nng c bit c th h tr ln ti 128 bit (cc bit trong SFR xem ti bng 2.2). Cc a ch bit t 00h 7Fh nm trong RAM ni cn cc a ch t 80h FFh nm trong SFR. Cc lnh trong nhm lnh logic m t nh trong bng sau: Bng 2.5 Cc lnh logic Lnh Hot ng Chu k thc thi ANL C,bit C = C AND bit 2 ANL C,/bit C = C AND (NOT bit) 2 ORL C,bit C = C OR bit 2 ORL C,/bit C = C OR (NOT bit) 2 MOV C,bit C = bit 1 MOV bit,C Bit = C 2 CLR C C=0 1 CLR bit Bit = 0 1 SETB C C=1 1 SETB bit Bit = 1 1 CPL C C = NOT C 1 CPL bit Bit = NOT bit 1 JC rel Nhy n nhn rel nu C = 1 2 JNC rel Nhy n nhn rel nu C = 0 2 JB bit,rel Nhy n nhn rel nu bit = 1 2 JNB bit,rel Nhy n nhn rel nu bit = 0 2 JBC bit,rel Nhy n nhn rel nu bit = 1 v sau xo bit 2 ANL: And logic; ORL: Or logic; CLR: Clear; CPL: Complement Bit: cc bit trong RAM ni t 00h 7Fh hay trong SFR theo bng 2.2 Rel: a ch tng i (cho php trong vng t -128 127 byte trong b nh chng trnh) V d: Chuyn t bit 00h vo P1.0 MOV C, 00h ; Chuyn bit 00h vo c Carry MOV P1.0, C ; Chuyn c Carry vo P1.0 Lu rng trong tp lnh logic khng c lnh XOR m phi thc hin bng phn mm, c th nh sau: Thc hin lnh C = C XRL bit:

Phm Hng Kim Khnh

Trang 46

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

JNB bit, next CPL C Next: Ngoi ra, cc lnh nhy trn u dng a ch tng i, ngha l ch cho php trong vng t -128 127 byte. Nu cn nhy n da ch xa hn th phi dng cc lnh nhy khc, nh m t trong phn sau.

3.3.

Nhm lnh chuyn iu khin

Nhm lnh chuyn iu khin bao gm cc lnh nhy, cc lnh lin quan n chng trnh con, m t nh sau: Bng 2.6 Cc lnh chuyn iu khin Lnh Hot ng JMP addr Nhy ti nhn addr JMP @A+DPTR Nhy ti a ch A + DPTR CALL addr Gi chng trnh con ti a ch addr RET Tr v t chng trnh con RETI Tr v t chng trnh con phc v ngt NOP Khng lm g c JMP: Jump RET: Return RETI: Return from Interrupt NOP: No Operation Lnh Hot ng Tc thi JZ rel Chu k thc thi 2 2 2 2 2 1

Ch a ch Trc tip Gin tip Thanh ghi

Chu k thc thi

Nhy n nhn rel Ch dng cho thanh ghi A nu A = 0 Nhy n nhn rel JNZ rel Ch dng cho thanh ghi A nu A 0 (byte) = (byte) - 1 DJNZ Nu (byte) 0 th x x (byte),rel nhy n nhn rel CJNE Nhy n nhn rel x x A,(byte),rel nu A (byte) CJNE (byte), Nhy n nhn rel x x #data8,rel nu (byte) data8 JZ: Jump if Zero; JNZ: Jump if Not Zero DJNZ: Decrement and Jump if Not Zero
Phm Hng Kim Khnh

2 2 2 2 2

Trang 47

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

CJNE: Compare and Jump if Not Equal Lnh JMP (Jump): Lnh JMP bao gm 3 lnh: LJMP (Long jump), AJMP (Absolute jump) v SJMP (Short jump) cho php nhy n mt v tr bt k trong chng trnh. Lnh LJMP c kch thc 3 byte trong 1 byte m lnh v 2 byte cha a ch nhn nn phm vi biu din a ch l 64K (2 byte = 16 bit phm vi biu din 16 6 10 2 = 2 x 2 = 64K). Do lnh LJMP c th thc hin nhy n bt k v tr no trong chng trnh v a ch s dng trong lnh LJMP l a ch tuyt i. Lnh SJMP c kch thc 2 byte trong c 1 byte m lnh v 1 byte a ch nn phm vi biu din a ch l 256 byte. Trong lnh ny, a ch s dng khng phi l a ch tuyt i m l a ch tng i (khong nhy tnh t v tr bt u lnh). Do byte a ch s dng phng php b 2 nn phm vi biu din t -128 + 127, ngha l phm vi nhy ca lnh SJMP ch trong phm vi t - 128 n 127 byte. Phm vi thc hin m t nh hnh v.

128 byte SJMP rel

127 byte

Hnh 2.1 Phm vi thc hin ca lnh SJMP Lnh AJMP c kch thc 2 byte trong a ch cha trong 11 bit nn phm vi biu din a ch l 211 (2K). Trong khi , vng a ch ti a ca MCS-51 l 64K nn khi thc hin lnh AJMP, 64K chng trnh phi chia thnh tng vng 2K (tng cng 32 vng) v lnh AJMP ch c th thc hin trong mt vng. Tuy nhin, khi lp trnh cho MCS-51, thng thng cc chng trnh dch u cho php s dng lnh JMP thay th cho 3 lnh trn. Khi bin dch, chng trnh dch s t ng thay th bng cc lnh thch hp.

Phm Hng Kim Khnh

Trang 48

Gio trnh Vi iu khin 0000h 2K AJMP rel 07FFh

Lp trnh hp ng trn vi iu khin MCS-51

Phm vi thc hin

F800h 2K AJMP rel FFFFh Phm vi thc hin

Hnh 2.2 Phm vi thc hin ca lnh AJMP Lnh JMP @A + DPTR cho php chn cc v tr nhy khc nhau tu theo gi tr trong thanh ghi A. a ch nhy n chnh l tng gi tr ca thanh ghi A v DPTR. V d: MOV DPTR, # JUMP_TABLE MOV A, INDEX_NUMBER MOV B, #3 MUL AB JMP @ A + DPTR JUMP_TABLE: LJMP LABEL0 LJMP LABEL1 LJMP LABEL2 LJMP LABEL3 LJMP LABEL4 ; ; ; ; a ch bng nhy V tr nhy x3 do lnh LJMP c kch thc 3

; ; ; ; ;

V V V V V

tr tr tr tr tr

nhy nhy nhy nhy nhy

0 1 2 3 4

Phm Hng Kim Khnh

Trang 49

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

Lnh CALL, RET, RETI: Lnh CALL dng gi chng trnh con, bao gm 2 lnh: ACALL (Absolute Call) v LCALL (Long Call). V tr c th gi lnh CALL ging nh xt trong lnh JMP. Khi lp trnh, thng thng cc chng trnh dch cng cho php thay th duy nht bng lnh CALL v khi bin dch, lnh CALL s c thay th bng lnh ACALL hay LCALL tu theo v tr gi lnh. Lu rng khi thc hin lnh CALL th trong chng trnh con phi kt thc bng lnh RET. Ngoi ra, khi s dng cc chng trnh con phc v ngt, khi kt thc phi dng lnh RETI. Lnh RETI v lnh RET ch khc nhau ch lnh RETI bo cho h thng iu khin ngt bit rng qu trnh x l ngt thc hin xong. Lnh JZ, JNZ: Lnh JZ v JNZ dng kim tra ni dung ca thanh ghi A. Lnh JZ nhy khi A = 0 v JNZ nhy khi A 0. Lu rng phm vi nhy ch cho php trong khong t -128 127 byte (ging nh khi s dng lnh SJMP). Lnh DJNZ: Lnh DJNZ thng c dng to vng lp. S ln lp c chuyn vo thanh ghi m u vng lp (thanh ghi m c th dng bt k thanh ghi no hay l b nh). V d: MOV R7, #10 ; Lp 10 ln LOOP: DJNZ R7, LOOP Lnh CJNE: Lnh CJNE dng so snh 2 gi tr vi nhau, khi 2 gi tr ny khc nhau th s thc hin lnh nhy. Lu rng trong tp lnh ca MCS-51 khng c lnh ln hn hay nh hn nn ch c th thc hin cc lnh ny bng cch kt hp lnh CJNE v ni dung ca c Carry. Trong lnh CJNE, nu byte u tin nh hn byte th hai th CF = 1. Ngc li (byte u tin ln hn hay bng byte th hai) th CF = 0. V d: Kim tra ni dung ca thanh ghi A, nu A nh hn 10 th xut gi tr trong thanh ghi A ra Port 1. Ngc li th xut gi tr 10 ra Port 1.

Phm Hng Kim Khnh

Trang 50

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

CJNE A,#10,Khacnhau; JMP Xuat10 ; Khacnhau: JC XuatA ; Xuat10: ; MOV P1,#10 SJMP Tiep XuatA: MOV P1,A Tiep:

So snh A vi 10 Nu A = 10 th xut gi tr 10 Nu CF = 1 (A < 10) th xut ni dung trong A ra P1

3.4.

Nhm lnh logic

Nhm lnh logic bao gm cc lnh lin quan n x l logic theo tng byte, m t nh sau: Bng 2.7 Cc lnh logic Lnh Hot ng Tc thi x Ch a ch Trc tip x x x x x x x x x x x Ch dng cho thanh ghi A Ch dng cho thanh ghi A Ch dng cho thanh ghi A Ch dng cho thanh ghi A Ch dng cho thanh ghi A x x x x Gin tip x Thanh ghi x Chu k thc thi

ANL A,(byte) ANL (byte),A ANL (byte),#data8 ORL A,(byte) ORL (byte),A ORL (byte),#data8 XRL A,(byte) XRL (byte),A XRL (byte),#data8 CLR A CPL A RR A RLC A RL A

A = A AND (byte) (byte)=(byte) AND A (byte)=(byte)AND data8 A = A OR (byte) (byte)=(byte) OR A (byte)=(byte) OR data8 A = A XOR (byte) (byte)=(byte) XOR A (byte)=(byte) XOR data8 A=0 A = NOT A Quay phi thanh ghi A 1 bit Quay phi thanh ghi A v CF 1 bit Quay tri thanh ghi A 1 bit

1 1 2 1 1 2 1 1 2 1 1 1 1 1

Phm Hng Kim Khnh

Trang 51

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

Quay tri thanh ghi A Ch dng cho thanh ghi A v CF 1 bit i v tr nibble cao SWAP A Ch dng cho thanh ghi A v thp ca ACC RL: Rotate Left, RLC: Rotate Left through Carry RR: Rotate Right; RRC: Rotate Right through Carry RLC A Lnh ANL, ORL, XRL:

1 1

Cc lnh logic ny thc hin ging nh trong cc lnh x l bit nhng thc hin trn 8 bit ca cc thanh ghi hay b nh. Lnh XRL cn c dng o tt c cc bit nh sau: XRL P0, #0FFh Lnh RR, RRC, RL, RLC: Cc lnh ny dng quay phi hay quay tri thanh ghi A 1 bit. V d: Gi s thanh ghi A = 39h (0011 1001b), CF = 1. Ni dung thanh ghi A sau khi thc hin cc lnh quay tng ng nh sau: RR A: Trc khi quay: 0 0 1 1 1 0 0 1

Sau khi quay: 0 0 RL A: A = 0111 0010b (72h) RRC A: Trc khi quay:

ACC 0 0 1 1 1 0 0 1

CF 1

Sau khi quay: ACC 1 0 0 1 1 1 0 0 CF 1

Phm Hng Kim Khnh

Trang 52

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

RLC A: A = 0111 0011b (73h); CF = 0 Lnh SWAP: Lnh SWAP A dng hon chuyn ni dung 2 nibble trong thanh ghi A. V D: Nu ni dung thanh ghi A = 39h th sau khi thc hin lnh SWAP A, ni dung thanh ghi A l 93h.

3.5.

Nhm lnh s hc

Cc lnh trong nhm lnh s hc m t nh trong bng sau: Bng 2.8 Cc lnh s hc Lnh ADD A,(byte) ADDC A,(byte) SUBB A,(byte) INC A INC (byte) INC DPTR DEC A DEC (byte) MUL AB DIV AB DA A Hot ng Tc thi A=A+ (byte) A=A+ (byte) + C A=A(byte) - C A=A+1 (byte) = (byte) + 1 DPTR = DPTR + 1 A=A-1 (byte) = (byte) - 1 B_A = B x A A = A div B B = A mod B Hiu chnh trn s BCD Lnh ADD: Thc hin cng gia thanh ghi tch lu A v mt ton hng khc. Lnh ADD nh hng n cc c Carry (C), Overflow (OV) v Auxiliary (AC).
Phm Hng Kim Khnh Trang 53

Ch a ch Trc tip x x x Gin tip Thanh ghi x x x x x x

Chu k thc thi 1 1 1 1 1 2 1 1 4 4 1

x x x

Ch dng cho thanh ghi tch lu ACC x x x

Ch dng cho thanh ghi con tr lnh DPTR Ch dng cho thanh ghi tch lu ACC x x x

Ch dng cho thanh ghi tch lu ACC v thanh ghi B Ch dng cho thanh ghi tch lu ACC v thanh ghi B Ch dng cho thanh ghi tch lu ACC

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

Lnh ADD c 4 ch a ch khc nhau: ADD A, #30h ; nh a ch tc thi (A = A + 30h)

ADD A, 30h ; nh a ch trc tip (A = A + [30h] trong [30h] l gi tr ca RAM ni c a ch 30h) ADD A, @R0 ; nh a ch gin tip (A = A + [R0] trong [30h] l gi tr ca RAM ni c a ch cha trong thanh ghi R0) ; R0 = 30h

MOV R0,#30h

ADD A,@R0 ; A = A + [R0] = A + [30h] (cng ni dung ca thanh ghi ACC vi RAM ni c a ch 30h) ADD A,R0 ; nh a ch thanh ghi (A = A + R0)

Lnh ADDC, SUBB: Thc hin cng hay tr ni dung ca thanh ghi A vi mt ton hng khc trong c dng thm c Carry. Lnh ADDC v SUBB nh hng n cc c C, OV v AC. Lnh MUL: Nhn ni dung ca thanh ghi A vi thanh ghi B. Lnh MUL nh hng n c OV v xo c C (C = 0). V d: MOV A,#50 ; 50 x 25 = 1250 04E2h MOV B,#25 ; byte cao = 04h, byte thp = E2h MUL AB ; B = 04h, A = E2h Lnh DIV: Chia ni dung ca thanh ghi A cho thanh ghi B. Lnh DIV nh hng n c OV v xo c C (C = 0). V d: MOV A,#250 ; 250 / 40 = 6 d 10 MOV B,#40 ; DIV AB ; B = 0Ah (10), A = 06h Lnh DA A: Hiu chnh ni dung thanh ghi A sau khi thc hin cc php ton lin quan n s BCD. Qu trnh thc hin lnh DA A m t nh sau:
Phm Hng Kim Khnh Trang 54

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

Nu A[3-0] > 9 hay AC = 1 th A[3-0] = A[3-0] + 6 Nu A[7-4] > 9 hay C = 1 th A[7-4] = A[7-4] + 6

Lnh DA A cng nh hng n c C.

Phm Hng Kim Khnh

Trang 55

Gio trnh Vi iu khin

Lp trnh hp ng trn vi iu khin MCS-51

BI TP CHNG 2
1. Xc nh gi tr ca cc biu thc sau: a. (10 SHL 2) OR ( 1000 1000b) b. (5*2 10 SHR 1) AND (11h) c. HIGH(10000) d. LOW(-30000) 2. Vit on chng trnh c ni dung ca nh 30h. Nu gi tr c ln hn hay bng 10 th xut 10 ra P0, ngc li th xut gi tr va c ra P0. 3. Vit on chng trnh xut cc gi tr trong nh 30h 3Fh ra P1 (gia cc ln xut c thi gian tr hon). 4. Vit on chng trnh theo yu cu sau: c d liu t P1 (10 ln) v lu gi tr c mi ln vo nh 30h 39h (mi ln c c tr hon mt khong thi gian). Tm gi tr ln nht trong cc nh 30h 39h, lu vo nh 3Ah v xut gi tr ny ra P2. Kim tra ni dung nh 3Ah, nu = 0 th quay li u chng trnh, ngc li th xut gi tr ny ra P3.

5. Vit on chng trnh theo yu cu: B1: Kim tra bit P3.0: P3.0 Thc hin = 0 n bc 2 = 1 n bc 3 B2: c d liu t P2, o tt c cc bit v xut ra P0. Sau quay li bc 1. B3: xut ni dung ti nh 30h ra P1 v quay li bc 1

Phm Hng Kim Khnh

Trang 56

You might also like