Vous êtes sur la page 1sur 50

Chöông 3

KHAÛO SAÙ
T TAÄP LEÄ
NH VÑK
HOÏ MCS - 51

1. TOÅ
NG QUAN
2. NHÖÕ
NG KYÙHIEÄ
U QUY ÖÔÙ
C
3. CAÙ
C PHÖÔNG PHAÙ
P XAÙ
C ÑÒ
NH ÑÒ
A CHÆ
4. KHAÛ
O SAÙ
T TAÄ
P LEÄ
NH
5. BAÛ
NG TOÙ
M TAÉ
T TAÄ
P LEÄ
NH
6. GIÔÙ
I THIEÄ
U CHÖÔNG TRÌNH BIEÂ
N DÒ
CH KEIL
7. NAÏP CHÖÔNG TRÌNH CHO VI ÑIEÀ
U KHIEÅ
N

1. TOÅNG QUAN VEÀ TAÄP LEÄNH CUÛA HOÏ VI ÑIEÀU KHIEÅN MCS-51

Taäp leänh cuûa moät hoï vi ñieàu khieån laø taäp hôïp caùc leänh maø
vi ñieàu khieån thuoäc hoï aáy coù theå thöïc hieän ñöôïc. Maõ cuûa moät
leänh (ví duï ñoái vôùi hoï MCS-51) laø 1 soá nhò phaân 8 bit (töùc 1 byte).
Ngoaøi maõ leänh, ñoâi khi coøn coù caùc döõ lieäu keøm theo leänh. Do
ñoù moät leänh thöôøng chieám töø 1 ñeán 3 byte trong boä nhôù. Ñoái vôùi
hoï MCS-51, taäp leänh coù taát caû 255 leänh goàm : 139 leänh 1 byte; 92
leänh 2 byte vaø 24 leänh 3 byte. Taäp leänh coù theå taïm phaân thaønh 5
nhoùm nhö sau :
 Nhoùm leänh chuyeån vaø trao ñoåi döõ lieäu.
 Nhoùm leänh logic
 Nhoùm leänh tính toaùn
 Nhoùm leänh ñieàu khieån reõ nhaùnh
 Nhoùm leänh xöû lyù bit
Ñeå hieåu ñöôïc töøng leänh trong taäp leänh, caàn phaûi hieåu yù nghóa
cuûa caùc “kyù hieäu ñaïi dieän”. Vì cuù phaùp cuûa moãi leänh trong taäp
ñöôïc cho ôû daïng toång quaùt nhaát neân caàn duøng nhöõng “kyù hieäu
ñaïi dieän” maø kyù hieäu ñoù seõ ñöôïc thay theá baèng moät döõ lieäu cuï
theå khi duøng leänh ôû moät tröôøng hôïp cuï theå.

51
2. NHÖÕNG KYÙ HIEÄU QUY ÖÔÙC

Kyù Kyù töï YÙ nghóa cuûa kyù töï ñaïi dieän


hieäu ñaïi dieän
Rn n ÔÛ tröôøng hôïp cuï theå, n ñöôïc thay baèng
moät soá coù giaù trò töø 0 → 7 ñeå chæ ñònh
thanh ghi töông öùng.
direct direct ÔÛ tröôøng hôïp cuï theå, direct ñöôïc thay
baèng moät soá 8 bit. Soá 8 bit naøy duøng
ñeå xaùc ñònh ñòa chæ moät oâ nhôù trong
RAM. Neáu oâ nhôù coù teân thì coù theå
duøng teân thay vì duøng ñòa chæ laø soá 8
bit.
@Ri i ÔÛ tröôøng hôïp cuï theå, i coù theå laáy giaù
trò 0 hoaëc 1 ñeå chæ ñònh thanh ghi töông
öùng.
#data data ÔÛ tröôøng hôïp cuï theå, data ñöôïc thay
baèng moät soá 8 bit.
#data data 16 ÔÛ tröôøng hôïp cuï theå, data ñöôïc thay
16 baèng moät soá 16 bit.
addr 11 addr 11 ÔÛ tröôøng hôïp cuï theå, addr 11 ñöôïc thay
baèng soá 11 bit.
addr 16 addr 16 ÔÛ tröôøng hôïp cuï theå, addr 16 ñöôïc thay
baèng soá 16 bit.
rel rel ÔÛ tröôøng hôïp cuï theå, rel ñöôïc thay baèng
moät nhaõn töùc teân goïi naøo ñoù do ngöôøi
laäp trình ñaët.
bit bit ÔÛ tröôøng hôïp cuï theå, bit ñöôïc thay baèng
moät soá 8 bit, chính laø ñòa chæ cuûa 1 bit
naøo ñoù trong RAM.

3. CAÙC PHÖÔNG PHAÙP XAÙC ÑÒNH ÑÒA CHÆ

Trong quaù trình hoaït ñoäng cuûa vi ñieàu khieån, hoaït ñoäng
chuyeån döõ lieäu laø hoaït ñoäng thöôøng xuyeân nhaát. Trong quaù trình
naøy, caàn phaûi xaùc ñònh ñích (nôi maø döõ lieäu seõ ñöôïc löu vaøo) vaø
nguoàn (laø nôi copy döõ lieäu).
Trong cuù phaùp cuûa leänh, ñích luoân ñöôïc vieát tröôùc vaø sau ñoù
laø nguoàn. Ñích vaø nguoàn caùch nhau bôûi daáu phaåy (,). Cuù phaùp
laø : ñích,nguoàn
Ví duï: MOV 03h,05h laø leänh chuyeån döõ lieäu töø ñòa chæ 05h
ñeán ñòa chæ 03h
Coù moät quy taéc chung laø : Khi ñích hoaëc nguoàn ñaõ coù teân
(gioáng nhö nhaø ñaõ coù chuû) thì coù theå laáy teân thay cho ñòa chæ. Ví
52
duï nhaø anh Huøng coù ñòa chæ laø 254 Lyù Thaùi Toå. Ta coù theå noùi :
Toâi ñeán 254 Lyù Thaùi Toå hoaëc
Toâi ñeán nhaø anh Huøng ñeàu coù yù nghóa nhö
nhau.
Tuy nhieân ñieàu naøy chæ ñuùng neáu chæ coù 1 anh Huøng maø thoâi.
Neáu coù hai anh Huøng thì hai caâu treân laø khoâng töông ñöông.

Caùch xaùc ñònh ñòa chæ baèng caùch khai baùo ñòa chæ
ñöôïc goïi laø caùch xaùc ñònh ñòa chæ tröïc tieáp.
Ví duï : MOV 03h,05h
03h vaø 05h laø caùc ñòa chæ tröïc tieáp

Caùch xaùc ñònh ñòa chæ baèng caùch goïi teân cuûa nôi
töông öùng vôùi ñòa chæ ñöôïc goïi laø caùch ñònh ñòa chæ
duøng teân. Caùch naøy chæ ñöôïc aùp duïng khi trong heä thoáng
khoâng coù caùc ñòa chæ truøng teân. Noùi caùch khaùc, moãi teân chæ
töông öùng vôùi moät ñòa chæ duy nhaát.
Trong heä thoáng vi ñieàu khieån, caùch ñònh ñòa chæ duøng teân ñöôïc
duøng haàu nhö baát cöù khi naøo ñòa chæ ñaõ coù teân. Ñieàu naøy seõ
coù lôïi cho ngöôøi laäp trình. Chöông trình bieân dòch sau ñoù seõ phaûi
ñoåi teân thaønh ñòa chæ tröïc tieáp.
Ví duï: Thanh ghi ôû ñòa chæ E0h coù teân laø A
Hai leänh sau laø töông ñöông :
MOV E0h,#20h (20h sau daáu # chính laø döõ lieäu, 20h =
0010 0000)
MOV A,#20h (caùch vieát naøy ñôn giaûn vaø töôøng minh
hôn).

Khi noäi dung trong moät thanh ghi naøo ñoù ñöôïc duøng
laøm ñòa chæ thì caùch xaùc ñònh naøy ñöôïc goïi laø ñònh
ñòa chæ giaùn tieáp.
Ví duï: Trong thanh ghi R1 coù chöùa döõ lieäu : 0010 0101 = 25h
Leänh MOV A,@R1 seõ töông ñöông vôùi leänh
MOV A,25h
Caùch vieát thöù 2 laø chæ ra tröïc tieáp nôi copy döõ lieäu. Caùch vieát
thöù nhaát duøng noäi dung trong thanh ghi R1 laøm ñòa chæ nôi copy
döõ lieäu.

Ngoaøi ra coù coù kieåu ñònh ñòa chæ duøng addr 11 vaø addr
16
Kieåu addr 11 chæ ñöôïc duøng cho leänh ACALL vaø AJMP
 ACALL laø leänh goïi chöông trình con
 AJMP laø leänh nhaûy (leänh reõ nhaùnh)

53
Caáu truùc laø : ACALL addr11 (ñoái vôùi leänh goïi chöông trình con)
vaø
AJMP addr 11 (ñoái vôùi leänh nhaûy)
ÔÛ tröôøng hôïp cuï theå : addr 11 seõ ñöôïc thay theá baèng soá 11 bit.
Khi thöïc hieän leänh, soá 11 bit naøy seõ thay cho 11 bit thaáp trong
thanh ghi PC (caùc bit cao trong thanh ghi PC khoâng ñoåi). Khi ñoù moät
ñòa chæ môùi ñöôïc xaùc ñònh, Ñoù laø ñòa chæ maø vi ñieàu khieån seõ
troû ñeán ñeå laáy leänh sau khi thöïc hieän xong leänh ACALL hoaëc
AJMP.

Kieåu addr 16 ñöôïc duøng cho leänh LCALL hoaëc LJMP


 LCALL laø leänh goïi chöông trình con
 LJMP laø leänh reõ nhaùnh
Caáu truùc : LCALL addr 16 (ñoái vôùi leänh LCALL) vaø
LJMP addr 16 ñoái vôùi leänh (LJMP)
ÔÛ tröôøng hôïp cuï theå : addr 16 seõ ñöôïc thay theá baèng soá 16 bit.
Khi thöïc hieän leänh, soá 16 bit naøy seõ thay cho 16 bit trong thanh ghi
PC. Noäi dung môùi naøy trong PC seõ laø ñòa chæ nôi maø vi ñieàu
khieån seõ troû ñeán ñeå laáy leänh sau khi thöïc hieän xong leänh LCALL
hoaëc LJMP.

4. KHAÛO SAÙT TAÄP LEÄNH CUÛA VI ÑIEÀU KHIEÅN HOÏ MCS-51

 NHOÙM LEÄNH CHUYEÅN DÖÕ LIEÄU


Chuyeån döõ lieäu ôû ñaây laø vieäc copy döõ lieäu töø nguoàn,
sau ñoù noäi dung cuûa baûn copy ñöôïc ñaët vaøo nôi coù ñòa chæ
ñích ñöôïc khai baùo trong leänh. Sau leänh di chuyeån döõ lieäu thì
noäi dung ôû ñích = noäi dung ôû nguoàn vaø noäi dung ôû nguoàn
khoâng bò maát ñi.
Vieäc chuyeån döõ lieäu coù theå thöïc hieän trong noäi boä vi ñieàu
khieån hoaëc giöõa vi ñieàu khieån vôùi boä nhôù ngoaøi. Caùc töø gôïi nhôù
goàm MOV, MOVC vaø MOVX ñöôïc duøng cho caùc leänh chuyeån döõ
lieäu.
CUÙ PHAÙP SÖÛ DUÏNG
Duøng vôùi caùc leänh chuyeån döõ lieäu giöõa
caùc vò trí trong vuøng nhôù RAM, thöôøng laø
giöõa :
MOV  Thanh ghi ↔ Thanh ghi
ñích,nguoàn  Thanh ghi ↔ OÂ nhôù
 OÂ nhôù ↔ OÂ nhôù
 Döõ lieäu → Thanh ghi
 Döõ lieäu → OÂ nhôù
MOVC Duøng vôùi caùc leänh chuyeån döõ lieäu töø boä
ñích,nguoàn nhôù ROM (töùc boä nhôù chöông trình) ñeán

54
thanh ghi A.
MOVX Duøng ñeå trao ñoåi döõ lieäu giöõa thanh ghi A
ñích,nguoàn vôùi boä nhôù RAM ngoaøi. Döõ lieäu coù theå töø
A ñeán RAM ngoaøi hoaëc ngöôïc laïi. Leänh naøy
khoâng ñöôïc duøng khi heä thoáng khoâng duøng
boä nhôù RAM ngoaøi.

Chuyeån döõ lieäu giöõa caùc vò trí trong RAM noäi (MOV)
SÔ ÑOÀ CHUYEÅN DÖÕ LIEÄU VÍ DUÏ YÙ NGHÓA
MOV A,R3 Döõ lieäu trong A →
FF MOV R3,A R3
Thanh ghi A
Döõ lieäu trong R3 →
MOV A
E0
A,90h
Döõ lieäu trong oâ
MOV nhôù coù ñòa chæ
90h,A 90h → A
OÂnhôù
Döõ lieäu trong A →
MOVA,Rn MOV P1,A
oâ nhôù coù ñòa chæ
MOV Rn,A 90h
MOV A,P1
MOVdirect,direct
MOV direct,Rn Döõ lieäu trong A →
OÂnhôù MOVRn,direct oâ nhôù coù teân laø
MOV P1
03h,05h Döõ lieäu trong oâ
nhôù coù teân laø P1
MOVdirect,Rn
→ A
MOVRn,direct

MOV Döõ lieäu trong oâ


Thanh ghi Rn
R1,07h nhôù coù ñòa chæ
05h → oâ nhôù ñòa
00
MOV chæ 03h
07h,R1
Döõ lieäu trong oâ
nhôù coù ñòa chæ
07h → R1
Döõ lieäu trong R1 →
oâ nhôù coù ñòa chæ
07h

Leänh MOV A,@Ri Leänh MOV @Ri,A

55
FF FF

Thanh ghi A Thanh ghi A


E0 E0

2. Copy noäi dung trong oânhôù


löu vaøo thanh ghi A 2. Copy noä
i dung trong thanh
ghi Alöu vaø
o oânhôù

OÂnhôù OÂnhôù

1. Noä
i dung trong thanh ghi Ri ñöôïc 1. Noä
i dung trong thanh ghi Ri ñöôïc
duø
ng laø
m ñòa chæxaùc ñònh oânhôù duø
ng laø
m ñòa chæxaùc ñònh oânhôù
Thanh ghi Ri (i=0,1) Thanh ghi Ri (i=0,1)

00 00

SÔ ÑOÀ CHUYEÅN DÖÕ LIEÄU VÍ DUÏ YÙ NGHÓA


FF MOV A,#05h Naïp 05h → A
MOV A,#00Ah Naïp 0Ah →
Thanh ghi A
E0 (data > 9 thì A
MOVA,#data phaûi theâm soá
DPH 0 vaøo ñaàu)
83 MOV DPTR,#data 16
82
DPL Data (16 bit)
MOV Naïp EFh →
2Fh,#0EFh oâ nhôù ñòa
OÂnhôù
chæ 2Fh
Data (8 bit) MOV R2,#06h Naïp 06h →
MOVdirect,#data R2
MOV
DPRT,#0603h
0603h →
MOVRn,#data
DPTR
(06h vaøo DPH
Thanh ghi Rn
vaø
03h vaøo DPL)
00

Sô ñoà chuyeån döõ lieäu VÍ DUÏ YÙ NGHÓA


trong leänh
MOV @Ri,#data

56
FF MOV Naïp 05h → R1
R1,#05h
Data (8 bit) Noäi dung trong R1
MOV (05h) ñöôïc duøng
OÂnhôù
@R1,#09h laøm ñòa chæ xaùc
2. Döõlieä
u ñöôïc naïp ñònh oâ nhôù. Döõ
vaøo oânhôù
lieäu 09h ñöôïc naïp
1. Noäi dung trong Ri
vaøo oâ nhôù ñaõ
Thanh ghi Ri (i=0,1)
ñöôïc duøng ñeåxaù
c ñònh ñöôïc xaùc ñònh
ñòa chæoânhôù
(tröôøng hôïp naøy laø
oâ nhôù coù ñòa chæ
00
05h). Sau hai leänh :
MOV R1,#05h vaø MOV
@R1,#09h thì noäi
dung trong oâ nhôù ôû
ñòa chæ 05h laø 09h.

Leänh PUSH direct vaø POP direct ñaõ trình naøy trong chöông 2
cuõng thuoäc nhoùm leänh chuyeån döõ lieäu.
 Leänh PUSH direct laø leänh chuyeån döõ lieäu ôû oâ nhôù coù ñòa
chæ direct vaøo 1 oâ nhôù trong vuøng nhôù ngaên xeáp. Ñòa chæ nôi
löu döõ lieäu ñöôïc xaùc ñònh baèng noäi dung hieän taïi cuûa PC
coäng theâm 1.
 Leänh POP direct laø leänh chuyeån döõ lieäu töø 1 oâ nhôù trong
vuøng nhôù ngaên xeáp vaøo oâ nhôù coù ñòa chæ direct. Nôi copy
döõ lieäu ñöôïc xaùc ñònh baèng noäi dung hieän taïi cuûa PC tröø ñi
1.
Chuyeån döõ lieäu töø ROM noäi → RAM noäi (MOVC)
Trong laäp trình, ta coù theå löu vaøo boä nhôù ROM moät baûng döõ
lieäu (ví duï baûng döõ lieäu maõ hieån thò LED 7 ñoaïn) ñeå khi thi haønh
chöông trình thì laàn löôït xuaát ra caùc döõ lieäu ñaõ löu. Vieäc naøy
thöôøng caàn thieát trong ñieàu khieån hieån thò LED 7 ñoaïn hoaëc LED ma
traän theo phöông phaùp queùt. Ví duï ñeå ñieàu khieån 4 LED 7 ñoaïn ñeå
hieån thò soá 1954 theo phöông phaùp queùt, ngöôøi ta duøng maïch phaàn
cöùng nhö sau :

57
JP1

1
2
C3
Power Supply 10uF Reset
a b c d e f g a b c d e f g a b c d e f g a b c d e f g
R2 R1
. . . .
10k 150

f
a
b

d
e

a
b

d
e

a
b

d
e

a
b

d
e

g
c

c
0 AT89C51
U1

40
1 39 a
P1.0 P0.0/AD0

VCC
2 38 b
3 P1.1 P0.1/AD1 37 c
4 P1.2 P0.2/AD2 36 d
5 P1.3 P0.3/AD3 35 e

K
6 P1.4 P0.4/AD4 34 f
P1.5 P0.5/AD5 LED0 LED1 LED 2 LED 3
7 33 g
8 P1.6 P0.6/AD6 32
P1.7 P0.7/AD7
9 31
RST EA 30
10 ALE 29 Q0 Q1 Q2 Q3
11 P3.0/RXD PSEN C2383 C2383 C2383 C2383
12 P3.1/TXD 28 R3 R3 R3 R3
13 P3.2/INT0 P2.7/A15 27
14 P3.3/INT1 P2.6/A14 26 1k 1k 1k 1k
15 P3.4/T0 P2.5/A13 25 L0
16 P3.5/T1 P2.4/A12 24 L3 L1 0 0 0 0
17 P3.6/WR P2.3/A11 23 L2 L2
P3.7/RD P2.2/A10 22 L1 L3
18 P2.1/A9 21 L0
XTAL2 P2.0/A8
12M
19
XTAL1
GND

C1 C2
33p 33p
20

a a
b f b f f b
Soá g g g
hieån c c c c
thò d d

Döõ g f e d c b a g f e d c b a g f e d c b a g f e d c b a
0 0 0 0 0 1 1 0 0 1 1 0 1 1 1 1 0 1 1 0 1 1 0 1 0 1 1 0 0 1 1 0
lieäu
0 6 6 F 6 D 6 6
ñieàu
khieån

Ñeå hieån thò soá 1954 theo phöông phaùp queùt, vi ñieàu khieån phaûi
xuaát tín hieäu lieân tuïc theo chu kyø. Moãi chu kyø queùt goàm coù 4 thôøi
ñoaïn :
 Trong thôøi ñoaïn 1, chæ hieån thò LED 0. Hieån thò soá 1
 Trong thôøi ñoaïn 2, chæ hieån thò LED 1. Hieån thò soá 9
 Trong thôøi ñoaïn 3, chæ hieån thò LED 2. Hieån thò soá 5
 Trong thôøi ñoaïn 4, chæ hieån thò LED 3. Hieån thò soá 4
Sau ñoù quaù trình ñieàu khieån seõ baét ñaàu laïi.
a a
b f b f f b
Soá g g g
hieån c c c c
thò d d

Döõ g f e d c b a g f e d c b a g f e d c b a g f e d c b a
0 0 0 0 0 1 1 0 0 1 1 0 1 1 1 1 0 1 1 0 1 1 0 1 0 1 1 0 0 1 1 0
lieäu
0 6 6 F 6 D 6 6
xuaát ôû
P0
58
Döõ L3 L2 L1 L0 L3 L2 L1 L0 L3 L2 L1 L0 L3 L2 L1 L0
0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0
lieäu
0 1 0 2 0 4 0 8
xuaát ôû
P2
Thôøi Thôøi ñoaïn Thôøi ñoaïn Thôøi ñoaïn Thôøi ñoaïn
gian 1 2 3 4

Trong moät chu kyø queùt chæ coù 1 LED saùng. Trong tröôøng hôïp
duøng 4 LED nhö ví duï treân thì moãi LED coù thôøi gian saùng = ¼ chu kyø
queùt; tính ra ñoä saùng trung bình = ¼ so vôùi möùc saùng lieân tuïc. Neáu
thöïc hieän nhieàu chu kyø queùt thì caùc LED seõ saùng nhaáp nhaùy. Neáu
soá laàn nhaáp nhaùy nhieàu hôn 25 laàn/giaây thì gaàn nhö thaáy LED
saùng lieân tuïc. Khi ñoù moät soá saùng nhaáp nhaùy seõ troâng thaáy
gaàn nhö soá ñoù saùng lieân tuïc. Keát quaû laø nhìn thaáy toaøn boä daõy
soá.
Phöông phaùp queùt coù öu ñieåm laø tieát kieäm ñöôïc soá ñöôøng tín
hieäu ñieàu khieån. Tuy nhieân nhöôïc ñieåm laø khi soá LED taêng leân thì
ñoä saùng trung bình cuûa moãi LED seõ giaûm xuoáng. Khi ñoù ñeå taêng
ñoä saùng trung bình, doøng ñieän qua LED caàn phaûi lôùn hôn so vôùi
tröôøng hôïp cho LED saùng lieân tuïc. Tuy nhieân caàn löu yù möùc toái ña
cho pheùp ñeå khoâng laøm hoûng LED vaø vi ñieàu khieån khoâng bò quaù
taûi. Coù theå duøng maïch ñeäm ñeå traùnh quaù taûi cho vi ñieàu khieån.

Khoâng duøng maïch Duøng maïch ñeäm


ñeäm
+5V

Vcc Vcc

R1
10k
R R2 Q2
Out B548
R 100
max =15mA Out max =800mA
Q1
2.2k C2383
Microcontroller Microcontroller Load
MCS-51 MCS-51

GND GND

Döõ lieäu ñieàu khieån caàn xuaát ra ôû PORT 0 trong ví duï treân coù
theå ñöôïc naïp vaøo ROM ñeå khi thi haønh chöông trình thì ñoïc döõ lieäu
naøy ra. Vuøng nhôù ñeå löu baûng döõ lieäu thöôøng choïn laø vuøng cuoái
cuøng ngay sau leänh cuoái cuûa chöông trình. Khi vieát chöông trình, laäp
trình vieân phaûi khai baùo nhaõn hoaëc ñòa chæ nôi baét ñaàu cuûa vuøng
nhôù döõ lieäu naøy.
VÒ TRÍ CUÛA BAÛNG DÖÕ MAÃU CHÖÔNG YÙ NGHÓA
LIEÄU TRÌNH

59
FLASHROM
ORG 0000h Khai baùo nôi löu
byte maõ leänh
0FFF
Leänh 1 ñaàu tieân
Leänh 2
Vuø
ng nhôù …
coø
n troá
ng

Ñòa chækhôû
i ñaà
u cuû
a

vuø
ng nhôùdöõlieä
u 66
Leänh cuoái
6D
6F ORG #data 16
#data 16 06
Khai baùo nôi
DB baét ñaàu vuøng
06h,06Fh,06Dh,66 nhôù döõ lieäu
Vuø
ng nhôùlöu
chöông trình
h Khai baùo baûng
döõ lieäu
END
0000 Keát thuùc
chöông trình

Chuyeån döõ lieäu töø baûng döõ lieäu ra PORT.


Vieäc chuyeån döõ lieäu töø baûng döõ lieäu (löu trong ROM) ra PORT
goàm 2 böôùc :
Böôùc 1 : Copy döõ lieäu töø baûng döõ lieäu trong ROM vaøo thanh ghi
A
Böôùc 2 : Chuyeån döõ lieäu töø thanh ghi A ra PORT.

Ñeå thöïc hieän böôùc 1, ngöôøi ta phaûi naïp vaøo thanh ghi DPTR (16
bit) ñòa chæ cuûa oâ nhôù mang döõ lieäu ñaàu tieân. Giaû söû oâ nhôù
mang döõ lieäu ñaàu tieân coù ñòa chæ laø 0060h thì leänh : MOV
DPTR,#0060h seõ naïp ñòa chæ 0060h vaøo thanh ghi DPTR. Sau ñoù
naïp cho thanh ghi A soá 00h baèng caùch duøng leänh : MOV A,#00h.
Cuoái cuøng laø duøng leänh : MOVC A,@A+DPTR
Leänh cuoái naøy seõ laáy noäi dung trong A coäng vôùi noäi dung
trong DPTR vaø keát quaû duøng ñeå xaùc ñònh oâ nhôù löu döõ
lieäu, sau ñoù döõ lieäu ñöôïc copy vaø löu vaøo thanh ghi A. Ñaây
chính laø caùch xaùc ñònh ñòa chæ giaùn tieáp.

Ñeå thöïc hieän böôùc 2, ví duï ñeå chuyeån döõ lieäu töø A ra PORT 0,
chæ caàn duøng leänh: MOV P0,A

Ñeå chuyeån döõ lieäu tieáp theo ra PORT 0, caàn thöïc hieän caùc tieáp
theo nhö sau :
MOV A,#01h
MOV DPTR,#0060h
MOVC A,@A+DPTR
MOV P0,A

Ñeán ñaây, ta ñaõ laøm roõ hoaït ñoäng cuûa leänh MOVC A,@A+DPTR.
Leänh naøy cuõng ñöôïc söû duïng vôùi thanh ghi PC, caáu truùc leänh laø :
MOVC A,@A+PC
Ñieàu khaùc bieät giöõa hai leänh treân laø tröôùc khi thöïc hieän leänh :

60
Ta coù theå naïp döõ lieäu vaøo thanh ghi DPTR
Nhöng khoâng theå naïp döõ lieäu vaøo thanh ghi PC.

Ñòa chæ naïp vaøo thanh ghi DPTR laø ñòa chæ cuûa oâ nhôù löu döõ
lieäu ñaàu tieân trong vuøng nhôù döõ lieäu. Vuøng nhôù döõ lieäu khoâng
ñöôïc choàng leân vuøng nhôù chöông trình maø cuõng khoâng neân naèm
caùch xa vuøng nhôù chöông trình (khi ñoù seõ khoâng taän duïng heát boä
nhôù). Vì vaäy nôi baét ñaàu cuûa vuøng nhôù döõ lieäu neân laø vò trí keá
tieáp nôi löu leänh cuoái cuøng trong chöông trình. Vieäc tính toaùn hôïp lyù
ñòa chæ ñaàu cuûa vuøng nhôù döõ lieäu khoâng deã bôûi vì phaûi tính
toaùn xem trong chöông trình coù bao nhieâu leänh vaø moãi leänh cuï theå
chieám bao nhieâu byte. Chính vì vaäy, vieäc tín toaùn naøy ñöôïc thöïc
hieän bôûi trình bieân dòch. Laäp trình vieân chæ vieäc gaùn moät teân
(töùc nhaõn) ngay tröôùc vò trí maø döõ lieäu ñaàu tieân ñöôïc löu (ngay
tröôùc töø DB).
Ví duï nhö sau :
ORG 0000h ; Khai baùo ñòa chæ ñaàu laø
0000h
Leänh 1
Leänh 2


MOV A,#data ; Naïp döõ lieäu “Offset” vaøo
A
MOV DPTR,#du_lieu ; Naïp ñòa chæ ñaàu vuøng
nhôù
döõ lieäu vaøo thanh ghi
DPTR
MOV A,@A+DPTR ; Copy döõ lieäu ôû ñòa chæ
xaùc ñònh bôûi
A+DPTR vaøo A

Leänh cuoái
du_lieu: DB 06h,06Fh,06Dh,66h ; Khai
baùo baûng döõ lieäu
END ; Baùo keát thuùc chöông
trình

Trong tröôøng hôïp naøy khoâng caàn khai baùo nôi baét ñaàu cuûa
vuøng nhôù döõ lieäu. Offset ñöôïc hieåu laø ñoä leäch. Ví duï : tín hieäu
sin chuaån laø coù daïng ñoái xöùng qua truïc hoaønh. Tín hieäu sin chuaån
ñöôïc coäng vôùi thaønh phaàn DC = 2V seõ bò dôøi leân phía treân truïc
hoaønh moät khoaûng töông öùng baèng 2V. Khoaûng dôøi naøy ñöôïc hieåu
laø thaønh phaàn Offset.

61
time 2 time
0 0

Tín hieä
u sin chuaå
n Tín hieä
u sin chuaå
n + Offset 2V

Trao ñoåi döõ lieäu giöõa thanh ghi A vaø RAM ngoaøi (MOVX)
Nhoùm naøy coù 4 leänh vaø chæ ñöôïc duøng khi heä thoáng coù söû
duïng boä nhôù RAM ngoaøi.
LEÄNH YÙ NGHÓA
MOVX A,@Ri Laáy noäi dung trong thanh ghi Ri laøm ñòa chæ
xaùc ñònh oâ nhôù RAM ngoaøi, sau ñoù döõ lieäu
trong oâ nhôù ñöôïc copy vaø löu vaøo A.
(A → RAM ngoaøi).
MOVX Laáy noäi dung trong thanh ghi DPTR laøm ñòa
A,@DPTR chæ xaùc ñònh oâ nhôù RAM ngoaøi, sau ñoù döõ
lieäu trong oâ nhôù ñöôïc copy vaø löu vaøo A.
(A → RAM ngoaøi).
MOVX @Ri,A Laáy noäi dung trong thanh ghi Ri laøm ñòa chæ
xaùc ñònh oâ nhôù RAM ngoaøi, sau ñoù döõ lieäu
trong A ñöôïc copy vaø löu vaøo oâ nhôù RAM
ngoaøi ñaõ xaùc ñònh.
(R ngoaøi → A)
MOVX Laáy noäi dung trong thanh ghi DPTR laøm ñòa
@DPTR,A chæ xaùc ñònh oâ nhôù RAM ngoaøi, sau ñoù döõ
lieäu trong A ñöôïc copy vaø löu vaøo oâ nhôù RAM
ngoaøi ñaõ xaùc ñònh.
(RAM ngoaøi → A).

 NHOÙM LEÄNH LOGIC


Nhoùm leänh logic duøng ñeå thöïc hieän caùc pheùp logic cô baûn goàm
: AND, OR, EXOR giöõa hai döõ lieäu 8 bit. Hai döõ lieäu duøng tröïc tieáp
cho caùc pheùp logic naøy thöôøng naèm trong RAM noäi hoaëc 1 naèm
trong RAM noäi vaø 1 naèm trong boä nhôù chöông trình. Töø gôïi nhôù cho
caùc pheùp AND, OR vaø EX-OR laø :
PHEÙP TÖØ GÔÏI VÍ DUÏ YÙ NGHÓA
TOAÙN NHÔÙ
AND ANL ANL Thöïc hieän pheùp AND noäi
A,#03h dung trong A vôùi döõ lieäu 03h,

62
keát quaû löu vaøo A
OR ORL ORL Thöïc hieän pheùp OR noäi dung
A,#03h trong A vôùi döõ lieäu 03h, keát
quaû löu vaøo A
EX-OR XRL XRL Thöïc hieän pheùp EX-OR noäi
A,#03h dung trong A vôùi döõ lieäu 03h,
keát quaû löu vaøo A

Döõlieä
u thöùnhaá
t 1 0 1 0 1 0 1 1

AND
Pheùp AND
Döõlieä
u thöùhai 0 1 1 1 0 0 0 1

Keá
t quaûpheù
p AND =0 0 1 0 0 0 0 1

Döõlieä
u thöùnhaá
t 1 0 1 0 1 0 1 1
OR
Pheùp OR
Döõlieä
u thöùhai 0 1 1 1 0 0 0 1
=

Keá
t quaûpheù
p OR 1 1 1 1 1 0 1 1

Döõlieä
u thöùnhaá
t 1 0 1 0 1 0 1 1

EX-OR
Pheùp EX-OR 0 1 1 1 0 0 1
Döõlieä
u thöùhai 0
=

Keá
t quaûpheù
p EX-OR 1 1 0 1 1 0 1 0

Cuù phaùp cuûa caùc leänh logic laø :

TEMP 1
ANL ñích,nguoàn
Ñích
ORL ñích,nguoàn
ALU

XRL ñích,nguoàn
Nguoà
n

TEMP 2

63
Hai döõ lieäu 8 bit ñöôïc copy töø ñích vaø nguoàn, sau ñoù ñöa ñeán
khoái ALU ñeå thöïc hieän pheùp logic töông öùng vôùi leänh. Keát quaû sau
khi thöïc hieän xong seõ thay theá döõ lieäu trong ñích. Ñích thöôøng duøng
laø thanh ghi A, coøn nguoàn coù theå laø Rn, oâ nhôù coù ñòa chæ tröïc
tieáp, oâ nhôù coù ñòa chæ giaùn tieáp, moät döõ lieäu ñöôïc löu trong ROM.
Coù moät tröôøng hôïp ngoaïi leä laø duøng döõ lieäu trong A laøm
nguoàn hoaëc döõ lieäu xaùc ñònh laøm döõ lieäu nguoàn, ñích laø moät oâ
nhôù trong RAM coù ñòa chæ tröïc tieáp.

AN A,Rn A AND Rn ; Keát quaû → A


L (n = 0,1,..,7) VD : ANL A,R2
Giaû söû A = 03h; R2 = 01h
A AND R2 ñöôïc keát quaû laø 01h
Keát quaû naøy löu vaøo A neân sau khi thöïc hieän
leänh thì A = 01h
AN A,direct A AND (Noäi dung trong oâ nhôù coù ñòa chæ
L direct); Keát quaû → A
AN A,@Ri Noäi dung trong Ri duøng ñeå xaùc ñònh oâ nhôù, sau
L (i=0 hoaëc ñoù
1) A AND (Noäi dung trong oâ nhôù); Keát quaû → A
AN A,#data A AND (data); Keát quaû → A
L
AN direct,A (Noäi dung trong oâ nhôù coù ñòa chi direct)
L AND A;
Keát quaû → OÂ nhôù coù ñòa chæ direct
AN direct,#dat (Noäi dung trong oâ nhôù coù ñòa chi direct)
L a AND (data);
Keát quaû → OÂ nhôù coù ñòa chæ direct

Caùc leänh ORL vaø XRL cuõng töông töï nhö treân.
Pheùp NOT chæ thöïc hieän ñöôïc vôùi noäi dung trong thanh ghi A
Cuù phaùp cuûa leänh laø : CPL A
Sau leänh naøy, caùc bit trong thanh ghi A bò ñaûo traïng thaùi.

LEÄNH XOAÙ NOÄI DUNG THANH GHI A


Cuù phaùp cuûa leänh laø : CLR A
Sau leänh naøy, A = 00h = 0000 0000

64
 NHOÙM LEÄNH TÍNH TOAÙN
Nhoùm leänh tính toaùn goàm caùc leänh : Coäng, tröø, nhaân, chia,
taêng, giaûm vaø leänh hieäu chænh Binary → BCD.

LEÄNH COÄNG :
Cuù phaùp : ADD ñích,nguoàn (Keát quaû cuûa pheùp coäng
seõ ñöôïc löu vaøo A)
ADD A,Rn
ADD A,direct
ADD A,@Ri
ADD A,#data
Hai soá nhò phaân 8 bit khi ñöôïc coäng vôùi nhau coù theå cho keát
quaû beù hôn, baèng hoaëc lôùn hôn 255. (255 laø giaù trò lôùn nhaát cuûa
soá nhò phaân 8 bit khi taát caû caùc bit ñeàu baèng 1). Tröôøng hôïp keát
quaû > 255, ta noùi raèng pheùp coäng bò traøn. Tröôøng hôïp naøy bit
C trong thanh ghi traïng thaùi seõ ñöôïc set baèng 1 vaø 8 bit thaáp
trong keát quaû cuûa pheùp coäng ñöôïc löu trong A.
Ví duï : Giaû söû A ñang chöùa döõ lieäu baèng 03h = 0000 0011 = 3
R2 ñang chöùa döõ lieäu baèng 14h = 0001 0100 = 20
Leänh ADD A,R2 seõ coù keát quaû laø : 0001 0111 = 23
Keát quaû naøy < 255 töùc laø khoâng bi traøn
Sau leänh coäng treân thì keát quaû 0001 0111 ñöôïc löu vaøo A vaø
côø C trong thanh ghi traïng thaùi khoâng ñöôïc set (töùc C = 0).

Ví duï 2 : Giaû söû A ñang chöùa döõ lieäu baèng A7h = 1010 0111 = 167
R0 ñang chöùa döõ lieäu baèng 95h = 1001 0101 = 149
Leänh coäng : ADD A,R0 seõ cho keát quaû laø : 1 0011 1100 = 316
Keát quaû > 255 vaø laø moät soá 9 bit.
Tröôøng hôïp naøy pheùp coäng bò traøn, côø C trong thanh ghi traïng
thaùi ñöôïc set (töùc C = 1). 8 bit thaáp cuûa keát quaû laø 0011
1100 ñöôïc löu vaøo thanh ghi A.
Sau khi thöïc hieän leänh coäng hai döõ lieäu, chöông trình coù theå
kieåm tra bit C ñeå bieát keát quaû cuûa pheùp coäng coù bò traøn hay
khoâng, töø ñoù quyeát ñònh thöïc hieän reõ nhaùnh chöông trình hay
khoâng.

65
Ví duï :
Leä
nh coä
ng 2 döõlieä
u ADD A,R0 ; coäng döõ lieäu trong A vôùi
döõ lieäu trong R0
JC rel ; rel laø nhaõn nôi chöông trình
Ñuù
ng
C =1 seõ nhaûy ñeán
Sai Leänh keá

Leä
nh keá

LEÄNH COÄNG HAI SOÁ 8 BIT VAØ COÄNG KEÁT QUAÛ VÔÙI BIT C
Cuù phaùp : ADDC ñích,nguoàn (Keát quaû cuûa pheùp coäng
seõ ñöôïc löu vaøo A)
ADDC A,Rn
ADDC A,direct
ADDC A,@Ri
ADDC A,#data
Hoaït ñoäng cuûa leänh ADDC cuõng töông töï nhö leänh ADD, ñieåm
khaùc nhau laø keát quaû sau khi coäng hai soá 8 bit seõ tieáp tuïc ñöôïc
coäng vôùi bit C ñeå coù keát quaû cuoái cuøng. Leänh coäng naøy neáu bò
traøn thì seõ set bit C (töùc C = 1 sau khi thöïc hieän leänh).
VÍ DUÏ VEÀ LEÄNH ADD VÍ DUÏ VEÀ LEÄNH ADDC

1 Bit C

0 0 1 0 0 1 1 1 Döõlieä
u1 0 0 1 0 0 1 1 1 Döõlieä
u1

1 0 0 1 0 1 0 1 Döõlieä
u2 1 0 0 1 0 1 0 1 Döõlieä
u2

1 0 1 1 1 1 0 0 Keá
t quaû(khoâ
ng traø
n) 1 0 1 1 1 1 0 1 Keá
t quaû(khoâ
ng traø
n)

1 Bit C

1 0 1 0 0 1 1 1 Döõlieä
u1 1 0 1 0 0 1 1 1 Döõlieä
u1

1 0 0 1 0 1 0 1 Döõlieä
u2 1 0 0 1 0 1 0 1 Döõlieä
u2

1 0 0 1 1 1 1 0 0 Keá
t quaû(bòtraø
n) 1 0 0 1 1 1 1 0 1 Keá
t quaû(bòtraø
n)

66
LEÄNH TRÖØ HAI SOÁ 8 BIT VAØ TRÖØ KEÁT QUAÛ CHO BIT C
Cuù phaùp : SUBB ñích,nguoàn (Keát quaû cuûa pheùp tröø seõ
ñöôïc löu vaøo A)
SUBB A,Rn
SUBB A,direct
SUBB A,@Ri
SUBB A,#data
Hoaït ñoäng cuûa leänh SUBB töông töï nhö leänh ADDC. Döõ lieäu ôû
ñích – döõ lieäu ôû nguoàn, sau ñoù keát quaû naøy seõ tröø cho bit C ñeå
ñöôïc keát quaû cuoái cuøng, löu trôû laïi vaøo ñích.

Ví duï 1: Giaû söû A = 03h; R0 = 01h; C = 0


Sau leänh : SUBB A,R0 ta ñöôïc A = 02h
Ví duï 2: Giaû söû A = 03h; R0 = 01h; C = 1
Sau leänh : SUBB A,R0 ta ñöôïc A = 01h.
Leänh SUBB coù aûnh höôûng ñeán bit C, neáu soá bò tröø beù hôn soá
tröø thì bit C seõ ñöôïc set leân 1.
Ví duï : A = 03h; R0 = 04h
Sau leänh : SUBB A,R0 thì bit C = 1 do soá bò tröø laø 03h beù hôn
soá tröø laø 04h.

LEÄNH NHAÂN HAI SOÁ 8 BIT


Keát quaû khi nhaân hai soá 8 bit laø moät soá toái ña 16 bit. Vì soá 8 bit
coù giaù trò lôùn nhaát laø 255 neân giaù trò toái ña cuûa pheùp nhaân hai
soá 8 bit laø : 255*255 = 65025 = FE01h. Nhö vaäy ñeå chöùa keát quaû
cuûa pheùp nhaân 2 soá 8 bit caàn coù 2 thanh ghi 8 bit, moät thanh ghi
chöùa 8 bit cao vaø moät thanh ghi chöùa 8 bit thaáp cuûa keát quaû.
Vi ñieàu khieån hoï MCS-51 thöïc hieän pheùp nhaân 2 soá 8 bit khi hai
soá aáy naèm trong hai thanh ghi A vaø B. Keát quaû sau khi thöïc hieän
pheùp nhaân laø 1 soá 16 bit, 8 bit thaáp löu trong A vaø 8 bit cao löu trong
B.
Cuù phaùp cuûa leänh laø : MUL A,B
Ví duï : Giaû söû A = 50h = 80
B = A0h = 160
Keát quaû sau khi thöïc hieän pheùp nhaân : MUL A,B laø soá 16bit
50h*A0h = 80*160 = 12800 = 3200h
Sau pheùp nhaân naøy thì 8 bit thaáp cuûa keát quaû laø 00h löu vaøo A
vaø 8 bit cao cuûa keát quaû laø 32h löu vaøo B.

LEÄNH CHIA HAI SOÁ 8 BIT

67
Töông töï nhöï leänh nhaân, leänh chia 2 soá 8 bit ñöôïc thöïc hieän vôùi
döõ lieäu ban ñaàu naèm trong A vaø B. Leänh DIV A,B seõ thöïc hieän
pheùp chia A/B. Keát quaû cuûa pheùp chia naøy goàm phaàn nguyeân vaø
soá dö. Phaàn nguyeân ñöôïc löu vaøo A vaø soá dö ñöôïc löu vaøo B.
Ví duï : A = 52h = 82
B = 0Ah = 10
 A/B = 8 dö 2
 Phaàn nguyeân laø 8 = 08h seõ löu trong A
 Soá dö laø 2 = 02h seõ löu trong B
 Sau pheùp chia DIV A,B ta coù : A = 08h vaø B = 02h.

LEÄNH TAÊNG NOÄI DUNG THANH GHI LEÂN 1 ÑÔN VÒ


Cuù phaùp :
INC A
INC Rn
INC direct
INC @Ri
INC dptr

LEÄNH GIAÛM NOÄI DUNG THANH GHI LEÂN 1 ÑÔN VÒ


Cuù phaùp :
DEC A
DEC Rn
DEC direct
DEC @Ri

LEÄNH HIEÄU CHÆNH SOÁ NHÒ PHAÂN → SOÁ BCD


Xeùt tröôøng hôïp sau : Ta caàn thöïc hieän maïch ñeám BCD thuaän 2
digit (töùc laø ñeám töø 00 ñeán 99), hieån thò keát quaû treân 2 ñeøn LED
7 ñoaïn vaø chæ duøng 1 PORT xuaát döõ lieäu. 4 bit thaáp cuûa PORT
duøng ñeå ñieàu khieån hieån thò digit haøng ñôn vò vaø 4 bit cao duøng
ñeå ñieàu khieån hieån thò soá haøng chuïc. Trong tröôøng hôïp naøy ta
caàn 2 maïch giaûi maõ soá BCD → LED 7 ñoaïn, sô ñoà phaàn cöùng nhö
hình veõ sau.

68
Thanh ghi PORT
D a

i maõ
b MSB
C c
d

Thanh ghi PORT

Giaû
B e
Thanh ghi A

f
A g 4 bit cao SoáBCD haø
ng chuïc
D a

i maõ
b
C c
d

Giaû
B e
f
A g

4 bit thaá
p SoáBCD haø
ng ñv

LSB

Theo caùch ñieàu khieån naøy, döõ lieäu naèm trong thanh ghi PORT laø
soá BCD 2 digit coù nghóa laø giaù trò nhoùm 4 bit thaáp ≤ 9; giaù trò
nhoùm 4 bit cao ≤ 9. Giaù trò cuûa nhoùm 4 bít thaáp seõ ñöôïc hieån thò
treân LED ñôn vò vaø giaù trò cuûa nhoùm 4 bit cao seõ ñöôïc hieån thò
treân LED haøng chuïc.
Giaûi thuaät ñieàu khieån nhö sau :
Leänh INC A seõ thöïc hieän pheùp toaùn A = A + 1.
Begin Tröôøng hôïp naøy döõ lieäu trong A coù theå
khoâng phaûi laø soá BCD. Ví duï neáu A = 0000
1001 thì sau leänh INC A ta coù
00  A A = 0000 1010
Boán bit thaáp trong A khoâng phaûi laø soá BCD
A =A +1 Leänh DA A coù nhieäm vuï hieäu chænh noäi dung
trong A thaønh soá BCD. Giaûi thuaät thöïc hieän
leänh DA A nhö sau.
XoaùcôøC

DA A S S
A3A2A1A0 >9 AC =1

Ñ Ñ
Delay
A =A +06h
A  PORT
S S
A7A6A5A4 >9 C =1
S Ñ Ñ
Döø
ng
Ñ
A =A +60h
End

69
Ví duï 1 : A = 0001 1010 = 1Ah (4 bit thaáp > 9)
Khi thöïc hieän leänh : DA A, tröôøng hôïp naøy noäi dung cuûa A seõ
ñöôïc coäng theâm 06h = 0000 0110 vaø löu keát quaû trôû laïi A.
4 bit cao 4 bit thaá
p

0 0 0 1 1 0 1 0 1Ah (Keá
t quaûtrong A tröôù
c leä
nh DA A)
+ +
0 0 0 0 0 1 1 0 06h

= 0 0 1 0 0 0 0 0 =20h (Keá
t quaûtrong A sau leä
nh DA A)

Ví duï 2 : A = 0101 0001 = A1h (4 bit cao > 9)


Khi thöïc hieän leänh : DA A, tröôøng hôïp naøy noäi dung cuûa A seõ
ñöôïc coäng theâm 60h = 0110 0000 vaø löu keát quaû trôû laïi A.
4 bit cao 4 bit thaá
p

1 0 1 0 0 0 0 1 A1h (Keá
t quaûtrong A tröôù
c leä
nh DA A)
+ +
0 1 1 0 0 0 0 0 60h

= 0 0 0 0 0 0 0 1 =01h (Keá
t quaûtrong A sau leä
nh DA A)

Ví duï 3 : A = 1001 1010 = 9Ah (4 bit thaáp > 9)


Khi thöïc hieän leänh : DA A, tröôøng hôïp naøy noäi dung cuûa A seõ
ñöôïc coäng theâm 06h = 0000 0110 vaø löu keát quaû vaøo A. Tuy nhieân
keát quaû môùi laïi coù 4 bit cao > 9 neân keát quaû laïi ñöôïc coäng vôùi
60h. Keát quaû cuoái cuøng trong A laø 00h.
4 bit cao 4 bit thaá
p

1 0 0 1 1 0 1 0 9Ah (Keá
t quaûtrong A tröôù
c leä
nh DA A)
+ +
0 0 0 0 0 1 1 0 06h

= 1 0 1 0 0 0 0 0 =A0h
+ +
0 1 1 0 0 0 0 0 60h

= 0 0 0 0 0 0 0 0 = 00h (Keá
t quaûtrong A sau leä
nh DA A)

Quaù trình hieäu chænh trong leänh DA A xaûy ra khi coù 1 trong 4
nguyeân nhaân :
1. Do bit AC = 1

70
2. Do 4 bit thaáp trong A laø A3A2A1A0 > 9
3. Do bit C = 1
4. Do 4 bit cao trong A laø A7A6A5A4 > 9
Ñeå leänh DA A chæ coù taùc duïng do nguyeân nhaân thöù 2 vaø
nguyeân nhaân thöù 4 (töùc laø chæ tieán haønh hieäu chænh khi noäi dung
trong A khoâng phaûi laø soá BCD) thì tröôùc khi thöïc hieän leänh DA A,
phaûi xoaù bit C vaø bit AC trong thanh ghi traïng thaùi. Thöôøng chæ caàn
xoaù bit C vì bit AC = 1 thöôøng ñi keøm vôùi A 3A2A1A0 > 9. Do ñoù caëp
leänh :
CLR C
DA A
thöôøng ñöôïc duøng thay vì chæ coù leänh :
DA A
 NHOÙM LEÄNH ÑIEÀU KHIEÅN REÕ NHAÙNH
Reõ nhaùnh laø vieäc chöông trình khoâng thöïc hieän leänh keá maø
nhaûy ñeán thöïc hieän leänh ôû moät ví trí caùch xa vò trí cuûa leänh hieän
haønh. Reõ nhaùnh vì vaäy thöôøng ñöôïc goïi laø “nhaûy”. Vieäc löïa choïn
reõ nhaùnh chöông trình hay khoâng ñöôïc quyeát ñònh bôûi vieäc kieåm tra
moät ñieàu kieän. Chöông trình seõ reõ nhaùnh neáu pheùp kieåm tra cho
keát quaû ñuùng. Ví duï trong giaûi thuaät giaûi phöông trình baäc 2, vieäc
reõ nhaùnh seõ ñöôïc quyeát ñònh bôûi vieäc kieåm tra ñieàu kieän ∆ < 0.
Trong laäp trình cho vi ñieàu khieån hoï MCS-51, coù hai kieåu reõ
nhaùnh laø hay nhaûy laø nhaûy coù ñieàu kieän vaø nhaûy khoâng ñieàu
kieän.
 Nhaûy coù ñieàu kieän phaûi keøm theo moät pheùp kieåm tra
(thöôøng laø pheùp so saùnh) vaø moät ñòa chæ nôi nhaûy ñeán. Caùc
leänh thuoäc loaïi naøy bao goàm :
JZ rel Nhaûy ñeán rel khi bit Z = 1
(Jump if Z)
JNZ rel Nhaûy ñeán rel khi bit Z = 0
(Jump if Not Z)
JC rel Nhaûy ñeán rel khi bit C = 1
(Jump if C)
JNC Nhaûy ñeán rel khi bit C = 0
(Jump if Not C)
JB bit,rel Nhaûy ñeán rel khi bit = 1
(Jump if Bit)
JNB bit,rel Nhaûy ñeán rel khi bit = 0
(Jump if Not Bit)
JBC bit,rel Nhaûy ñeán rel khi bit = 1, sau ñoù
(Jump if Bit and Clear) xoaù bit
CJNE A,direct,rel So saùnh döõ lieäu trong A vôùi döõ
(Compare and Jump if Not lieäu trong oâ nhôù coù ñòa chæ direct
Equal) vaø nhaûy ñeán rel khi 2 döõ lieäu
khaùc nhau.
CJNE A,#data,rel So saùnh döõ lieäu trong A vôùi data
(Compare and Jump if Not vaø nhaûy ñeán rel khi 2 döõ lieäu
71
Equal) khaùc nhau.
CJNE Rn,#data,rel So saùnh Rn vôùi data vaø nhaûy ñeán
(Compare and Jump if Not rel khi 2 döõ lieäu khaùc nhau.
Equal)
CJNE @Ri,#data,rel Laáy noäi dung trong Ri laøm ñòa chæ
(Compare and Jump if Not xaùc ñònh oâ nhôù, sau ñoù döõ lieäu
Equal) trong oâ nhôù so saùnh vôùi data vaø
nhaûy ñeán rel neáu 2 döõ lieäu
khaùc nhau.
DJNZ Rn,rel Giaûm Rn ñi moät ñôn vò vaø nhaûy
(Decrement and Jump if Not ñeán rel neáu keát quaû khaùc
Zero) khoâng
DJNZ direct,rel Giaûm noäi dung trong oâ nhôù coù
(Decrement and Jump if Not ñòa chæ direct ñi moät ñôn vò vaø
Zero) nhaûy ñeán rel neáu keát quaû
khaùc khoâng.

 Nhaûy khoâng ñieàu kieän khoâng caàn pheùp kieåm tra, chæ caàn
chæ roõ nôi nhaûy ñeán. Tröôøng hôïp ñaëc bieät vôùi leänh trôû veà
töø chöông trình con (leänh RET) vaø leänh trôû veà töø chöông trình
con xöû lyù ngaét (leänh RETI) khoâng caàn ñòa chæ vì tröôùc khi
thöïc hieän caùc chöông trình con naøy, ñòa chæ trôû veà ñaõ ñöôïc
löu tröõ vaøo vuøng nhôù ngaên xeáp vaø seõ ñöôïc töï ñoäng traû laïi
khi thöïc hieän leänh RET hoaëc RETI. Caùc leänh thuoäc loaïi naøy bao
goàm :
ACALL Leänh goïi chöông trình con, chöông trình con khoâng
addr11 ñöôïc naèm caùch leänh goïi quaù 2 kbyte. Addr11 laø
11 bit ñòa chæ thaáp seõ thay theá cho 11 bit thaáp
trong thanh ghi PC ñeå chæ ra nôi nhaûy ñeán.
Addr11 cuõng coù theå thay baèng teân nhaõn chæ ra
nôi nhaûy ñeán.
LCALL Leänh goïi chöông trình con, chöông trình con coù
addr16 theå naèm ôû baát cöù vò trí naøo trong vuøng nhôù
64 kbyte. Addr16 laø 16 bit ñòa chæ seõ thay theá
cho 16 bit trong thanh ghi PC ñeå chæ ra nôi nhaûy
ñeán. Addr16 cuõng coù theå thay baèng teân nhaõn
chæ ra nôi nhaûy ñeán.
RET Leänh trôû veà chöông trình chính khi chöông trình
con thi haønh xong. Leänh naøy ñöôïc ñaët ôû doøng
cuoái cuøng trong chöông trình con.
RETI Leänh trôû veà chöông trình chính khi chöông trình
con phuïc vuï ngaét thi haønh xong. Leänh naøy ñöôïc
ñaët ôû doøng cuoái cuøng trong chöông trình con
phuïc vuï ngaét.
AJMP Leänh nhaûy ñeán moät ñòa chæ môùi caùch vò trí
addr11 hieän haønh khoâng quaù 2 kByte. Addr11 laø 11 bit
ñòa chæ thaáp seõ ñöôïc thay cho 11 bit thaáp trong
thanh ghi PC ñeå chæ ra nôi nhaûy ñeán. Addr11
72
cuõng coù theå thay baèng teân nhaõn chæ ra nôi
nhaûy ñeán.
LJMP Leänh nhaûy ñeán vò trí baát kyø trong vuøng nhôù
addr16 64 kByte. Addr16 laø 16 bit ñòa chæ seõ thay theá
cho 16 bit trong thanh ghi PC ñeå chæ ra nôi nhaûy
ñeán. Addr16 cuõng coù theå thay baèng teân nhaõn
chæ ra nôi nhaûy ñeán.
SJMP rel Leänh nhaûy ngaén. Chöông trình coù theå nhaûy tôùi
ñòa chæ cao hôn hoaëc nhaûy luøi veà ñòa chæ thaáp
hôn ñòa chæ leänh hieän haønh. Taàm nhaûy tôùi
hoaëc luøi khoâng caùch quaù 128 byte so vôùi ñòa
chæ hieän taïi. Rel laø teân nhaõn chæ ra nôi nhaûy
ñeán.
JMP Nhaûy ñeán ñòa chæ ñöôïc xaùc ñònh baèng noäi
@A+DPTR dung trong A coäng vôùi noäi dung trong DPTR.

 NHOÙM LEÄNH XÖÛ LYÙ BIT


Vi ñieàu khieån hoï MCS-51 coù khaû naêng xöû lyù bit, coù nghóa laø
noù coù theå can thieäp vaøo töøng bit rieâng leû trong 1 byte maø hoaøn
toaøn khoâng aûnh höôûng ñeán traïng thaùi cuûa caùc bit khaùc trong
cuøng byte ñoù. Nhoùm leänh xöû lyù bit bao goàm caùc leänh sau :
SETB C Set bit C, sau leänh naøy bit C = 1
CLR C Xoaù bit C, sau leänh naøy bit C = 0
CPL C Ñaûo traïng thaùi hieän haønh cuûa bit C
SETB Set bit ôû ñòa chæ bit, coù theå thay ñòa chæ baèng teân
bit cuûa bit neáu bit ñoù coù teân.
Ví duï : SET P1.0
CLR bit Xoaù bit ôû ñòa chæ bit, coù theå thay ñòa chæ baèng teân
cuûa bit neáu bit ñoù coù teân.
Ví duï : CLR P1.0
CPL bit Ñaûo traïng thaùi hieän haønh cuûa bit ôû ñòa chæ bit, coù
theå thay ñòa chæ baèng teân cuûa bit neáu bit ñoù coù
teân. Ví duï : CPL P1.0
ANL Thöïc hieän pheùp AND giöõa bit C vôùi bit ôû ñòa chæ bit,
C,bit keát quaû löu vaøo C
Coù theå thay ñòa chæ bit baèng teân cuûa bit neáu bit coù
teân
ANL Thöïc hieän pheùp AND giöõa bit C vôùi buø cuûa bit ôû ñòa
73
C,/bit chæ bit, keát quaû löu vaøo C. Coù theå thay ñòa chæ bit
baèng teân cuûa bit neáu bit coù teân
ORL Thöïc hieän pheùp OR giöõa bit C vôùi bit ôû ñòa chæ bit,
C,bit keát quaû löu vaøo C
Coù theå thay ñòa chæ bit baèng teân cuûa bit neáu bit coù
teân
ORL Thöïc hieän pheùp OR giöõa bit C vôùi buø cuûa bit ôû ñòa
C,/bit chæ bit, keát quaû löu vaøo C
Coù theå thay ñòa chæ bit baèng teân cuûa bit neáu bit coù
teân
MOV Chuyeån traïng thaùi cuûa bit ôû ñòa chæ bit vaøo C
C,bit Coù theå thay ñòa chæ bit baèng teân cuûa bit neáu bit coù
teân
MOV Chuyeån traïng thaùi cuûa C vaøo bit ôû ñòa chæ bit.
bit,C Coù theå thay ñòa chæ bit baèng teân cuûa bit neáu bit coù
teân

5. BAÛNG TOÙM TAÉT TAÄP LEÄNH CUÛA VI ÑIEÀU KHIEÅN HOÏ MCS-51

CAÙC KYÙ HIEÄU DUØNG TRONG BAÛNG


Kyù hieäu YÙ nghóa
(*)A Noäi dung trong thanh ghi A
(_*)A Boán bit thaáp trong A
(*_)A Boán bit cao trong A
(*)Rn Noäi dung trong thanh ghi Rn
(*)Ri Noäi dung trong oâ nhôù Ri
(*)A+DPTR Noäi dung trong oâ nhôù coù ñòa chæ
xaùc ñònh bôûi A + DPTR
(*),direct Noäi dung trong oâ nhôù coù ñòa chæ
direct
(**)DPTR Noäi dung trong thanh ghi DPTR (2 byte)
(*)(*)Ri Noäi dung trong oâ nhôù coù ñòa chæ
xaùc ñònh bôûi noäi dung trong Ri
data Döõ lieäu 8 bit
data16 Döõ lieäu 16 bit
→ Chieàu chuyeån döõ lieäu

74
[(*)(*)Ri∈EXR] Noäi dung trong oâ nhôù ∈ RAM ngoaøi
coù ñòa chæ xaùc ñònh bôûi noäi dung
trong thanh ghi Ri
[(*)(*)DPTR∈ Noäi dung trong oâ nhôù ∈ RAM ngoaøi
EXR] coù ñòa chæ xaùc ñònh bôûi noäi dung
trong thanh ghi DPTR

BAÛNG TOÙM TAÉT CAÙC LEÄNH

 NHOÙM LEÄNH DUY CHUYEÅN DÖÕ LIEÄU


Dung Thôøi gian thöïc
ST Leänh YÙ nghóa
löôïng hieän
T
(soá (soá chu kyø
byte) maùy)
1 MOV A,Rn (*)Rn → (*)A 1 1
2 MOV A,direct (*)direct → (*)A 2 1
3 MOV A,@Ri (*)(*)Ri → (*)A 1 1
4 MOV A,#data data → (*)A 2 1
5 MOV Rn,A (*)A → (*)Rn 1 1
6 MOV Rn,direct (*)direct → (*)Rn 2 2
7 MOV Rn,#data data → (*)Rn 2 1
8 MOV @Ri,A (*)A → (*)(*)Ri 1 1
9 MOV @Ri,direct (*)direct → (*)(*)Ri 2 2
10 MOV @Ri,#data data → (*)(*)Ri 2 1
11 MOV direct,A (*)A → (*)direct 2 1
12 MOV direct,Rn (*)Rn→ (*)direct 2 2
13 MOV direct,dire (*)direct → 3 2
ct (*)direct
14 MOV direct,@Ri (*)(*)Ri → (*)direct 2 2
15 MOV direct,#da data → (*)direct 3 2
ta
16 MOV DPTR,#da data16 → (**)DPTR 3 2
ta16
17 M A,@A+DPT (*)(*)A+DPTR → 1 2
OVC R (*)A
18 M A,@A+PC (*)(*)A+PC → (*)A 1 2
OVC

19 M A,@Ri [(*)(*)Ri∈EXR] → 1 2
OVX (*)A

75
20 M A,@DPTR [(*)(*)DPTR]∈EXR→ 1 2
OVX (*)A
21 M @Ri,A (*)A → [(*)(*)Ri∈ 1 2
OVX EXR]
22 M @DPTR,A (*)A→[(*)(*)DPTR∈ 1 2
OVX EXR]

23 P direct (*)direct → Ngaên 2 2


USH xeáp
24 POP direct Ngaên xeáp → 2 2
(*)direct

25 XCH A,Rn Ñoåi (*)A vôùi 1 1


(*)Rn
26 XCH A,direct Ñoåi (*)A vôùi 2 1
(*)direct
27 XCH A,@Ri Ñoåi (*)A vôùi 1 1
(*)(*)Ri
28 X A,@Ri Ñoåi (_*)A vôùi 1 1
CHD (_*)(*)Ri

 NHOÙM LEÄNH LOGIC


Dung Thôøi gian
ST Leänh YÙ nghóa
löôïng (soá chu kyø
T
(soá maùy)
byte)
29 ANL A,Rn [(*)A AND (*)Rn] → (*)A 1 1
30 ANL A,direct [(*)A AND (*)direct] → 2 1
(*)A
31 ANL A,@Ri [(*)A AND (*)(*)Ri] → (*)A 1 1
32 ANL A,#data [(*)A AND data] → (*)A 2 1
33 ANL direct,A [(*)direct AND (*)A] → 2 1
(*)direct
34 ANL direct,# [(*)direct AND data] → 3 2
data (*)direct
35 ORL A,Rn [(*)A OR (*)Rn] → (*)A 1 1
36 ORL A,direct [(*)A OR (*)direct] → (*)A 2 1
37 ORL A,@Ri [(*)A OR (*)(*)Ri] → (*)A 1 1
38 ORL A,#data [(*)A OR data] → (*)A 2 1
39 ORL direct,A [(*)direct OR (*)A] → 2 1

76
(*)direct
40 ORL direct,# [(*)direct OR data] → 3 2
data (*)direct

41 XRL A,Rn [(*)A EX-OR (*)Rn] → (*)A 1 1


42 XRL A,direct [(*)A EX-OR (*)direct] → 2 1
(*)A
43 XRL A,@Ri [(*)A EX-OR (*)(*)Ri] → 1 1
(*)A
44 XRL A,#data [(*)A EX-OR data] → (*)A 2 1
45 XRL direct,A [(*)direct EX-OR (*)A]→ 2 1
(*)direct
46 XRL direct,# [(*)direct EX-OR data]→ 3 2
data (*)direct

47 CPL A Ñaûo caùc bit trong 1 1


thanh ghi A
48 CLR A Xoaù thanh ghi A 1 1

49 RL A Dòch traùi caùc bit trong 1 1


A

C A7 A6 A5 A4 A3 A2 A1 A0

50 RLC A Dòch traùi caùc bit trong 1 1


A qua C

C A7 A6 A5 A4 A3 A2 A1 A0

51 RR A Dòch phaûi caùc bit 1 1


trong A

A7 A6 A5 A4 A3 A2 A1 A0 C

52 RRC A Dòch phaûi caùc bit 1 1


trong A qua C

A7 A6 A5 A4 A3 A2 A1 A0 C

53 S A Hoaùn ñoåi (_*)A vôùi 1 1


WAP (*_)A

77
A7 A6 A5 A4 A3 A2 A1 A0

 NHOÙM LEÄNH TÍNH TOAÙN


Dung Thôøi gian
ST Leänh YÙ nghóa
löôïng (soá chu kyø
T
(soá maùy)
byte)
54 ADD A,Rn [(*)A + (*)Rn] → (*)A 1 1
55 ADD A,direct [(*)A + (*)direct] → (*)A 2 1
56 ADD A,@Ri [(*)A + (*)(*)Ri] → (*)A 1 1
57 ADD A,#data [(*)A + data] → (*)A 2 1

58 A A,Rn [(*)A + (*)Rn + (*)C] → 1 1


DDC (*)A
59 A A,direct [(*)A + (*)direct + (*)C] 2 1
DDC → (*)A
60 A A,@Ri [(*)A + (*)(*)Ri + (*)C] → 1 1
DDC (*)A
61 A A,#data [(*)A + data + (*)C] → 2 1
DDC (*)A

62 S A,Rn [(*)A - (*)Rn - (*)C] → 1 1


UBB (*)A
63 S A,direct [(*)A - (*)direct - (*)C] → 2 1
UBB (*)A
64 S A,@Ri [(*)A - (*)(*)Ri - (*)C] → 1 1
UBB (*)A
65 S A,#data [(*)A - data - (*)C] → (*)A 2 1
UBB

66 MUL A,B (*)A.(*)B → (*)B(*)A 1 4


67 DIV A,B (*)A/(*)B → (*)A, soá dö 1 4
→ (*)B

68 INC A [(*)A + 1] → (*)A 1 1


69 INC Rn [(*)Rn + 1] → (*)Rn 1 1
70 INC direct [(*)direct + 1] → 2 1
(*)direct
71 INC @Ri [(*)(*)Ri + 1] → (*)(*)Ri 1 1

78
72 DEC A [(*)A + 1] → (*)A 1 1
73 DEC Rn [(*)Rn + 1] → (*)Rn 1 1
74 DEC direct [(*)direct + 1] → 2 1
(*)direct
75 DEC @Ri [(*)(*)Ri + 1] → (*)(*)Ri 1 1

76 DA A Hieäu chænh Binary to 1 1


BCD

 NHOÙM LEÄNH ÑIEÀU KHIEÅN REÕ NHAÙNH


Dung Thôøi gian
ST Leänh YÙ nghóa
löôïng (soá chu kyø
T
(soá maùy)
byte)
77 A addr11 Goïi chöông trình con 2 2
CALL trong taàm 2kbyte
78 LCAL addr16 Goïi chöông trình con 3 2
L ôû baát kyø nôi naøo
trong taàm 64 kbyte

79 RET Trôû veà chöông trình 1 2


chính
80 RETI Trôû veà chöông trình 1 2
chính

81 A addr11 Nhaûy ngaén trong 2 2


JMP taàm 2 kbyte
82 LJMP addr16 Nhaûy ñeán vò trí baát 3 2
kyø
83 SJMP rel Nhaûy ngaén trong 2 2
taàm 128 byte
84 JMP @A+DPTR Nhaûy ñeán ñòa chæ 1 2
xaùc ñònh bôûi A +
DPTR

85 JZ rel Nhaûy khi bit Z = 1 2 2


86 JNZ rel Nhaûy khi bit Z = 0 2 2

87 JC rel Nhaûy khi bit C = 1 2 2

79
88 JNC rel Nhaûy khi bit C = 0 2 2

89 JB bit,rel Nhaûy khi bit ôû ñòa 3 2


chæ bit = 1
90 JBC bit,rel Nhaûy khi bit ôû ñòa 3 2
chæ bit = 1, sau ñoù
xoaù bit
91 JNB bit,rel Nhaûy khi bit ôû ñòa 3 2
chæ bit = 0

92 CJNE A,direct,re So saùnh (*)A vôùi 3 2


l (*)direct
Nhaûy neáu keát quaû
khaùc nhau
93 CJNE A,#data,re So saùnh (*)A vôùi 3 2
l data
Nhaûy neáu keát quaû
khaùc nhau
94 CJNE Rn,#data, So saùnh (*)Rn vôùi 3 2
rel data
Nhaûy neáu keát quaû
khaùc nhau

95 CJNE @Ri,#data So saùnh (*)(*)Ri vôùi 3 2


,rel data
Nhaûy neáu keát quaû
khaùc nhau

96 DJNZ Rn,rel Giaûm (*)Rn moät ñôn 2 2



Nhaûy khi keát quaû
khaùc 0
97 DJNZ direct,rel Giaûm (*)direct moät 3 2
ñôn vò
Nhaûy khi keát quaû
khaùc 0

98 NOP Khoâng hoaït ñoäng 1 1


(No Operation)

 NHOÙM LEÄNH XÖÛ LYÙ BIT


Dung Thôøi gian
ST Leänh YÙ nghóa
löôïng (soá chu kyø
T
(soá maùy)

80
byte)
99 CLR C Xoaù bit C 1 1
10 CLR bit Xoaù bit ôû ñòa chæ 2 1
0 bit

10 S C Set bit C 1 1
1 ETB
10 S bit Set bit ôû ñòa chæ bit 2 1
2 ETB

10 CPL C Ñaûo traïng thaùi bit C 1 1


3
10 CPL bit Ñaûo traïng thaùi bit 2 1
4 ôû ñòa chæ bit

10 ANL C,bit [(*)C AND (*)bit] → (*)C 2 2


5
10 ANL C,/bit [(*)C AND (/*)bit] → 2 2
6 (*)C

10 ORL C,bit [(*)C OR (*)bit] → (*)C 2 2


7
10 ORL C,/bit [(*)C OR (/*)bit] → (*)C 2 2
8

10 MOV C,bit (*)C → (*)bit 2 1


9
11 MOV bit,C (*)bit → (*)C 2 2
0

6. GIÔÙI THIEÄU CHÖÔNG TRÌNH BIEÂN DÒCH KEIL C51

Trình bieân dòch KEIL C51 laø 1 chöông trình laäp trình, moâ phoûng vi
ñieàu khieån ñöôïc söû duïng khaù phoå bieán, ñôn giaûn. Baïn coù theå
LOAD mieãn phí treân maïng. Caùc böôùc tieán haønh nhö sau :
Böôùc 1 :
 Vaøo http:/www.google.com
 Ñaùnh vaøo töø khoaù : Keil C51
 Nhaán nuùt : Tìm vôùi Google

81
Böôùc 2 :

Click vaøo
ñaây

Böôùc 3 :

82
Choïn muïc
naøy
Böôùc 4 :

Choïn muïc
naøy

83
Böôùc 5 : Ñieàn ñaày ñuû caùc thoâng tin caù nhaân theo yeâu caàu vaø
choïn Submit

84
Böôùc 6 : Download veà maùy (chöông trình coù dung löôïng khoaûng
20Mbyte)

Click
vaøo
ñaây

Böôùc 7 : Caøi ñaët vaø söû duïng


Sau khi LOAD chöông trình veà maùy, tieán haønh caøi ñaët bình thöôøng
vaø söû duïng. Shortcut cuûa chöông trình coù daïng nhö sau :

LAÄP TRÌNH TRONG KEIL UVISION3

85
Böôùc 1 : Khôûi ñoäng Keil uVision3 vaø choïn New Project (moät döï aùn
môùi)

Böôùc 2 : Ñaët teân cho Project vaø choïn Save

Böôùc 3 : Choïn vi ñieàu khieån vaø OK

86
Choïn No

Böôùc 4 : Môû moät file môùi

87
Böôùc 5 : Choïn Save As ñeå löu File

88
Teân file coù phaàn môû roäng laø .asm (tröôøng hôïp chöông vieát chöông
trình baèng hôïp ngöõ : Assembly)

Böôùc 6 : Kích vaøo daáu + ôû ñaàu doøng Target 1, ñaët troû vaøo Source
Group 1 vaø kích nuùt phaûi, sau ñoù choïn Add Files to Group ‘Source Group
1’

Böôùc 7 : Choïn teân File vöøa löu ôû böôùc 5

89
Baám Add vaø sau ñoù laø Close ñeå ñoùng cöûa soå hieän haønh laïi.

Böôùc 8 : Baét ñaàu soaïn thaûo chöông trình


Ví duï : Vieát chöông trình naïp vaøo thanh ghi A soá 03h = 0000 0011 vaø
sau ñoù xuaát soá naøy ra PORT 0. Chöông trình ñöôïc vieát nhö sau :

Böôùc 9 : Khai baùo caùc tuyø choïn tröôùc khi bieân dòch chöông trình
sang maõ maùy.
 Vaøo Project
 Choïn Options for Target ‘Target 1’
90
Trong cöûa soå döôùi ñaây, choïn laïi taàn soá cuûa thaïch anh (Xtal) phuø
hôïp. Ví duï choïn laïi 12MHz.

Kích vaøo muïc Output vaø choïn Create HEX File


Chæ khi naøo muïc naøy ñöôïc choïn thì trình bieân dòch môùi taïo ra file.
HEX ñeå naïp cho vi ñieàu khieån veà sau.

Böôùc 10 : Bieân dòch chuông trình chöông trình

91
Kích vaøo
ñaây Soá hieån thò ôû ñaây
cho bieát chöông
trình coù dung löôïng
bao nhieâu byte

Khoâng coù
khuyeán caùo

Chöông trình
khoâng coù loãi
Böôùc 11 : Chaïy moâ phoûng

Kích vaøo
ñaây

92
Choïn PORT 0
ñeå xem keát
quaû xuaát

Kích vaøo ñaây


ñeå chaïy
chöông trình

Döøng chöông trình

Kích vaøo ñaây


ñeå döøng
chöông trình

Keát quaû chaïy chöông trình

93
Keát quaû sau khi chaïy moâ
phoûng, döõ lieäu xuaát ra
treân PORT 0 laø 0000 0011 =
03h (ñuùng vôùi yeâu caàu).

Trôû vaø maøn hình soaïn thaûo.


Sau khi döøng chöông trình, coù theå trôû veà maøn hình soaïn thaûo ñeå
söûa ñoåi, boå sung chöông trình, sau ñoù tieán haønh bieân dòch laïi vaø
chaïy laïi ñeà kieåm tra (neáu caàn thieát).

Sau khi döøng chöông trình,


kích vaøo nuùt naøy neáu
muoán trôû veà maøn hình
soaïn thaûo

Naïp chöông trình cho vi ñieàu khieån.


Sau khi soaïn thaûo, bieân dòch vaø chaïy moâ phoûng cho keát quaû
ñuùng yeâu caàu, baïn coù theå naïp chöông trình vaøo vi ñieàu khieån ñeå

94
chaïy thaät. Vieäc naøy ñöôïc thöïc hieän ñôn giaûn theo caùc höôùng daãn
trong phaàn 7. File HEX maø trình bieân dòch taïo ra ñöôïc löu trong thö muïc
cuøng teân vôùi Flie chöông trình ñang soaïn thaûo. Ñöôøng daãn ñeán thö
muïc naøy ñöôïc hieån thò ôû goùc beân döôùi maøn hình trong quaù trình
chöông trình ñang ñöôïc moâ phoûng.

7. GIÔÙI THIEÄU KIT NAÏP VI ÑIEÀU KHIEÅN

Caùc KIT naïp vi ñieàu khieån hieän nay ñöôïc baùn roäng raõi treân thò
tröôøng vôùi giaù khaù khoâng quaù ñaét. Coù loaïi KIT naïp ña naêng coù
theå naïp cho nhieàu hoï vi ñieàu khieån (AVR, PIC, hoï MCS-52, hoï MCS-51).
Coù loaïi KIT chæ ñöôïc thieát keá daønh rieâng cho moät hoï vi ñieàu khieån
naøo ñoù, caùc KIT loaïi naøy giaù reû hôn. Caùc baïn coù theå cho loaïi KIT
do nhoùm TM e-DESIGN thieát keá.

HDSD KIT NAÏP 89C51/52/55 & (89S51/52)*


* (rieâng ñoái vôùi 89S51/52 xem höôùng daãn ôû döôùi)

Slot gaén
caùp giao
tieáp vôùi Socket 40
maùy tính pins ñeå
qua coång gaén vi
COM ñieàu
khieån caàn
Ñeøn chæ naïp, löu yù
thò traïng gaén ñuùng
thaùi
(saùng khi Vi ñieàu
khieån chuû
ñieàu
khieån
Ñeøn hoaït ñoäng
POWER cuûa KIT

Hình daïng KIT naïp


Phaàn meàm: Kit naïp 89C51/52/55 (40 chaân) laø loaïi kit naïp nhoû goïn
vaø giaù reû. KIT ñöôïc thieát keá vaø cung caáp bôûi TM e-DESIGN,
duøng phaàn meàm EZ-Downloader, version 4.1. Phaàn meàm naøy söû
duïng treân Win98, Me, NT, 2000, XP. Töï nhaän daïng coång COM 1
vaø 2, töï nhaän daïng phaàn cöùng (KIT) vaø chip naïp. Phaàn meàm
naøy cuõng ñöôïc söû duïng cho KIT naïp vi xöû lyù 20 chaân
89C2051/4051 cuûa TM e-DESIGN.
Phaàn cöùng:
 Kích thöôùc: 75mm x 90mm.
 Nguoàn cung caáp: ADAPTOR DC 13V ÷ 18V 250mA caém qua Jack DC.
 Giao dieän: RS-232, 9 pin “D” Connector.
 Toác ñoä döõ lieäu: 9600 bps, 8 bit no parity, 1 stop, no Flow Controll.

95
 Daïng File naïp: Intel 8-bit HEX.
Keát noái vôùi maùy tính (PC)

 Caáp nguoàn cho kit qua jack DC. LED POWER maøu ñoû saùng, LED xanh
taét.
 Caém caùp noái vôùi coång COMx (x laø 1 hoaëc 2) vaø coång DB-9 cuûa
kit naïp.
 Chaïy phaàm meàm EZDL4 trong ñóa CD keøm theo saûn phaåm khi
mua. Phaàn meàm seõ töï tìm coång COM vaø thieát bò.
 Giao dieän nhö sau:

Löu yù: Khi chöa gaén chip vaøo ZIF Socket hoaëc Chip naïp khoâng
nhaän daïng ñöôïc phaàn meàm seõ coù hieän töôïng nhaáp nhaùy raát
nhanh taïi vò trí coù haøng chöõ “Identify target chip…” laø “try to
connect by COM1”. Tröôøng hôïp naøy thöïc ra laø KIT vaø phaàn meàm
ñaõ hoaït ñoäng toát. Baïn haõy laøm tieáp böôùc sau:
• Gaén Chip caàn naïp 89C51/52/55 vaøo ZIF Socket (löu yù laø chíp
caàn naïp gaén cuøng chieàu vôùi chíp MASTER U1 töùc laø chaân soá
1 naèm ôû höôùng caàn gaït cuûa ZIP Socket).
• Seõ coù giao dieän nhö sau (giaû söû gaén chip 89C52):

• Nhaán choïn vaøo oâ Lock ñeå khoùa choáng sao cheùp sau khi naïp
(Chip vaãn coù theå naïp laïi sau khi ñaõ bò khoùa).
• Nhaán Send ñeå tìm file HEX caàn naïp.
• Nhaán Read ñeå cheùp noäi dung trong Chip vaøo ñóa (neáu Chip ñaõ
bò khoùa thì keát quaû ñoïc ñöôïc chæ laø nhöõng kyù töï “FFFFF…”
-Khoâng söû duïng ñöôïc.

96
• Trong quaù trình ghi LED maøu xanh (Write LED) saùng. Quaù trình ghi
keát thuùc LED naøy taét.
• Giao dieän trong quaù trình ghi nhö sau:

• Baïn coù theå duøng File: test.hex trong ñóa CD baùn keøm theo KIT
naïp ñeå naïp thöû vaø coù theå ñoïc thöû chip sau khi naïp.
• Neáu baïn thöôøng xuyeân laøm vieäc vôùi KIT naïp, baïn cheùp file
EZDL4 trong CD leân ñóa cöùng. Taïo moät shortcut treân dekstop ñeå
deå söû duïng (vaøo Start -> setting ->Taskbar & Start menu…->
advance -> Add...).
• Neáu phaàn cöùng bò loãi thì phaàn meàm seõ khoâng nhaän daïng
ñöôïc luùc ñoù ta seõ thaáy nhö hình sau:

• Vôùi hieän töôïng loãi nhö treân, coù nhieàu nguyeân nhaân. Baïn
phaûi kieåm tra laïi caùc keát noái nhö:
1. Coång COM maùy tính bò hö (thöû ñoåi qua coång khaùc, xem
laïi caáu hình trong Bios, phaàn quaûn lí thieát bò cuûa Windows
…)
2. Kieåm tra ñieän aùp DC cung caáp, khaû naêng taûi/ chaát
löôïng cuûa adaptor. Neáu LED Power khoâng saùng thì KIT chöa
coù nguoàn, kieåm tra laïi oå caém ñieän …
3. Caùp noái vôùi PC ñöùt, tieáp xuùc chöa toát.
4. Chip Master U2 hö.
5. moät soá tröôøng hôïp chöông trình nhaän daïng ñöôïc chip naïp,
nhöng laïi bò loãi trong quaù trình ghi, ñoïc, xoùa, lock…vv baïn
caàn phaûi laøm laïi caùc thao taùc nhö: khôûi ñoäng laïi phaàn
meàm, phaàn cöùng vaø laëp laïi thao taùc ñoïc ghi…. Chip naïp

97
hö, keùm chaát löôïng laø moät trong nhöõng nguyeân nhaân
thöôøng gaëp. Baïn thöû thay chip khaùc thöû xem!
6. Moät ñieàu quan troïng baïn phaûi löu yù laø duø theá naøo
cuoái cuøng baïn phaûi gaén chip caàn naïp (coøn toát) vaøo ZIF
socket vaø xem chöông trình coù nhaän daïng ñöôïc chip ñoù hay
khoâng roài môùi keát luaän ñöôïc KIT naøy coù bò hö hay
khoâng.

8. KIT THÖÏC TAÄP VI ÑIEÀU KHIEÅN 89C51

Phaàn
naøy trình baøy kit thöïc taäp vi ñieàu khieån ñôn giaûn nhaát
giuùp hoïc vieân coù theå töï laép raùp döïa theo sô ñoà nguyeân lyù vaø sô
ñoà maïch in cho tröôùc. Hoïc vieân coù theå söû duïng kit naøy ñeå laøm
baøi taäp ôû nhaø ñeå reøn luyeän kyõ naêng laäp trình.

Sô ñoà nguyeân lyù :


R_array0 1k
1
2
3
4
5
6
7
8
9
P0.0

P0.4

P0.7
P0.3

P0.6
P0.1
P0.2

P0.5
+5v

20
JL1 JP1 UP0 RP0 LEDP0
L1.0 P1.0 P0.0 2 18 1 16 1 16
1 L1.1 1 P1.1 P0.1 3 A1 B1 17 2 15 2 15
2 2 A2 B2

VCC
L1.2 P1.2 U1 P0.2 4 16 3 14 3 14
3 L1.3 3 P1.3 P0.3 5 A3 B3 15 4 13 4 13
4 L1.4 4 P1.4 P1.0 1 40 +5v JP0 P0.4 6 A4 B4 14 5 12 5 12
5 L1.5 5 P1.5 P1.1 2 P1.0 VCC 39 P0.0 P0.0 P0.5 7 A5 B5 13 6 11 6 11
6 L1.6 6 P1.6 P1.2 3 P1.1 P0.0/A D0 38 P0.1 P0.1 1 P0.6 8 A6 B6 12 7 10 7 10
7 L1.7 7 P1.7 P1.3 4 P1.2 P0.1/A D1 37 P0.2 P0.2 2 P0.7 9 A7 B7 11 8 9 8 9
8 8 P1.4 5 P1.3 P0.2/A D2 36 P0.3 P0.3 3 A8 B8
P1.5 6 P1.4 P0.3/A D3 35 P0.4 P0.4 4 1 330
JL3 JP3 P1.6 7 P1.5 P0.4/A D4 34 P0.5 P0.5 5 19 DIR
P1.6 P0.5/A D5 6 G
GND
L3.0 P3.0 P1.7 8 33 P0.6 P0.6
1 L3.1 1 P3.1 Reset 9 P1.7 P0.6/A D6 32 P0.7 P0.7 7
2 2 RST P0.7/A D7 8 74LS245
L3.2 P3.2 P3.0 10 31 +5v
10

3 L3.3 3 P3.3 P3.1 11 P3.0/RXD EA/VPP 30


4 L3.4 4 P3.4 P3.2 12 P3.1/TXD ALE/PROG 29 JP2
5 L3.5 5 P3.5 P3.3 13 P3.2/INT0 PSEN 28 P2.7 P2.0 +5v 0
6 L3.6 6 P3.6 P3.4 14 P3.3/INT1 P2.7/A15 27 P2.6 P2.1 1
7 7 P3.4/T0 P2.6/A14 2
20

L3.7 P3.7 P3.5 15 26 P2.5 P2.2 UP2 RP2 LEDP2


8 8 P3.6 16 P3.5/T1 P2.5/A13 25 P2.4 P2.3 3 P2.0 2 18 1 16 1 16
P3.7 17 P3.6/WR P2.4/A12 24 P2.3 P2.4 4 P2.1 3 A1 B1 17 2 15 2 15
C1 P3.7/RD P2.3/A11 5 A2 B2
VCC

JN 18 23 P2.2 P2.5 P2.2 4 16 3 14 3 14


N0 19 XTAL2 P2.2/A10 22 P2.1 P2.6 6 P2.3 5 A3 B3 15 4 13 4 13
1 N1 33p X1 XTAL1 P2.1/A9 P2.0 P2.7 7 P2.4 A4 B4
20 21 6 14 5 12 5 12
2 N2 12M GND P2.0/A8 8 P2.5 7 A5 B5 13 6 11 6 11
3 C2 A6 B6
N3 P2.6 8 12 7 10 7 10
4 N4 AT89C51 P2.7 9 A7 B7 11 8 9 8 9
5 N5 33p A8 B8
6 N6 +5v 1 330
7 N7 19 DIR
8 0 G
GND

S0
N0 74LS245
SW1 R-array1
10

1 16 L1.0 L1.0 S1
2 15 L1.1 L1.1 1 N1
3 14 L1.2 L1.2 2 +5v 0
4 13 L1.3 L1.3 3
4 S2
20

5 12 L1.4 L1.4 1k N2 UP1 RP1 LEDP1


6 11 L1.5 L1.5 5 P1.0 2 18 1 16 1 16
7 10 L1.6 L1.6 6 P1.1 3 A1 B1 17 2 15 2 15
7 S3 A2 B2
VCC

8 9 L1.7 L1.7 N3 P1.2 4 16 3 14 3 14


8 P1.3 5 A3 B3 15 4 13 4 13
9 P1.4 6 A4 B4 14 5 12 5 12
S4 A5 B5
N4 P1.5 7 13 6 11 6 11
P1.6 8 A6 B6 12 7 10 7 10
SW3 R-array3 P1.7 9 A7 B7 11 8 9 8 9
S5 A8 B8
1 16 L3.0 L3.0 N5
2 15 L3.1 L3.1 1 +5v 1 330
3 14 L3.2 L3.2 2 19 DIR
S6
3 G
GND

4 13 L3.3 L3.3 N6
5 12 L3.4 L3.4 4
5 1k 74LS245
6 11 L3.5 L3.5 S7
10

7 10 L3.6 L3.6 6 N7
8 9 L3.7 L3.7 7
8 +5v 0
9 R-arrayN
20

N0 UP3 RP3 LEDP3


ON 1 N1 P3.0 2 18 1 16 1 16
2 N2 P3.1 3 A1 B1 17 2 15 2 15
0 3 A2 B2
VCC

N3 P3.2 4 16 3 14 3 14
4 N4 P3.3 5 A3 B3 15 4 13 4 13
Reset 1k 5 N5 P3.4 A4 B4
6 14 5 12 5 12
D1 6 N6 P3.5 7 A5 B5 13 6 11 6 11
+5v Relay 7 A6 B6
1N4007 Rled + N7 P3.6 8 12 7 10 7 10
5v 10uF 8 +5v P3.7 A7 B7
470 9 11 8 9 8 9
Jng 9 A8 B8
Q1 Rb1 150 +5v 1 330
2 C2383 19 DIR
1 1k G
GND

+ LED Reset
OFF 10k 74LS245
Cng
10

0v

98
Sô ñoà maïch in (Tom view)

7 6 5 4 3 2 1 0

10

17

Sô ñoà boá trí linh kieän (Tom view)

47uF 0.1uF
LEDP1 LEDP0 (5 li)

Caà
u noá
i
U1
Caà
u noá
i R_array0 UP0
JP0
RP1 JP1
+ 330
Jng 5v RP0
- 330

LEDP3
UP1
D1
LEDP2 (5 li)
1N4007

RELAY 5V
JP2 UP2
RP3

JP3
RP2
330
1k
UP3
1k
470

47uF 0.1uF Caà


u noá
i
JL1 JL3 JN
Q1 150
LED Caà
u noá
i
Caà
u noá
i
R_array1
10uF R_array3 R_arrayN

10k SW3
SW1
ON OFF Reset

Caù
c nuù
t nhaá
n thöôø
ng hôû(duø
ng loaïi 4 pin)

Sô ñoà maïch in lôùp BOTTOM (Bottom view)

99
1 40

10

(Thi coâng maïch in theo sô ñoà naøy, kích thöôùc ñuùng laø 10,66 x
20,98cm)

100

Vous aimerez peut-être aussi