Professional Documents
Culture Documents
3
3
TM TT TP LNH
3.1 M U
Chng ny gii thiu tp lnh ( instruction set ) ca h MCS-51 thng qua vic
kho st cc kiu nh a ch ( addressing mode ) v cc th d da trn cc tnh
hung lp trnh in hnh. Ph lc A cho ta bng tm tt tt c cc lnh ca 8051. Ph
lc c m t chi tit tng lnh. Cc ph lc c dng tham kho khi c chng
ny. Chng ny cha bn n k thut lp trnh cng nh hot ng ca trnh dch
hp ng ( assembler ), chng trnh c dng chuyn i chng trnh ngun vit
bng hp ng thnh chng trnh ngn ng my. Cc ch ny c tho lun sau
trong cc chng 7 v 8.
Tp lnh ca MCS-51 c ti u ha cho cc ng dung iu khin 8- bit. Nhiu
kiu nh a ch c ng v nhanh dng truy xut RAM ni c dng n nhm
to thun li cho cc thao tc trn cc cu trc d liu nh. Tp lnh cng h tr cc
bin 1-bit cho php qun l bit trc tip trong cc h logic v iu khin c yu cu x
l bit.
Cng nh cc b vi x l 8-bit, cc lnh ca 8051 c cc opcode 8-bit. do vy s
lnh c th ln n 256 lnh ( thc t c 255 lnh, 1 lnh khng c nh ngha ) .
Ngoi opcode, mt s lnh cn c thm 1 hoc 2 byte na cho d liu hoc a ch.
Tp lnh c 139 lnh 1 byte, 92 lnh 2-byte v 24 lnh 3-byte. Ph lc B trnh by
opcode ca cc lnh. Ph lc ny cho ta thy, vi tng lnh mt : opcode, m gi nh,
s byte ca lnh v s chu k my cn thc thi lnh.
3.2 CC KIU NH A CH
Khi mt lnh c thc thi v lnh ny cn d liu, mt cu hi c t ra l :
D liu cha u Cu tr li cho cu hi ny to ra cc kiu nn a ch ca 8051.
C nhiu kiu nh a ch do vy c nhiu cu tr li cho cu hi nu trn, chng hn
nh : trong byte th 2
g]46
H vi iu khin 8051
ca 1 lnh, trong thanh ghi R4, trong a ch trc tip hoc c th trong
b nh ngoi a ch cha trong con tr d liu.
v lnh ny c opcode l 00101111B. Nm bit cao 30101 cho bit y l lnh cng v
3 bit thp 111 ch ra thanh ghi R7. Ta c th tham kho pli lc c xc nhn iu
va cp.
C 4 dy thanh ghi lm vic nhng or 1 thi im chi c 1 dy tch cc. Cc
dy thanh ghi chim 32 byte u tin ca RAM d liu trgn chip ( a ch t 00H n
1FH ) v ta dng cc bit 4 v 3 ca t trng v J T'C,T1T *- ~1_L' J~y thanh ghi
tch cc. Mt reset
bng phn cng cho php dy t tch cc cn cc dy khc c chn bng cch
sa i cc bit 4 v 3 ca PSW sao cho ph hp. Th d lnh :
1
Chng 3 : Tm tt tp lnh
47 (g
M*v PSW,
s tch cc dy thanh ghi 3 bng cch set cc bit chn dy thanh ghi ( RS1 v
RSO ) trong PSW ln 1 ( cc bit. ny v tr 4 v 3 ).
)c*ce
n n
Tf11-------------
Opcode i
J_____I____I____I____I____I_______
Re'mlivo offset
ADDR7-ADDR0 1 1 1 1
AliDlil
Opcode
111
O
1 1 1 1
ApD^S
if) Absolute addressing (e.g., AJMP <dcst>)
111a111
ADDR7-ADDR0
1111
111
Effective address
I
Hnh 3.1 : Cc kiu nh a ch ca 8051 (a) nh a ch thanh ghi (b) nh a chi trc tip (c)
nh a ch gin tip (d) nh a ch tc thi (e) nh a ch tiig i ( ) nh a chi' tuyt
i (g) nh a ch di (h) nh a ch ch s
Register addressing : nh a ch thanh ghi ( th d : ADD A, R )
Direct addressing : nh a ch trc tip ( th d : ADD A, direct )
Indirect addressing : nh a chi gin tip ( th d : ADD A, @R0 )
Immediate addressing : nh a ch tc thi ( th d : ADD A, #55H )
Relative addressing : nh a ch tng i ( th d : SJMP <dest> )
Absolute addressing : nh a ch tuyt i ( th d : AJMP <dest> )
Long addressing : nh a ch di ( th d : LJMP <dest> )
Indexed addressing : nh a chi ch s ( th d : Move A, @A+PC )
48
H vi iu khin 8051
byte 1 : opcode
a ch ca P1 ( 90H )
Chng 3 : Tm tt tp lnh
49 (g
i) 50
H vi iu khin 8051
Relative
offset
from
address
0102H is "5"
0106
0105
0104
0103
0102
0101
0100
05
80
SJMP 0107H
00FF
Code
memory
I a) Short jump all- id U 1 liinmorv
2043
2042
2041
2040
203F
203E
203D
203C
203B
203A
2039
2038
F6
80
-l
2r
-3
-4
-5
-6
-7
-8
-9
-10-
Code
memory
Relative
offset
from
address
2042H is -10" of
F6H
Hnh 3.2 : Tnh offset cho kiu nh a ch tng i (a) nhy ti v ngn (b)
nhy li v ngn
Chng 3 : Tm tt tp lnh
Short jump ahead in memory : nhy ti v ngn Short jump back in memory : nhy li v ngn
------------------
01000110
bvte 2 A7 - AO )
thay i khi lnh trn c thc thi. Ltu V l lnh AJMP v ch nhy n u
trong 1 trang 2K gii hn bi 0800H 0FFF1I (xem hnh 3.3), v do vy c 5 bit
a chi cao nh nhau.
a ch tuyt i c im li l lnh ngn (. 2-byte ) nhng c im bt li l
ch b gii hn tm a chi v cung cp cho ta m ph thuc vo v tr.
AO
F!- r~ ----------F80U
A15
A10
081)1
<)7bT2K pilfir (1
',i2 2K pact's
noun
tuyt i (a) b nh c
2K, 5 bit a ch cao khng
i.
d|i ilmli'
Within any 2 K page, only the lower 11 bits change : trong mt trang 2 K bt k chi c 11 bit thp
thay i
5 bits determine the 2 K page : -bit xc nh trang 2 K
11 bits determine the address within a 2 K page : 11-bit xc nh a ch trong trang 2 K.
64 K memory map divided into 32 X 2 K pages : bail b nh 64 K c chia thnh 32 trang 2
K.
The upper 5. bits in the program counter remain the same. The lower bits are replaced by the bits
supplied in the instruction : -bit cao trong thanh ghi PC gi khng di. Cc bit thp c thay
bng cc bit cung cp bi lnh.
3.2.7 nh a ch di
Kiu nh a ch di ch c dng cho cc lnh LCALL v LJMP. Cc lnh 3byt.e ny cha a ch ch 16-bit ( 2 byte : byte 2 v byte 3 ) ca lnh ( xem hnh
3.1.g ).
Li ch ca kiu nli a ch ny l s dng ht ton b khn# gian nh chng
trnh 64K, nhng li c im bt li l lnh di n 3-byte v ph thuc vo v tr.
Chng 3 : Tm tt tp lnh
53 H
3.2.8 nh a ch ch s'
*'
Kiu nh a ch ch s" s dng mt thanh ghi nn ( hoc b m chng
trnh hoc con tr d liu ) v mt offset ( thanh cha A ) to thnh dng a ch
hiu dng cho lnh JMP hoc MOVC ( xem hnh 3.1.h ). Trong nhiu ng dng,
cc bng nhy hoc cc bng tm kim c to ra d dng bng cch s dng kiu
nh a chi ch s. Cc th d c cho ph lc c vi cc lnh MOVC A,
@A+<base-reg> v JMP @A+DPTR
3.3
CC LOI LNH
Cc lnh ca 8051 c chia lm 5 nhm :
ADD
A,
@R0 )
ADD A, R7 .
tc thi]
ADD
A, #35H
T't
c cc
lnh s hc cj;hc thi trong mt chu k my ngoi tr lnh INC DPTR
c thc thi trong hai chu k my, cc lnh MUL
sau :
54
H vi iu khin 8051
SKIP : ( tip tc )
Chng 3 : Tm tt tp lnh
Ly th d nu thanh cha A cha gi tr BCD l 59 (59H), chui lnh sau :
ADD A, #1 DA A
( d iiu tc thi )
AND 00110101
00010001
( kt qu cha troug A )
AN&-A, @R0
nh a ch gin tip )
ANb~ A,'R6
AN^" A, #33H
nh a ch tc thi )'
is 56
H vi iu khin 8051
SWAP A ADD A, B
Vic chia mt s' cho 10 trong hai lnh u tin to ra digit chc trong na thp ca
thanh cha A v digit n v trong thanh ghi B. Lnh SWAP v ADD di chun digit
chc n na cao ca thanh cha A v digit n v vo na thp ca thanh cha ny.
3.3.3 Cc lnh d chuyn d liu
Trong RAM ni
Cc lnh di chuyn d liu bn trong khng gian nh ni c thc thi trong 1 hay
2 chu k my. Dng ca lnh nh sau :
MOV <destination>, <source>
Chng 3 : Tm tt tp lnh
1158
H vi iu khin 8051
MOV c A, @A+PC
INC A
LOOK-UP:
Move A, @A+PC
Chng 3 : Tm tt tp lnh
RET
TABLE :
DB data, data, data..........
Bng c nh ngha ngay sau lnh RET trong chng trnh. Lnh tng c cn
n do PC tr ti lnh RET khi lnh MOVC c thc thi. Vic tng ni dung thanh
cha s b qua lnh RET..
3.3.4 Cc nh x l bit
B x l ca 8051 cha 1 b x l logic trn bit cho php ta thc hin cc php
ton n bit. RAM ni cha 128 bit c nh a ch v khng gian SFR h tr thm
n 128 bit c nh a ch. Tt c cc ng port u c a ch bit v mi ng c
th c x l nh l mt port n bit ring r. Cc lnh truy xut cc bit ny khng
chi l cc lnh r nhnh c iu kin m cn l cc lnh di chuyn, set, xa, ly b, OR
v AND. Cc thao tc trn bit nh vy ( mt trong cc c trng mnh ca MCS-51 )
khng d dng c c trongcc cu trc khc, cc cu trc s dng cc thao tc hng
byte.
Mi thao tc truy xut bit u s dg kiu nh a ch trc tip vi cc a ch bit
t 00H n 7FH trong 128 v tr thp, v t a chi 80H n FFH trong khng gianSFR.
Cc a ch bit 128 v tr thp thuc cac~byte c a ch t J20H <fenT2FH c
nh s lin tc t bit 0 ca byte a ch 20H (bit 00H) n bit 7 ca byte a ch
2FH (bit 7FH).
Cc bit c th c set v xa bng 1 lnh. iu khin n bit c dng cho nhiu
thit b xut/nhp, bao gm xut ra r le, ng c, cn dy, cc LED, mch ci bo
ng, loa hoc nhp t cc chuyn mch hoc cc b ch th trng thi. Nu c mt
mcL ci bao ng ni vi bit 7 ca port 1, t.a c th tc ng mch ci bng cch set
bit ca port :
SETB P17 hoc tt ci bng cch xa bit cua
port :
CLR P1 7
Trinh dch hp ng s bin i k hiu P1.7 thnh a ch bit l 97H. Th d sau cho
php ta di chuyn 1 c vo mt chn ca port :
MOV c, FLAG
MOV Pl.o, c
Trong th d trn, FLAG l tn ca 1 bit c nh a ch trong 128 v tr thp hoc
trong khng gian SFR. Mt ng xut/nhp ( th d trn l bit 0 ca port 1 ) c
set hoc xa ph thuc vo bit c c gi t,ri 1 hay 0. Bit nh trong PSW c dng nh
mt thanh cha n bit
IS 60
H vi iu khin 8051
C 2 u c cng cng dng, tuy nhin dng lnh trc l lnh 1- byte trong khi
dng lnh sau l lnh 2-byte. Trong dng lnh sau byte th 2 l a ch trc tip ca bit
c xc nh - c nh.
Cc lnh logic trn bit bao gm c lnh ANL v ORL nhnp khng bao gm lnh
XRL. Nu ta cn XOR 2 bit, BIT1 v BIT2, v kt qu ct trong c nh, cc lnh sau
c s dung :
MOV c, BIT1
JNB BIT2, SKIP
CPL c
SKIP :
('hng : Tm tt tp l nil
61 S5.
S) 62
H vi iu khin 8051
AJMP CASEO
AJMP CASE1
AJMP CASE2
AJMP CASE3
(C) nnay uen cnuoug innh con bng cch np cho PC a ch cha trong byte 2 v byte
3 ca lnh.
Cc lnh LCALL v ACALL cng c cc hn ch trn a ch ch nh cc lnh
LJMP v AJMP ( cp trn ).
Cc th tc cn c kt thc bng lnh RT, lnh ny tr vic thc thi chng
('hng : Tm tt tp l nil
63 S5.
trnh tr v lnh theo sau lnh CALL. Khng c iu g b n v cch m lnh RET
tr iu khin v cho chng trnh chnh. n
Chng 3 : Tm tt tp lnh
gin l lnh ny ly li ( pop ) 2 byte sau cng ra khi stack v nap chng cho b m
chng trnh. Mt qui lut ch yu cho vic lp trnh vi cc th tuc l chng lun lun
c goi bi lnh CALL v lun lun tr iu khin v chng trnh gi bi lnh RET.
Cc thao tc nhy vo KocT nh^ra khi 1 th tc bng 1 cch khc no thng
lm ri vng stack v lm cho chng trnh b dng.
Lnh RETI tr iu khin v chng trnh gi t 1 trnh phc v ngt ( ISR :
interrupt Service routine ). im khc nhau gia RET v RETI l RETI bo hiu cho h
thng iu khin ngt rng qu trnh x l ngt xong. Nu khng c mt ngt no
duy tr trong thi gian RETI c thc thi, RETI hot ng ging RET. Cc ngt v
lnh RETI s c cp chi tit trong chng 6.
Nhy c iu kin
8051 cung cp cho ta nhiu lnh nhy c iu kiu. Tt c cc lnh ny xc nh a
ch ch bng kiu nh a ch tng i v cng b gii hn khong cch nhy t
-128 byte n +127 byte k t lnh theo sau lnh nhy c iu kin. Tuy nhin cn lu
l ngi lp trnh s xc nh a ch ch theo cng cch vi cc lnh nhy khc bng
cch dng nhn hoc bng s 16-bit. Trnh dch hp ng s thc hin cc vic cn li.
Khngco btT trong SW. Cc lnh JZ v JNZ kim t liu trong tharih cha cho iu
kin ny.
ijnh DJNZ ( gim v nhy nu khc khng ) dnh cho iu khin lp vng. ^D
thc thi 1 vng lp N ln, ta np mt byte s m N cho mt thanh ghi v kt thc vng
lp vi DJNZ tr ti im bt u vng lp. Th d di y c N=10 :
MOV R7,#10 LOOP: ( bt u vng
lp )
Lnh CJNE ( so snh v nhy nu khng bng ) cng dnh cho vic
iu khin vng lp. Hai byte cxac nh trng trng ton hng ca lnh v
vic nhy ch c thc thi nu 2 byte khc 0. Th d nu 1 k t va c c
vo thanh cha A t port ni tip v ta mun nhy n
I]64
H vi iu khin 8051
JNC BIG V
>