Nguyenvanbientbd47@gmail.com
1. Giôùi thieäu khaùi quaùt veà hoï IC MCS-51™
MCS-51 laø moät hoï IC vi ñieàu khieån do Intel phaùt trieån vaø saûn xuaát. Moät soá nhaø saûn xuaát ñöôïc pheùp
cung caáp caùc IC töông thích vôùi caùc saûn phaåm MCS-51 cuûa Intel laø Siemens, Advanced Micro
Devices, Fujitsu, Philips, Atmel…
Caùc IC cuûa hoï MCS-51 coù caùc ñaëc tröng chung nhö sau:
4 port I/O 8 bit
Giao tieáp noái tieáp
64K khoâng gian boä nhôù chöông trình môû roäng
64K khoâng gian boä nhôù döõ lieäu môû roäng
Moät boä xöû lyù luaän lyù (thao taùc treân caùc bit ñôn)
210 bit ñöôïc ñòa chæ hoùa
Boä nhaân/chia 4 µs.
Ngoaøi ra, tuøy theo soá hieäu saûn xuaát maø chuùng coù nhöõng khaùc bieät veà boä nhôù vaø boä ñònh thôøi/boä ñeám
nhö trong baûng so saùnh döôùi ñaây:
u
saûn xuaát
h
ôù chöông trình treân
ôù
döõ lieäu treân chip
ñ
ònh thôøi
ám
)
O
M
R
OM
A
SH
yte
yte
yte
yte
2
2
O
M
ROM
A
SH
b
yte
b
yte
b
yte
b
yte
2 Giôùi thieäu AT89C51
Nguyenvanbientbd47@gmail.com
AT89C51 laø moät Microcomputer 8 bit, loaïi CMOS, coù toác ñoä cao vaø coâng suaát thaáp vôùi boä nhôù Flash
coù theå laäp trình ñöôïc. Noù ñöôïc saûn xuaát vôùi coâng ngheä boä nhôù khoâng bay hôi maät ñoä cao cuûa haõng
Atmel, vaø töông thích vôùi chuaån coâng nghieäp cuûa 80C51 vaø 80C52 veà chaân ra vaø boä leänh. Vì lyù do
ñoù, keå töø ñaây veà sau ta seõ duøng thuaät ngöõ “80C51” (hoaëc "8051")
Sô ñoà khoái cuûa AT89C51
2.1 Nhöõng ñaëc tröng cuûa AT89C51.
+ Töông thích vôùi caùc saûn phaåm MCS-51
Nguyenvanbientbd47@gmail.com
+ 4KByte boä nhôù Flash coù theå laäp trình laïi vôùi 1000 chu kyø ñoïc/xoaù
+ Hoaït ñoäng tónh ñaày ñuû: 0Hz ñeán 24MHz
+ Khoaù boä nhôù chöông trình ba caáp
+ 128 x 8 bit RAM noäi
+ 32 ñöôøng xuaát-nhaäp laäp trình ñöôïc (töông öùng 4 port)
+ Hai timer/counter 16 bit
+ Moät port noái tieáp song coâng laäp trình ñöôïc
+ Maïch ñoàng hoà vaø boä dao ñoäng treân chip
Caáu hình chaân cuûa AT89C51 nhö sau:
Nhö vaäy AT89C51 coù taát caû 40 chaân. Moãi chaân coù chöùc naêng nhö caùc ñöôøng I/O (xuaát/nhaäp),
trong ñoù 24 chaân coù coâng duïng keùp: moãi ñöôøng coù theå hoaït ñoäng nhö moät ñöôøng I/O hoaëc nhö moät
ñöôøng ñieàu khieån hoaëc nhö thaønh phaàn cuûa bus ñòa chæ vaø bus ñöõ lieäu.
Moâ taû chaân
VCC
(chaân 40)
Chaân caáp nguoàn.
GND
(chaân 20)
Chaân noái ñaát.
Port 0
Nguyenvanbientbd47@gmail.com
Port 0 laø moät port xuaát/nhaäp song höôùng cöïc maùng hôû 8 bit. Neáu ñöôïc söû duïng nhö laø moät ngoõ
xuaát thì moãi chaân coù theå keùo 8 ngoõ vaøo TTL. Khi möùc 1 ñöôïc vieát vaøo caùc chaân cuûa port 0, caùc chaân
naøy coù theå ñöôïc duøng nhö laø caùc ngoõ nhaäp toång trôû cao.
Port 0 coù theå ñöôïc ñònh caáu hình ñeå hôïp keânh giöõa bus ñòa chæ vaø bus döõ lieäu (phaàn byte thaáp) khi
truy caäp ñeán boä nhôù döõ lieäu vaø boä nhôù chöông trình ngoaøi. ÔÛ cheá ñoä naøy, P0 coù caùc ñieän trôû pullup
beân trong.
Port 0 cuõng nhaän caùc byte code (byte maõ chöông trình) khi laäp trình Flash, vaø xuaát ra caùc byte code
khi kieåm tra chöông trình. Caàn coù caùc ñieän trôû pullup beân ngoaøi khi thöïc hieän vieäc kieåm tra chöông
trình.
Port 1
Port 1 laø moät port xuaát/nhaäp song höôùng 8 bit coù caùc ñieän trôû pullup beân trong. Caùc boä ñeäm ngoõ ra
cuûa port 1 coù theå keùo hoaëc cung caáp 4 ngoõ nhaäp TTL. Khi möùc 1 ñöôïc vieát vaøo caùc chaân cuûa port 1,
chuùng ñöôïc keùo leân cao bôûi caùc ñieän trôû pullup noäi vaø coù theå ñöôïc duøng nhö laø caùc ngoõ nhaäp. Neáu
ñoùng vai troø laø caùc ngoõ nhaäp, caùc chaân cuûa port 1 (ñöôïc keùo xuoáng thaáp qua caùc ñieän trôû beân ngoaøi)
seõ caáp doøng IIL do caùc ñieän trôû pullup beân trong.
Port 2
Port 2 laø moät port xuaát/nhaäp song höôùng 8 bit coù caùc ñieän trôû pullup beân trong.
Caùc boä ñeäm ngoõ ra cuûa port 2 coù theå keùo hoaëc cung caáp 4 ngoõ vaøo TTL. Khi caùc möùc 1 ñöôïc vieát vaøo
caùc chaân cuûa port 2 thì chuùng ñöôïc keùo leân cao bôûi caùc ñieän trôû pullup noäi vaø coù theå ñöôïc duøng nhö
caùc ngoõ vaøo. Khi ñöôïc duøng nhö caùc ngoõ vaøo, caùc chaân cuûa port 2 (ñöôïc keùo xuoáng qua caùc ñieän trôû
beân ngoaøi) seõ caáp doøng IIL do coù caùc ñieän trôû pullup beân trong.
Port 2 phaùt ra byte cao cuûa ñòa chæ khi ñoïc töø boä nhôù chöông trình ngoaøi vaø khi truy caäp boä nhôù döõ
lieäu ngoaøi duøng caùc ñòa chæ 16 bit (MOVX @DPTR). Trong öùng duïng naøy, noù duøng caùc ñieän trôû pullup
noäi "maïnh" khi phaùt ra caùc möùc 1. Khi truy caäp boä nhôù döõ lieäu ngoaøi duøng caùc ñòa chæ 8 bit (MOVX
@RI), port 2 phaùt ra caùc noäi dung cuûa thanh ghi chöùc naêng ñaëc bieät P2.
Port 2 cuõng nhaän caùc bit cao cuûa ñòa chæ vaø moät vaøi tín hieäu ñieàu khieån khi laäp trình vaø kieåm tra
Flash.
Port 3
Port 3 laø moät port xuaát-nhaäp song höôùng 8 bit coù ñieän trôû pullup noäi beân trong.
Caùc boä ñeäm ngoõ ra cuûa port 3 coù theå keùo hoaëc cung caáp 4 ngoõ vaøo TTL. Khi caùc möùc 1 ñöôïc vieát vaøo
caùc chaân cuûa port 3 thì chuùng ñöôïc keùo leân cao bôûi caùc ñieän trôû pullup noäi vaø coù theå ñöôïc duøng nhö
caùc ngoõ vaøo. Khi ñöôïc duøng nhö caùc ngoõ vaøo, caùc chaân cuûa port 3 (ñöôïc keùo xuoáng qua caùc ñieän trôû
beân ngoaøi) seõ caáp doøng IIL do coù caùc ñieän trôû pullup beân trong.
Port 3 cuõng cung caáp caùc chöùc naêng cuûa caùc ñaëc tröng ñaëc bieät nhö ñöôïc lieät keâ döôùi ñaây:
Nguyenvanbientbd47@gmail.com
ö
ùc naêng chuyeån ñoåi
h
aäp noái tieáp
u
aát noái tieáp
0
beân ngoaøi
beân ngoaøi
o Timer/Counter 0
o Timer/Counter 1
g
hi boä nhôù döõ lieäu ngoaøi
ñ
oïc boä nhôù döõ lieäu ngoaøi
Caùc chöùc naêng chuyeån ñoåi treân Port 3
RST
(chaân 9)
Ngoõ vaøo reset. Moät möùc cao treân chaân naøy khoaûng hai chu kyø maùy trong khi boä dao ñoäng ñang chaïy
seõ reset thieát bò.
ALE/
PROG
ALE laø moät xung ngoõ ra ñeå choát byte thaáp cuûa ñòa chæ trong khi truy caäp boä nhôù ngoaøi. Chaân naøy
cuõng laø ngoõ nhaäp xung laäp trình (PROG ) khi laäp trình Flash.
Khi hoaït ñoäng bình thöôøng, ALE ñöôïc phaùt vôùi moät tyû leä khoâng ñoåi laø 1/6 taàn soá boä dao ñoäng vaø coù
theå ñöôïc duøng cho caùc muïch ñích timing vaø clocking beân ngoaøi. Tuy nhieân, löu yù raèng moät xung ALE
seõ bò boû qua moãi khi truy caäp boä nhôù döõ lieäu ngoaøi.
Neáu muoán, hoaït ñoäng ALE coù theå caám ñöôïc baèng caùch set bit 0 cuûa SFR taïi ñòa chæ 8Eh. Neáu bit naøy
ñöôïc set, ALE chæ döôïc hoaït ñoäng khi coù moät leänh MOVX hoaëc MOVC. Ngöôïc laïi, chaân naøy ñöôïc keùo
leân cao bôûi caùc ñieän trôû pullup "nheï". Vieäc set bit caám-ALE khoâng coù taùc duïng khi boä vi ñieàu khieån
ñang ôû cheá ñoä thi haønh ngoaøi.
PSEN
PSEN (Program Store Enable) laø xung ñoïc boä nhôù chöông trình ngoaøi. Khi AT89C52 ñang thi haønh
maõ (code) töø boä nhôù chöông trình ngoaøi, PSENñöôïc kích hoaït hai laàn moãi chu kyø maùy, nhöng hai
hoaït ñoäng PSEN seõ bò boû qua moãi khi truy caäp boä nhôù döõ lieäu ngoaøi.
EA
/Vpp
EA (External Access Enable) phaûi ñöôïc noái vôùi GND ñeå cho pheùp thieát bò ñoïc code töø boä nhôù chöông
trình ngoaøi coù ñòa chæ töø 0000H ñeán FFFFH. Tuy nhieân, löu yù raèng neáu bit khoaù 1 (lock-bit 1) ñöôïc
laäp trình, EA seõ ñöôïc choát beân trong khi reset.
EA phaûi ñöôïc noái vôùi Vcc khi thi haønh chöông trình beân trong. Chaân naøy cuõng nhaän ñieän aùp cho
pheùp laäp trình Vpp=12V khi laäp trình Flash (khi ñoù aùp laäp trình 12V ñöôïc choïn).