
luoân laø moät chaün. Ví duï neáu ACC chöùa 10101101B, P seõ laø 1. Bit Parity thöôøng
ñöôïc lieân keát vôùi chöông trình truyeàn noái tieáp coù söû duïng parity.
Thanh ghi B
Thanh ghi B coù ñòa chæ F0h, chuû yeáu duøng vôùi thanh ghi ACC trong caùc pheùp
toaùn nhaân vaø chia. Leänh MUL AB nhaân caùc soá 8 bit khoâng daáu trong thanh ghi A
vaø B. Keát quaû laø moät soá 16 bit chöùa trong thanh ghi ACC (byte thaáp) vaø B (byte
cao). Leänh DIV B chia thanh ghi ACC cho B. Keát quaû thöông soá ñöôïc löu trong
thanh ghi ACC soá dö ñöôïc löu trong thanh ghi B. Thanh ghi B cuõng ñöôïc duøng nhö
nhöõng thanh ghi khaùc vaø coù theå truy xuaát bit (ñòa chæ F0h ñeán F7h)
Con troû ngaên choàng (stack pointer – SP)
Stack – pointer laø moät thanh ghi 8 bit coù ñòa chæ 81H. Noù chöùa ñòa chæ hieän
thôøi cuûa ñænh stack. Khi ñaåy döõ lieäu vaøo stack, SP taêng leân moät giaù trò, tieáp theo döõ
lieäu ñöôïc ghi vaøo stack. Khi laáy döõ lieäu ra khoûi stack, döõ lieäu ñöôïc ñoïc ra tröôùc sau
ñoù SP ñöôïc giaûm. Stack cuûa 8051 naèm trong vuøng RAM noäi vaø coù theå truy xuaát
baèng ñòa chæ tröïc tieáp. 128 bytes ñaàu tieân ñoái vôùi 8051/8031 vaø 256 bytes ñoái vôùi
8052/8032 trong vuøng RAM noäi coù theå duøng laøm stack. Ñeå taïo ra stack baét ñaàu taïi
60H, ta khôûi ñoäng thanh ghi SP:
MOV SP, #5FH ;
Nhö vaäy stack ñöôïc giôùi haïn trong 32 bytes. Ta duøng giaù trò 5FH vì SP seõ
taêng leân 60H tröôùc khi ñaåy döõ lieäu ñaàu tieân vaøo stack.
Khi laäp trình ta khoâng caàn phaûi khôûi ñoäng laïi thanh ghi SP vì noù ñaõ ñöôïc
khôûi ñoäng vôùi giaù trò khi reset. Thanh ghi SP chöùa giaù trò maëc ñònh laø 07H. Do ñoù
stack maëc ñònh baét ñaàu taïi 08H. Neáu trình khoâng khôûi ñoäng laïi stack thì caùc thanh
ghi 1, 2, 3 khoâng theå söû duïng vì noù ñöôïc duøng laøm stack.
Stack ñöôïc truy xuaát moät caùch roõ raøng baèng caùc leänh PUSH, POP ñeå löu tröõ
taïm thôøi hay truy xuaát döõ lieäu. Noù cuõng coù theå ñöôïc truy xuaát ngaàm khi coù caùc leänh
goïi ñeán chöông trình con. Caùc leänh ACALL, LCALL hay ngaét seõ ñaåy thanh ghi
ñeám chöông trình (PC) vaøo stack. Leänh RET, RETI traû giaù trò trong stack laïi cho
PC.
Con troû döõ lieäu (DPTR)
Con troû döõ lieäu duøng ñeå truy xuaát maõ hay döõ lieäu töø boä nhôù ngoaøi vaø thanh
ghi 16 bit. Thanh ghi naøy goàm hai thanh ghi DPL (byte thaáp, ñòa chæ 82H) vaø DPH
(byte cao, ñòa chæ 83H). Ba leänh sau ñaây seõ ghi giaù trò 55H vaøo RAM ngoaøi taïi ñòa
chæ 1000H.
MOV A, #55H;
MOV DPTR, #1000H;
MOV @DPTR, A;
Caùc thanh ghi Port:

Caùc port cuûa 8051 goàm coù port 0 ñòa chæ 80H, port 1 ñòa chæ 90H, port 2 ñòa
chæ A0H, port 3 ñòa chæ B0H. Caùc port 0, 2 vaø 3 khoâng ñöôïc duøng ñeå xuaát nhaäp neáu
ñang söû duïng boä nhôù ngoaøi. Coøn laïi port 1 coù theå duøng ñeå xuaát nhaäp (I/O).
Taát caû caùc port ñeàu coù theå duøng truy xuaát bit. Ñieàu naøy cung caáp cho vi ñieàu
khieån khaû naêng giao tieáp raát maïnh. Ta coù theå duøng chaân P1.7 ñeå ñoùng môû ñoäng cô.
Chaân P1.7 noái vôùi transitor ñeå laùi moät relay ñoùng môû ñoäng cô. Leänh SETB P1.7 môû
ñoäng cô. Leänh CLR P1.7 taét ñoäng cô.
Hai leänh treân duøng toaùn töû daáu chaám ñeå xaùc ñònh ñòa chæ bit trong moät byte.
Caùc thanh ghi boä ñònh thôøi:
8051 coù hai boä ñònh thôøi 16 bit. Timer 0 coù ñòa chæ 8AH (TL0 byte thaáp) vaø
8DH (TH1 byte cao). Ngoaøi boä ñònh thôøi coøn coù hai thanh ghi: thanh ghi ñieàu khieån
TCON ñòa chæ 88H vaø thanh ghi xaùc ñònh mode cho timer TMOD ñòa chæ 89H.
Trong ñoù chæ coù thanh ghi TCON truy xuaát ñöôïc töøng bit.
Caùc thanh ghi coång noái tieáp:
8051 chöùa coång noái tieáp beân trong MCU ñeå giao tieáp vôùi caùc thieát bò noái tieáp
nhö thieát bò ñaàu cuoái, modem v.v… Coång noái tieáp goàm coù hai thanh ghi: moät thanh
ghi ñeäm SBUF laø naïp döõ lieäu ñeå truyeàn ñi. Ñoïc SBUF laø nhaän döõ lieäu ñaõ thu ñöôïc
vaøo. Caùc mode truyeàn coù theå ñöôïc laäp trình thoâng qua thanh ghi ñieàu khieån coång keá
tieáp. Thanh ghi naøy coù theå truy xuaát bit vaø coù ñòa chæ 98H.

Caùc thanh ghi ngaét:
8051 coù 5 nguoàn ngaét vaø hai möùc öu tieân. Caùc ngaét bò caám khi reset heä
thoáng. Caùc ngaét ñöôïc cho pheùp thoâng qua thanh ghi IE coù ñòa chæ 0AH. Caùc möùc öu
tieân cuõng ñöôïc set bôûi thanh ghi IP taïi ñòa chæ B8H. Caû hai thanh ghi naøy ñeàu coù theå
truy xuaát bit.
IE coù ñòa chæ A8H. Ngaét chæ ñöôïc chaáp nhaän khi thanh ghi naøy ñaõ ñöôïc laäp
trình.
Thanh ghi PCON (Power Control Register)
Thanh ghi PCON coù ñòa chæ 87H, chöùa caùc bits ñieàu khieån linh tinh, ñöôïc toùm
taét trong baûng 4.4.
Bit SMOD nhaân ñoâi toác ñoä truyeàn noái tieáp ôû caùc mode 1, 2 vaø 3. Caùc bit 4, 5, 6
khoâng ñöôïc ñònh nghóa. Bit 3 vaø 2 laø hai côø ñöôïc tuøy yù trong laäp trình öùng duïng.
Caùc bit PD (power down) vaø IDL (idle) ñeàu coù trong caùc hoï IC MCS-51 nhöng
chæ vôùi IC duøng CMOS maø thoâi.
Leänh set bit IDL laø leänh ñöôïc thi haønh cuoái cuøng tröôùc khi CPU vaøo cheá ñoä idle.
ÔÛ tín hieäu naøy cheá ñoä xung clock ñöôïc ngaét ra khoûi CPU, nhöng khoâng ngaét ra khoûi
ngaét quaõng, timer vaø coång noái tieáp. Traïng thaùi CPU vaø noäi dung caùc thanh ghi ñöôïc
baûo toaøn. Caùc chaân cuûa coång song song ñöôïc giöõ ôû möùc traïng thaùi cuûa chuùng. ALE
vaø PSEN ôû möùc cao.
Caùc cheá ñoä idle keát thuùc khi coù baát kyø moät ngaét naøo hoaëc reset heä thoáng, ñoàng
thôøi bit IDL bò xoùa.
+ Power down Mode
it
K
yù hieäu
Moâ taû
S
OMD
G
F1
G
F0
P
D
I
DL
Toác ñoä keùp; khi ñöôïc set, toác ñoä truyeàn noái tieáp
ñöôïc nhaân ñoâi caùc cheá ñoä 1,2,3.
Khoâng ñöôïc ñònh nghóa
“nt”
“nt”
Côø duøng cho muïc ñích toång quaùt 1
Côø duøng cho muïc ñích toång quaùt 2
Power down, set mode power down. Chæ thoaùt khi
reset
Idle mode, set mode idle. Thoaùt khi coù ngaét hoaëc
reset

Baûng 4.4 Toùm taét thanh ghi PCON
Leänh set bit PD laø leänh cuoái cuøng tröôùc khi CPU chuyeån sang mode
power down.
ÔÛ cheá ñoä naøy: (1) boä dao ñoäng noäi ngöng hoaït ñoäng, (2) caùc chöùc naêng bò
döøng, (3) noäi dung RAM noäi ñöôïc giöõ ôû möùc logic cuûa chuùn, (5) ALE vaø PSEN ôû
möùc thaáp. Chæ coù theå thoaùt khoûi cheá ñoä naøy khi reset heä thoáng.
Khi ôû cheá ñoä power down, Vcc coù theå giaûm ñeán 2V. Löu yù caàn phaûi traû laïi
möùc aùp 5V cho Vcc khi thoaùt khoûi cheá ñoä power down.
VI – BOÄ NHÔÙ NGOAØI
Môû roäng boä nhôù laø moät khaû naêng quan troïng ñoái vôùi vi ñieàu khieån nhaèm
traùnh gaëp beá taéc trong vaán ñeà thieát keá. Hoï MCs-51 coù theå môû roäng 64Kbs vaø boä
nhôù maõ leänh 64Kbs döõ lieäu. Caùc IC giao tieáp ngoaïi vi cuõng coù theå theâm vaøo ñeå
taêng naêng xuaát nhaäp. Noù trôû thaønh moät phaàn cuûa boä döõ lieäu ngoaïi vaø ñöôïc giaûi maõ
I/O nhö boä nhôù.
Khi boä nhôù ngoaøi ñöôïc söû duïng, port 0 khoâng ñöôïc duøng laøm coång xuaát
nhaäp. Noù trôû thaønh bus duøng ñeå phaân keânh ñòa chæ vaø döõ lieäu, ALE choát noù nhö laø
bytes thaáp cuûa bus ñòa chæ khi baét ñaàu moãi chu kyø truy xuaát boä nhôù ngoaøi. Port 2
thöôøng duøng laøm byte cao cuûa bus ñòa chæ.
Chu kyø boä nhôù
A0 A15 Ñòa chæ
D0 D7 Döõ lieäu
(a) Khoâng phaân keânh (24 chaân)
Chu kyø boä nhôù
AD8 AD15 Ñòa chæ

AD0 AD7 Ñòa chæ Döõ lieäu
(b) Phaân keânh (16 chaân)
Hình 4.5 Phaân keânh bus ñòa chæ vaø bus döõ lieäu
Hình treân moâ taû vieäc phaân keânh vaø khoâng phaân keânh bus ñòa chæ vaø bus döõ
lieäu. Neáu khoâng phaân keânh, vôùi 16 chaân ñòa chæ vaø 8 chaân döõ lieäu ta coù 24 chaân cho
bus ñòa chæ vaø bus döõ lieäu. Trong khi ñoù neáu phaân keânh, 8 chaân döõ lieäu ñöôïc duøng
chung vôùi 8 chaân thuoäc byte thaáp cuûa bus ñòa chæ neân chæ coù 16 chaân cho bus ñòa chæ
vaø bus döõ lieäu. Ñieàu naøy coù yù nghóa lôùn trong vieäc cheá taïo IC.
Thöù töï phaân keânh nhö sau : ôû nöõa chu kyø ñaàu, byte thaáp cuûa ñòa chæ xuaát ra
port 0 vaø ñöôïc choát baèng ALE. Byte naøy ñöôïc choát ôû boä choát trong suoát chu kyø boä
nhôù. Trong nöõa chu kyø tieáp theo port 0 laø bus döõ lieäu, coù theå xuaát nhaäp tuøy yù.
Truy xuaát boä nhôù maõ leänh ngoaøi (External Code memory):
Boä nhôù maõ ngoaøi ñöôïc ñoïc baèng tín hieäu PSEN (hình 4.6). Trong moät chu kyø
maùy ALE taùc ñoäng 2 laàn vaø 2 bytes ñöôïc ñoïc töø boä nhôù chöông trình. Giaûn ñoà thôøi
gian cuûa hoaït ñoäng naøy ñöôïc goïi laø chu kyø laáy leänh (hình 4.7).
Truy xuaát boä nhôù döõ lieäu ngoaøi (External Code memory):
Ñaây laø boä nhôù chöùa döõ lieäu, thöôøng laø RAM vaø ñöôïc truy xuaát bôûi tín hieäu
RD vaø WR. Döõ lieäu naøy chæ ñöôïc truy xuaát baèng leänh MOVX thoâng qua thanh ghi
con troû döõ lieäu DPTR, hoaëc R0, R1.
RAM giao tieáp vôùi 8051 gioáng nhö EPROM. Ngoaïi tröø chaân RD ñöôïc noái vôùi
chaân OE vaø chaân WR ñöôïc noái vôùi chaân W. Coøn laïi caùc bus döõ lieäu vaø ñòa chæ noái
nhö EPROM. Vôùi 16 ñöôøng ñòa chæ ta coù theå coù ñeán 64Kbs cho vuøng nhôù döõ lieäu.
Giaûn ñoà thôøi gian cuûa vieâc ñoïc vuøng nhoù döõ lieäu ngoaøi khi thi haønh leänh
“MOV A,@DPRT” ñöôïc cho ôû hình 4.8. Löu yù chæ coù chaân RD ñöôïc duøng cho pheùp
RAM.
Giaûn ñoà thôøi gian cuûa vieäc ghi cuõng töông töï töø ñöôøng WR xuoáng möùc thaáp
vaø döõ lieäu xuaát ra port 0.
Port 2 coù theå khoâng duøng laøm byte cao cuûa bus ñòa chæ trong heä thoáng khoâng
söû duïng vuøng nhôù maõ ngoaøi maø söû duïng vuøng nhôù döõ lieäu ngoaøi nhoû. Taùm bit ñòa
chæ coù theå truy xuaát ñöôïc moät vuøng nhôù 256 bytes, ñöôïc goïi laø moät trang boä nhôù.
Neáu vuøng nhôù naøy lôùn hôn 256 bytes ta coù theå duøng theâm moät vaøi chaân cuûa port 2
ñeå choïn trang.

