Giáo trình Vi điều khiển 8051 - Lê Chí Thông

Chöông 1: GIÔÙI THIEÄU AT89C51  
I - TOÙM TAÉT PHAÀN CÖÙNG:  
1) Giôùi thieäu hoï MCS51:  
MSC-51 laø moät hoï IC vi ñieàu khieån (microcontroller), ñöôïc phaùt trieån cheá taïo  
vaø baùn ôû thò tröôøng bôûi haõng INTEL cuûa Myõ. Caùc nhaø cheá taïo IC khaùc nhö  
SIEMENS cuûa Ñöùc, ADVANCED MICRO DEVICES, FUJITSU cuûa Nhaät vaø  
PHILIPS cuûa Haø Lan laø caùc nhaø cung caáp thieát bò trong hoï MSC-51 ñöôïc caáp  
giaáy baûn quyeàn thöù hai, haõng ALMEL cuõng laø moät haõng ñöôïc caáp baûng quyeàn  
vaø saûn phaåm 8951, 8952 laø hai IC tieâu bieåu trong thieát keá cuûa hoï.  
Chuùng coù caùc ñaët ñieåm chung nhö sau:  
- 4Kbyte ROM (ñöïôc laäp trình bôûi nhaø saûn xuaát, chæ coù ôû 8051 ).  
- 4Kbyte EPROM ( cho ta coù theå laäp trình ñöôïc nhieàu laàn ”khoaûng 1000  
laàn”, chæ coù ôû 8951 ).  
- 128 byte RAM .  
- 4 port I/O 8 bit.  
- 2 boä ñònh thôøi 16 bit.  
- 64 K khoâng gian boä nhôù chöông trình môû roäng.  
- 64 K khoâng gian boä nhôù döõ lieäu môû roäng.  
- Moät boä xöû lyù luaän lyù (hoaït ñoäng treân bít ñôn).  
- 210 bit ñöôïc ñòa chæ hoaù.  
- Boä nhaân / chia 4 µs.  
Vi Điều Khiển 8051  
Lê Chí Thông – [email protected]  
INT1  
INT0  
Timer 2  
(8952)  
Timer 1  
Timer 0  
Serial  
128 byte  
RAM  
8052  
ROM  
Timer 2  
0K:8031  
8952  
8032  
port  
4K:8051  
8951  
Timer 1  
T1  
T0  
Interrupt  
Control  
Other  
Register  
128 byte  
RAM  
8K:8952  
Timer 0  
CPU  
BUS  
Coltrol  
Serial  
Port  
Oscilator  
I/O Port  
EA  
RS  
T
ALE P0 P2 P1 P3  
PSEN  
TXD RXD  
Address/Data  
Sô doà khoái hoï MCS51.  
2
Vi Điều Khiển 8051  
Lê Chí Thông – [email protected]  
2) Sô löôïc veà caùc chaân cuûa 8951 :  
8951 coù taát caû 40 chaân coù chöùc naêng nhö caùc ñöôøng xuaát nhaäp. Trong ñoù coù  
24 chaân coù coâng duïng keùp, moãi ñöôøng coù theå hoaït ñoäng nhö ñöôøng xuaát nhaäp  
hoaëc nhö ñöôøng ñieàu khieån hoaëc laø thaønh phaàn cuûa bus döõ lieäu vaø bus ñòa chæ.  
40  
32  
VCC  
P0.7  
33  
P0.6  
34  
P0.5  
35  
P0.4  
36  
P0.3  
37  
P0.2  
38  
P0.1  
39  
P0.0  
29  
PSEN  
8
P1.7  
7
30  
P1.6  
ALE  
EA  
6
P1.5  
31  
5
P1.4  
4
P1.3  
9
3
2
1
8951  
P1.2  
P1.1  
P1.0  
RST  
17  
28  
P2.7  
P2.6  
P2.5  
P2.4  
P2.3  
P2.2  
P2.1  
P2.0  
P3.7  
P3.6  
P3.5  
P3.4  
P3.3  
P3.2  
P3.1  
P3.0  
16  
15  
14  
13  
12  
11  
10  
27  
26  
25  
24  
23  
22  
21  
VSS  
20  
Sô ñoà chaân 8951  
3
Vi Điều Khiển 8051  
a) PORT 0 :  
Lê Chí Thông – [email protected]  
Port 0 laø moät port hai chöùc naêng treân caùc chaân 32 ÷ 39. Trong thieát keá côû nhoû  
( khoâng duøng boä nhôù môû roäng ) noù coù chöùc naêng nhö ñöôøng I/O. Ñoái vôùi thieát bò  
lôùn vôùi boä nhôù môû roäng, noù ñöôïc hôïp keânh giöõa bus ñiaï chæ vaø bus döõ lieäu.  
b) PORT 1 :  
Port 1 laø port I/O treân caùc chaân 1 ÷ 8. Caùc chaân ñöôïc kyù hieäu P1.0, P1.2, P1.3,  
…,P1.7 coù theå duøng cho giao tieáp vôùi caùc thieát bò ngoaøi neáu caàn. Port 1 khoâng coù  
chöùc naêng khaùc, vì vaäy chuùng chæ duøng cho giao tieáp vôùi thieát bò ngoaøi.  
c) PORT 2 :  
Port 2 laø moät port coù coâng duïng keùp treân caùc chaân 21 ÷ 28 ñöôïc duøng nhö caùc  
ñöôøng xuaát nhaäp hoaëc laø byte cao cuûa bus ñòa chæ ñoái vôùi caùc thieát keá duøng boä  
nhôù môû roäng.  
d) PORT 3:  
Port 3 laø moät port coù coâng duïng keùp treân caùc chaân 10 ÷ 17. Caùc chaân cuûa port  
naøy coù nhieàu cöùc naêng. Caùc coâng duïng chuyeån ñoåi coù lieân heä vôùi caùc ñaëc tính  
ñaëc bieät cuûa 8951 nhö ôû baûng sau:  
Bit  
Teân  
RXD  
TXD  
INT0  
INT1  
T0  
T1  
WR  
RD  
Cöùc naêng chuyeån ñoåi  
Döõ lieäu nhaän cho port noái tieáp  
Döõ lieäu phaùt cho port noái tieáp  
Ngaét 0 beân ngoaøi  
P3.0  
P3.1  
P3.2  
P3.3  
P3.4  
P3.5  
P3.6  
P3.7  
Ngaét 1 töø ngoaøi  
Ngoõ vaøo Timer / Counter 0  
Ngoõ vaøo Timer / Counter 1  
Xung ghi boä nhôù döõ lieäu ngoaøi  
Xung ñoïc boä nhôù döõ lieäu ngoaøi  
Ta caàn löu yù raèng khi duøng nhöõng pin naøy vaøo nhöõng muïc ñích caù bieät thì caû  
port 3 khoâng coøn khaû naêng duøng laøm I/O port nöõa.  
e) XTAL 1 vaø XTAL 2:  
Treân chaân 18 vaø 19 cuûa vi maïch, ñöôïc noái vôùi boä dao ñoäng thaïch anh 12  
MHz ñeå taïo dao ñoäng treân Chip. Hai tuï 30pF ñöôïc theâm vaøo ñeå oån ñònh dao  
ñoäng.  
4
Vi Điều Khiển 8051  
Lê Chí Thông – [email protected]  
f) PSEN (Program Store Enable ):  
Coù 4 tín hieäu ñieàu khieån.  
PSEN laø tín hieäu ra treân chaân 29. Noù laø tín hieäu ñieàu khieån ñeå cho pheùp boä  
nhôù chöông trình môû roäng vaø thöôøng ñöôïc noái ñeán chaân OE ( Output Enable )  
cuûa moät EPROM ñeå cho pheùp ñoïc caùc byte maõ leänh.  
PSEN seõ ôû möùc thaáp trong thôøi gian laáy leänh. Caùc maõ nhò phaân cuûa chöông  
trình ñöôïc ñoïc töø EPROM qua bus döõ lieäu vaø ñöôïc choát vaøo thanh ghi leänh ñeå  
giaûi maõ leänh. Khi thi haønh chöônh trình trong ROM noäi PSEN ôû möùc thuï ñoäng  
(möùc cao).  
g) ALE (Address Latch Enable ):  
Tín hieäura ALE treân chaân 30 töông hôïp vôùi caùc thieát bò laøm vieäc vôùi caùc vi  
xöû lyù 8085, 8088, 8086, 8051, 8951 duøng ALE moät caùch töông töï cho vieäc giaûi  
keânh caùc bus ñiaï chæ vaø döõ lieäu.Khi Port 0 ñöôïc duøng trong cheá ñoä chuyeån doåi  
cuûa noù: vöøa laø bus döõ lieäu vöøa laø bus thaáp cuûa bus ñiaï chæ, ALE laø tín hieäu ñeå  
choát ñòa chæ vaøo moät thanh ghi ngoaøi trong suoát nöûa chu kyø nhôù ñaàu, trong nöûa  
chu kyø sau noù ôû möùc thaáp cho pheùp xuaát hoaëc nhaäp döõ lieäu khi döõ lieäu ñaõ di  
chuyeån bus.  
Caùc xung tín hieäu ALE coù toác ñoä baèng 1/6 laàn taàn soá dao ñoäng treân chip vaø  
coù theå ñöôïc duøng laøm nguoàn xung nhòp cho caùc phaàn khaùc cuûa heä thoáng. Neáu  
xung nhòp treân 8951 laø 12MHz thì ALE coù taàn soá 2MHz. Chæ ngoaïi tröø khi thi  
haønh leänh MOVX, moät xung ALE bò maát. Xung naøy cuõng ñöôïc laøm ngoõ vaøo cho  
xung laäp trình cho EPROM trong 8951.  
h) EA ( Eternal Acess):  
Tín hieäu vaøo EA treân chaân 31 thöôøng ñöôïc maéc leân möùc cao (+5V) hoaëc möùc  
thaáp (GND) . Neáu ôû möùc cao 8951 thi haønh chöông trình töø ROM noäi trong  
khoaûng ñòa chæ thaáp (4K). Neáu ôû möùc thaáp chöông trình chæ ñöôïc thi haønh töø boä  
nhôù môû roäng. Ngöôøi ta coøn duøng EA laøm chaân caáp ñieän aùp 21V khi laäp trình  
8951.  
i) RST (Reset) :  
Ngoõ vaøo RST treân chaân 9 laø ngoõ Reset cuûa 8951. Khi tín hieäu naøy ñöôïc ñöa  
leân möùc cao ( trong ít nhaát 2 chu kyø maùy) , caùc thanh ghi beân trong 8951 ñöôïc taûi  
nhöõng giaù trò thích hôïp ñeå khôûi ñoäng heä thoáng.  
j) Caùc chaân nguoàn:  
8951 vaän haønh vôùi nguoàn ñôn +5V. VCC ñöôïc noái vaøo chaân 40 vaø VSS (GND)  
ñöôïc noái vaøo chaân 20.  
5
Vi Điều Khiển 8051  
Lê Chí Thông – [email protected]  
3) Caáu truùc boä nhôù cuûa 8951 :  
8951 coù caáu truùc nhôù theo kieåu HARWARD : coù vuøng nhôù rieâng cho chöông  
trình vaø döõ lieäu. Boä nhôù ngoaøi coù theå môû roäng ñeán 64KB code memory vaø 64KB  
data memory. RAM treân chip goàm 128 Byte öùng duïng cho caùc boä löu tröõ muïc  
ñích chung, boä löu tröõ coù theå ñònh vò bit, caùc daõy thanh ghi vaø thanh ghi chöùc  
naêng ñaëc bieät.  
Hai ñaëc tính caàn löu yù laø:  
+ Caùc thanh ghi vaø caùc port xuaát nhaäp ñaõ ñöôïc xeáp trong boä nhôù vaø coù theå  
ñöôïc truy xuaát tröïc tieáp gioáng nhö caùc ñiaï chæ boä nhôù khaùc.  
+ Ngaên xeáp trong RAM noäi nhoû hôn so vôùi RAM ngoaøi nhö trong caùc boä vi  
xöû lyù khaùc.  
Baûng toùm taét vuøng nhôù 8951 :  
General  
Purpose  
30  
2F  
2E  
2D  
2C  
2B  
2A  
29  
28  
27  
26  
25  
24  
23  
21  
20  
1F  
1817  
RAM  
7F 7E 7D 7C 7B 7A 79 78  
77 76 75 74 73 72 71 70  
6F 6E 6D 6C 6B 6A 69 68  
67 66 65 64 63 62 61 60  
5F 5E 5D 5C 5B 5A 59 58  
57 56 55 54 53 52 51 50  
4F 4E 4D 4C 4B 4A 49 48  
47 46 45 44 43 42 41 40  
3F 3E 3D 3C 3B 3A 39 38  
37 36 35 34 33 32 31 30  
2F 2E 2D 2C 2B 2A 29 28  
27 26 25 24 23 22 21 20  
1F 1E 1D 1C 1B 1A 19 18  
17 16 15 14 13 12 11 10  
0F 0E 0D 0C 0B 0A 09 08  
07 06 05 04 03 02 01 00  
BANK 3  
BANK 2  
BANK 1  
100F  
0807  
00  
Default Register  
Bank for R0 ÷ R7  
Baûng toùm taét baûn ñoà vuøng nhôù  
RAM treân chip  
6
Vi Điều Khiển 8051  
Lê Chí Thông – [email protected]  
FF  
F0  
F7  
E7  
F6  
E6  
F5  
E5  
F4  
E4  
F3  
E3  
F2  
E2  
F1  
E1  
-
F0  
E0  
D0  
B8  
B0  
B
ACC  
PSW  
IP  
E0  
D0 D7 D6 D5 D4 D3 D2  
B8  
B0  
-
-
B6  
-
-
B5  
-
BC BB BA B9  
B4 B3 B2 B1  
B7  
P3  
A8 AF  
AC AB AA A9 A8  
IE  
A0 A7 A6 A5 A4 A3 A2 A1 A0  
P2  
99  
98  
Not bit Addressable  
SBUF  
SCON  
9F  
97  
9E  
96  
9D  
9C  
9B  
9A  
99  
91  
98  
90  
90  
95  
94  
93  
92  
P1  
8D  
8C  
8B  
8A  
89  
Not bit Addressable  
Not bit Addressable  
Not bit Addressable  
Not bit Addressable  
Not bit Addressable  
TH1  
TH0  
TL1  
TL0  
TMOD  
TCON  
PCON  
88  
87  
8F  
87  
8E  
86  
8D  
8C  
8B  
8A  
89  
81  
88  
80  
Not bit Addressable  
83  
82  
81  
80  
Not bit Addressable  
Not bit Addressable  
Not bit Addressable  
DPH  
DPL  
SP  
85  
84  
83  
82  
P0  
CAÙC THANH GHI CHÖÙC NAÊNG ÑAËT BIEÄT  
Vuøng nhôù coù hai ñaëc ñieåm ñaùng chuù yù laø :  
Nhöõng thanh ghi laøm port I/O ñöôïc boä nhôù saép ñaët vaø coù theå ñöôïc truy xuaát  
nhö baát cöù vò trí nhôù naøo khaùc.Vuøng Stack ôû beân trong RAM noäi boä vaø gioáng nhö  
caùc con vi xöû lyù.  
a. RAM ña duïng :  
Trong baûn ñoà boä nhôù treân, 80 byte töø ñòa chæ 30H ÷ 7FH laø RAM muïc ñích  
chung. Keå caû 32 byte phaàn döôùi töø 00H ÷ 2FH cuõng coù theå söû duïng nhö 80 byte  
treân, tuy nhieân 32 byte naøy coøn coù muïc ñích khaùc seõ ñeà caäp sau.Baát cöù vò trí naøo  
7
Vi Điều Khiển 8051  
Lê Chí Thông – [email protected]  
trong RAM cuõng ñeàu coù theå ñöôïc truy xuaát tuøy yù gioáng nhö vieäc söû duïng caùc  
mode ñeå ñònh ñòa chæ tröïc tieáp hay giaùn tieáp. Ví duï, ñeå ñoïc noäi dung ôû ñòa chæ  
5FH cuûa RAM noäi vaøo thanh ghi tích luõy, leänh sau seõ ñöôïc duøng :  
MOV A,5FH  
Leänh naøy di chuyeån 1 byte döõ lieäu duøng caùch ñaùnh ñòa chæ tröïc tieáp ñeå xaùc  
ñònh “ñòa chæ nguoàn” (5FH). Ñích nhaän döõ lieäu ñöôïc ngaàm xaùc ñònh trong maõ  
leänh laø thanh ghi tích luõy A.  
RAM beân trong cuõng coù theå ñöôïc truy xuaát baèng caùch ñaùnh ñòa chæ giaùn tieáp  
qua Ri. Ví duï, hai leänh sau thi haønh cuøng nhieäm vuï nhö leänh ñôn ôû treân :  
MOV R0,#5FH  
MOV A,R0  
Leänh ñaàu duøng ñòa chæ töùc thôøi ñeå di chuyeån giaù trò 5FH vaøo thanh ghi R0, vaø  
leänh thöù hai duøng ñòa chæ tröïc tieáp ñeå di chuyeån döõ lieäu “ñöôïc troû bôûi R0” vaøo  
thanh ghi tích luõy.  
b. RAM ñòa chæ hoùa töøng bit :  
8951 chöùa 210 bit ñöôïc ñòa chæ hoùa, trong ñoù 128 bit laø caùc ñòa chæ byte töø  
20H ÷ 2FH, vaø phaàn coøn laïi laø trong caùc thanh ghi chöùc naêng ñaëc bieät.  
YÙ töôûng truy xuaát töøng bit rieâng reõ baèng phaàn meàm laø moät ñaëc tính thuaän lôïi  
cuûa vi ñieàu khieån noùi chung. Caùc bit coù theå ñöôïc ñaët, xoùa, AND, OR … vôùi moät  
leänh ñôn. Ña soá caùc vi xöû lyù ñoøi hoûi moät chuoãi leänh ñoïc-söûa-ghi ñeå ñaït ñöôïc  
hieäu quaû töông töï. Hôn nöõa, caùc port I/O cuõng ñöôïc ñòa chæ hoùa töøøng bit laøm ñôn  
giaûn phaàn meàm xuaát nhaäp töøng bit.  
Coù 128 bit ñöôïc ñòa chæ hoùa ña duïng ôû caùc byte töø 20H ÷ 2FH. Caùc ñòa chæ  
naøy ñöôïc truy xuaát nhö caùc byte hoaëc caùc bit tuøy thuoäc vaøo leänh ñöôïc duøng. Ví  
duï, ñeå ñaët laïi bit 67H, ta duøng leänh sau :  
SETB 67H  
Chuù yù raèng “ñòa chæ bit 67H” laø bit coù troïng soá lôùn nhaát (MSB) ôû “ñòa chæ  
byte 2CH”. Leänh treân seõ khoâng taùc ñoäng ñeán caùc bit khaùc ôû cuøng ñòa chæ byte  
naøy. Caùc vi xöû lyù phaûi thi haønh nhieäm vuï töông töï nhö sau :  
MOV A,2CH  
ORL A,#10000000B  
MOV 2CH,A  
;ñoïc caû byte  
;set MSB  
;ghi laïi byte  
8
Vi Điều Khiển 8051  
Lê Chí Thông – [email protected]  
c. Caùc bank thanh ghi :  
32 byte thaáp nhaát cuûa boä nhôù noäi daønh cho caùc bank thanh ghi. Boä leänh cuûa  
8951 hoã trôï 8 thanh ghi (R0 ÷ R7) vaø theo maëc ñònh (sau khi RESET heä thoáng)  
caùc thanh ghi naøy ôû ñòa chæ 00H ÷ 07H. Leänh sau ñaây seõ ñoïc noäi dung ôû ñòa chæ  
05H vaøo thanh ghi tích luõy :  
MOV  
A,R5  
Ñaây laø leänh 1 byte duøng ñòa chæ thanh ghi. Taát nhieân, thao taùc töông töï coù theå  
ñöôïc thi haønh baèng leänh 2 byte duøng ñòa chæ tröïc tieáp naèm trong byte thöù hai :  
MOV  
A,05H  
Caùc leänh duøng thanh ghi töø R0 ÷ R7 thì seõ ngaén hôn vaø nhanh hôn caùc leänh  
töông öùng nhöng duøng ñòa chæ tröïc tieáp. Caùc thanh ghi döõ lieäu ñöôïc duøng thöôøng  
xuyeân neân duøng moät trong caùc thanh ghi naøy .  
Bank thanh ghi tích cöïc coù theå chuyeån ñoåi baèng caùch thay ñoåi caùc bit choïn  
bank thanh ghi trong töø traïng thaùi chöông trình (Program Status Word). Giaû söû  
raèng bank thanh ghi 3 ñöôïc tích cöïc, leänh sau seõ ghi noäi dung cuûa thanh ghi A  
vaøo ñòa chæ 18H :  
MOV  
R0,A  
YÙ töôûng duøng caùc “bank thanh ghi “ cho pheùp “chuyeån höôùng” chöông trình  
nhanh vaø hieäu quaû (töøng phaàn rieâng reõ cuûa phaàn meàm seõ coù moät boä thanh ghi  
rieâng khoâng phuï thoäc vaøo caùc phaàn khaùc).  
4) Caùc thanh ghi chöùc naêng ñaëc bieät :  
Caùc thanh ghi noäi cuûa 8951 ñöôïc truy xuaát ngaàm ñònh bôûi boä leänh. Ví duï leänh  
“INC A” seõ taêng noäi dung cuûa thanh ghi tích luõy A leân 1. Taùc ñoäng naøy ñöôïc  
ngaàm ñònh trong maõ leänh.  
Caùc thanh ghi trong 8951 ñöôïc ñònh daïng nhö moät phaàn cuûa RAM treân chip.  
Vì vaäy, moãi thanh ghi seõ coù moät ñòa chæ (ngoaïi tröø thanh ghi ñeám chöông trình vaø  
thanh ghi leänh vì caùc thanh ghi naøy hieám khi bò taùc ñoäng tröïc tieáp). Ñoù laø lyù do  
taïi sao treân 8951 coù nhieàu thanh ghi nhö vaäy. Cuõng nhö R0 ÷ R7, coù 21 thanh ghi  
chöùc naêng ñaëc bieät SFR (Special Function Register) ôû vuøng treân cuûa ñòa chæ  
RAM treân chip, töø ñòa chæ 80H ÷ FFH. Chuù yù raèng haàu heát 128 ñòa chæ töø 80H  
ñeán FFH khoâng ñöôïc ñònh nghóa. Chæ coù 21 ñòa chæ SFR laø ñöôïc ñònh nghóa.  
Ngoaïi tröø thanh ghi tích luõy A coù theå truy xuaát ngaàm ñònh nhö ñaõ noùi, ña soá  
caùc SFR ñöôïc truy xuaát duøng ñòa chæ tröïc tieáp. Chuù yù raèng moät vaøi SFR coù theå  
9
Vi Điều Khiển 8051  
Lê Chí Thông – [email protected]  
ñöôïc ñòa chæ hoùa bit hoaëc byte. Ngöôøi thieát keá phaûi caån troïng khi truy xuaát bit vaø  
byte. Ví duï leänh sau:  
SETB  
0E0H  
Seõ set bit 0 trong thanh ghi tích luõy, caùc bit coøn laïi khoâng ñoåi. Ta thaáy raèng  
0E0H laø ñòa chæ byte cuõng ñoàng thôøi laø ñòa chæ bit coù troïng soá nhoû nhaát trong  
thanh ghi tích luõy. Vì leänh set bit chæ taùc ñoäng leân bit neân chæ coù ñòa chæ bit laø coù  
hieäu quaû.  
a) Töø traïng thaùi chöông trình (Program Status Word) :  
Naèm ôû ñòa chæ D0H chöùa caùc bit traïng thaùi nhö baûng toùm taét sau :  
Bit  
Kyù hieäu  
CY  
Ñòa chæ  
D7H  
D6H  
D5H  
D4H  
D3H  
YÙ nghóa  
Côø nhôù  
Côø nhôù phuï  
PSW.7  
PSW.6  
PSW.5  
PSW.4  
PSW.3  
AC  
F0  
RS1  
RS0  
Côø 0  
Bit 1 choïn Bank thanh ghi  
Bit 1 choïn Bank thanh ghi  
00 = bank 0 : ñòa chæ 00H÷07H  
01 = bank 1 : ñòa chæ 08H÷0FH  
10 = bank 2 : ñòa chæ 10H÷17H  
11 = bank 3 : ñòa chæ 18H÷1FH  
Côø traøn  
PSW.2  
PSW.1  
PSW.0  
OV  
-
P
D2H  
D1H  
D0H  
Döï tröõ  
Côø parity chaün  
* Côø nhôù :  
Côø nhôù CY coù coâng duïng keùp. Thoâng thöôøng noù duøng cho caùc leänh toaùn hoïc :  
noù seõ ñöôïc set neáu coù moät soá nhôù sinh ra bôûi pheùp coäng hoaëc moät soá möôïn bôûi  
pheùp tröø. Ví duï, neáu thanh ghi tích luõy chöùa FFH, thì leänh sau :  
ADD A,#1  
Seõ traû veà thanh ghi tích luõy keát quaû 00H vaø set côø nhôù trong PSW.  
Côø nhôù cuõng coù theå xem nhö moät thanh ghi 1 bit cho caùc leänh luaän lyù thi  
haønh treân bit. Ví duï, leänh sau seõ AND bit 25H vôùi côø nhôù vaø ñaët keát quaû trôû vaøo  
trong côø nhôù  
ALN  
C,25H  
10  
Vi Điều Khiển 8051  
* Côø nhôù phuï :  
Lê Chí Thông – [email protected]  
Khi coäng caùc soá BCD, côø nhôù phuï (AC) ñöôïc set neáu keát quaû cuûa 4 bit thaáp  
trong khoaûng töø 0AH ñeán 0FH. Neáu caùc giaù trò coäng ñöôïc laø soá BCD, thì sau  
leänh caàn coù DA A (hieäu chænh thaäp phaân thanh ghi tích luõy ) ñeå mang keát quaû  
lôùn hôn 9 veà taàm töø 0÷9.  
* Côø 0 :  
Côø 0 (F0) laø moät bit côø ña duïng daønh cho caùc öùng duïng cuûa ngöôøi duøng.  
* Caùc bit choïn bank thanh ghi :  
Caùc bit chon bank thanh ghi (RS) vaø RS1) ñöôïc xoùa sau khi reset heä thoáng  
(choïn maëc ñònh thanh ghi R0÷R7 cuûa bank 0), coù theå thay ñoåi baèng phaàn meàm  
neáu caàn. Ví duï, ba leänh sau cho pheùp choïn bank thanh ghi 3 vaø chuyeån noäi dung  
cuûa thanh ghi R7 vaøo thanh ghi tích luõy :  
SETB RS1  
SETB RS0  
MOV A,R7  
Khi chöông trình ñöôïc hôïp dòch, caùc bit ñòa chæ ñuùng seõ ñöôïc thay theá cho caùc  
kyù hieäu RS0 vaø RS1.  
* Côø traøn :  
Côø traøn (OV) ñöôïc set sau moät leänh coäng hoaëc tröø neáu coù moät pheùp toaùn bò  
traøn. Khi caùc soá coù daáu coäng hoaëc tröø vôùi nhau, phaàn meàm coù theå kieåm tra bit  
naøy ñeå xaùc ñònh xem keát quaû coù naèm trong taàm xaùc ñònh hay khoâng. Khi caùc soá  
khoâng daáu ñöôïc coäng, bit OV coù theå ñöôïc boû qua. Caùc keát quaû lôùn hôn +127  
hoaëc nhoû hôn –128 seõ set bit OV. Ví duï, pheùp coäng sau bò traøn vaø bit OV ñöôïc  
set:  
MOV  
A,#FFH  
ADD A,#01H  
Keát quaû trong thanh ghi A laø 00H khoâng phaûi laø keát quaû ñuùng, vì vaäy côø OV  
ñöôïc set.  
b) Thanh ghi B :  
Thanh ghi B ôû ñòa chæ F0H ñöôïc duøng cuøng vôùi thanh ghi tích luõy A cho caùc  
pheùp toaùn nhaân vaø chia. Leänh MUL AB seõ nhaân caùc giaù trò khoâng daáu 8 bit trong  
A vaø B roài traû veà keát quaû 16 bit trong A (byte thaáp) vaø B (byte cao). Leänh DIV  
AB seõ chia A cho B roài traû veà keát quaû nguyeân trong A vaø phaàn dö trong B.  
11  
Vi Điều Khiển 8051  
Lê Chí Thông – [email protected]  
Thanh ghi B cuõng coù theå xem nhö thanh ghi ñeäm ña duïng. Noù ñöôïc ñòa chæ hoùa  
töøng bit baèng caùc ñòa chæ bit F0H ñeán F7H.  
c) Con troû ngaên xeáp (Stack Pointer) :  
Stack Pointer laø moät thanh ghi 8 bit ôû ñòa chæ 81H. Noù chöùa ñòa chæ cuûa döõ  
lieäu ñang hieän haønh treân ñænh Stack. Caùc hoaït ñoäng cuûa Stack bao goàm vieäc ñaåy  
döõ lieäu vaøo stack (PUSH) vaø vieäc laáy döõ lieäu ra khoûi Stack (POP).  
Vieäc PUSH vaøo Stack seõ taêng SP leân 1 tröôùc khi döõ lieäu vaøo.  
Vieäc POP töø Stack seõ laáy döõ lieäu ra roài giaûm SP ñi 1.  
Vuøng Stack cuûa 8951 ñöôïc caát trong RAM noäi vaø ñöôïc giôùi haïn ñeán nhöõng  
ñòa chæ truy xuaát bôûi söï ñònh vò giaùn tieáp. Ta coù theå khôûi gaùn Stack hoaëc khoâng  
khiôû gaùn Stack. Neáu ta khoâng khôûi gaùn Stack thì maëc ñònh vuøng Stack seõ laø 07H  
vaø döõ lieäu ñaàu tieân ñöôïc ñöa vaøo vuøng nhôù 08H. Caùc thanh ghi Bank 1 (coù theå laø  
bank 2 hoaëc 3) seõ khoâng duøng ñöôïc nöõa vì vuøng RAM noäi naøy thaønh vuøng Stack.  
Ta chæ coù theå duøng caùc thanh ghi cuûa Bank 0. Neáu ta khôûi gaùn bank ghi taïi vuøng  
khaùc(ví duï 60H), thì caùc thanh ghi cuûa bank 0, 1, 2 vaø 3 vaãn coøn duøng ñöôïc. Ñeå  
khôûi gaùn SP vôùi söï baét ñaàu cuûa vuøng Stack taïi ñòa chæ 60H, ta laøm nhö sau :  
MOV SP,#5F.  
Ta ñöa vaøo SP soá 5F vì SP taêng leân 1 thaønh 60H tröôùc khi döõ lieäu ñaàu tieân  
vaøo Stack ñöôïc truy xuaát tröïc tieáp baèng leänh PUSH, POP ñeå caát döõ lieäu taïm thôøi  
vaø laáy laïi data, hoaëc tröïc tieáp baèng leänh goïi ACALL, LCALL vaø leänh quay laïi  
RET, RETI ñeå caát giöõ vaø laáy ra boä ñeám chöông trình.  
d) Con troû döõ lieäu (Data Pointer) :  
Data Pointer ñöôïc duøng ñeå truy xuaát boä nhôù maõ ngoaøi hoaëc boä nhôù döõ lieäu  
ngoaøi, noù laø moät thanh ghi 16 bit maø byte thaáp laø DPL ôû ñòa chæ 82H coøn byte  
cao laø DPH ôû ñòa chæ 83H. Ñeå ñöa noäi dung 55H vaøo RAM ngoaïi coù ñòa chæ  
1000H ta duøng 3 leänh nhö sau:  
MOV A,#55H  
MOV DPTR,#1000H  
MOV @DPTR,A  
Leänh thöù nhaát duøng söï ñònh vò tröïc tieáp ñeå ñöa haèng soá döõ lieäu 55H vaøo A.  
Leänh thöù hai cuõng töông töï nhö leänh thöù nhaát ñöa haèng soá döõ lieäu 1000H vaøo  
DPTR. Leänh cuoái cuøng duøng söï ñònh vò giaùn tieáp ñeå dòch chuyeån giaù trò 55H  
trong A vaøo vuøng nhôù RAM ngoaïi 1000H naèm trong DPTR.  
12  
Vi Điều Khiển 8051  
Lê Chí Thông – [email protected]  
c) Caùc Thanh ghi PORT xuaát nhaäp :  
Caùc port 0, 1, 2 vaø 3 coù caùc ñòa chæ töông öùng 80H, 90H, A0H, B0H. Caùc port  
0,2,3 khoâng coøn taùc duïng I/O nöõa neáu boä nhôù ngoaøi ñöôïc duøng vaøo moät soá chöùc  
naêng ñaëc bieät. Do ñoù chæ coøn port 1 coù taùc duïng xuaát nhaäp I/O.  
Taát caû caùc port ñeàu ñöôïc ñòa chæ hoùa bit, do ñoù coù theå giao tieáp vôùi beân ngoaøi  
maïnh meõ. Giaû söû nhö coù moät ñoäng cô ñöôïc noái ñeán bit 7 cuûa port 1 thì ta coù theå  
cho chaïy hoaëc taét noù chæ baèng moät leänh duy nhaát : SETB P1.7 hoaëc CLR P1.7.  
f) Caùc thanh ghi Timer (Timer Register) :  
8951 coù 2 boä : moät boä Timer 16 bit vaø moät boä Counter 16 bit, hai boä naøy  
duøng ñeå ñònh giôø luùc nghæ cuûa chöông trình hoaëc ñeám caùc söï kieän quan troïng.  
Timer 0 coù bit thaáp TL0 ôû ñòa chæ 8AH vaø coù bit cao TH0 ôû ñòa chæ 8CH. Timer 1  
coù bit thaáp TL1 ôû ñòa chæ 8BH vaø bit cao TH1 ôû ñòa chæ 8DH.  
Hoaït ñoäng ñònh thôøi ñöôïc cho pheùp bôûi thanh ghi TMOD (Timer Mode  
Register) ôû ñòa chæ 89H vaø thanh ghi ñieàu khieån ñònh thôøi TCON (Timer Control  
Register) ôû ñòa chæ 88H. Chæ coù TCON coù ñònh ñòa chæ bit.  
g) Thanh ghi port noái tieáp (Serial Port Register) :  
8951 chöùa moät port noái tieáp treân chip cho vieäc truyeàn thoâng tin vôùi nhöõng  
thieát bò noái tieáp khaùc nhö nhöõng thieát bò ñaàu cuoái, modem hoaëc ñeå giao tieáp IC  
khaùc (nhö boä bieán ñoåi AD, nhöõng thanh ghi di chuyeån, RAM …). Thanh ghi ñeäm  
döõ lieäu noái tieáp SBUF ôû ñòa chæ 99H giöõ caû vieäc phaùt döõ lieäu laãn thu döõ lieäu.  
Vieäc ghi leân SBUF ñeå LOAD döõ lieäu cho vieäc truyeàn vaø ñoïc SBUF ñeå truy xuaát  
döõ lieäu cho vieäc nhaän, nhöng mode hoaït ñoäng khaùc nhau ñöôïc laäp trình thoâng  
qua thanh ghi ñieàu khieån port noái tieáp SCON.  
i) Caùc thanh ghi ngaét (Interrup Register) :  
8951 coù hai caáu truùc ngaét öu tieân, 5 boä nguoàn. Nhöõng Interrup bò maát taùc  
duïng sau khi heä thoáng Reset (bò caám) vaø sau ñoù ñöôïc cho pheùp bôûi vieäc ghi leân  
thanh ghi cho pheùp ngaét IE (Interrup Enable Register) ôû ñòa chæ A8H. Möùc öu  
tieân ñöôïc ñaët vaøo thanh ghi öu tieân ngaét IP (Interrup Priolity Level) taïi ñòa chæ  
B8H. Caû hai thanh ghi treân ñeàu coù bit ñòa chæ.  
h) Thanh ghi ñieàu khieån nguoàn PCON (Power Control Regiester) :  
Thanh ghi PCON khoâng coù bit ñònh vò, noù ôû ñòa chæ 87H bao goàm caùc bit ñòa  
chæ toång hôïp. Caùc bit PCON ñöôïc toùm taét nhö sau :  
Bit 7 (SMOD) : Bit coù toác ñoä Baud ôû mode 1,2,3 ôû port noái tieáp khi set.  
Bit 6,5,4  
: khoâng coù ñòa chæ.  
Bit 3 (GF1)  
Bit 2 (GF2)  
: Bit 1 cuûa côø ña naêng.  
: Bit 2 cuûa côø ña naêng.  
13  
Vi Điều Khiển 8051  
Lê Chí Thông – [email protected]  
Bit 1 (PD)  
Bit 0 (IDL)  
: set ñeå khôûi ñoäng mode Power Down vaø thoaùt ra ñeå reset.  
: set ñeå khôûi ñoäng mode Idle vaø thoaùt ra khi ngaét hoaëc reset.  
Caùc bit ñieàu khieån Power laø Power Down vaø Idle coù taùc duïng chính trong taát  
caû caùc IC hoï MSC-51 nhöng chæ ñöôïc thi haønh trong söï bieân dòch cuûa CMOS.  
Mode Idle : khi coù leänh set bit IDL thì noù ñöôïc thi haønh tröôùc khi vaøo mode  
Idle. Trong mode Idle, tín hieäu clock ñöôïc ñoùng coång bôûi CPU, nhöng khoâng  
ñöôïc ñoùng coång bôûi boä ngaét, timer, port noái tieáp. Caùc traïng thaùi cuûa CPU ñöôïc  
baûo quaûn, noäi dung cuûa taát caû caùc thanh ghi ñöôïc duy trì, caùc chaân port giöõ  
nguyeân möùc logic, hai tín hieäu ALE vaø PSEN ñöôïc giöõ möùc cao. Ñeå keát thuùc  
Idle, ta xoùa bit IDL (hoaëc reset heä thoáng).  
Mode Power Down : coù moät leänh set bit PD thì leänh naøy thi haønh tröôùc khi  
vaøo Mode PD. Trong mode Power Down, giao ñoäng treân chip ngöøng, taát caû caùc  
leänh ngöøng hoaït ñoäng, noäi dung RAM treân chip ñöôïc giöõ laïi, caùc chaân port giöõ  
nguyeân möùc logic, hai tín hieäu ALE vaø PSEN ñöôïc giöõ möùc thaáp. Thoaùt khoûi  
möùc naøy khi reset heä thoáng.  
Trong suoát quaù trình hoaït ñoäng cuûa Mode PD, Vcc coù theå xuoáng thaáp 2V.  
Chuù yù Vcc seõ ñöôïc giöõ khoâng cho haï thaáp cho ñeán sau khi mode PD ñöôïc vaøo,  
vaø ñeå khoâi phuïc Vcc ñeán 5V toái thieåu 10 chu kyø dao ñoäng tröôùc khi chaân RST  
xuoáng thaáp trôû laïi.  
5) Boä nhôù ngoaøi (External Memory) :  
Boä nhôù ngoaøi cuûa caùc vi ñieàu khieån raát quan trong ñeå môû roäng taàm hoaït  
ñoäng lôùn hôn Resources treân chip ñeå traùnh söï thieáu huït cuûa thieát bò ñöôïc nhaø saûn  
xuaát quy ñònh. Hoï MCS-51 cho pheùp môû roäng vuøng nhôù maõ ngoaøi 64KB vaø vuøng  
nhôù döõ lieäu ngoaøi 64KB. Nhöõng ngoaïi vi cuõng ñöôïc theâm vaøo ñeå môû roäng theâm  
khaû naêng xuaát nhaäp I/O vaø chuùng trôû thaønh vuøng nhôù döõ lieäu ngoaøi söû duïng nhö  
baûn ñoà nhôù I/O. Khi duøng boä nhôù ngoaøi thì port trôû thaønh ñòa chæ ña keânh (A0 ÷  
A7) vaø bus döõ lieäu (D0 ÷ D7) maø tín hieäu ALE seõ choát byte cuûa ñòa chæ luùc baét  
ñaàu cuûa moãi chu kyø nhôù ngoaøi. Port 2 thöôøng ñöôïc duøng laøm byte cao cuûa bus  
ñòa chæ. Port 0 ñöôïc gheùp chung ñeå tieát kieäm chaân ra.  
Phöông phaùp chung ñöôïc saép ñaët ñeå laøm vieäc laø : trong suoát nöõa ñaàu chu  
kyø nhôù, byte thaáp cuûa ñòa chæ ñöôïc cung caáp bôûi port 0 vaø ñöôïc choát bôûi vieäc  
duøng tín hieäu ALE. Moät con choát 74HC373 (hoaëc töông ñöông) seõ giöõ byte thaáp  
cuûa ñòa chæ chæ choát laïi trong khoaûng thôøi gian cuûa chu kyø nhôù. Trong nöõa chu kyø  
nhôù thöù hai, port 0 ñöôïc söû duïng nhö bus döõ lieäu vaø döõ lieäu ñöôïc ñoïc hoaëc ghi  
tuøy thuoäc hoaït ñoäng ñoïc hay ghi.  
14  
Vi Điều Khiển 8051  
Lê Chí Thông – [email protected]  
Vieäc phaân keânh BUS döõ lieäu vaø BUS ñòa chæ ñöôïc theå hieän treân hình veõ  
sau :  
Memory cycle  
A0 A15  
÷
Address  
D0 D7  
÷
Data  
Nomultiplexed (24 pins)  
Memory cycle  
Address  
A0 A15  
÷
Address  
Data  
AD0 AD7  
÷
Multiplexed (16 pins)  
15  
Vi Điều Khiển 8051  
Lê Chí Thông – [email protected]  
a) Boä nhôù ngoaøi :  
Ngoaøi boä nhôù trong cuûa 8051 ta coù theå môû roäng boä nhôù cho 8051 cuï theå laø coù  
theå theâm 64 Kb ROM vaø 64 Kb RAM. Khi duøng theâm boä nhôù ngoaøi, nhaø saûn  
xuaát khuyeán khích duøng Port 0 laøm Bus döõ lieäu (D0 - D7) ñoàng thôøi laø bus ñòa  
chæ cuûa byte thaáp (A0 - A7) baèng tín hieäu choát ALE ñeå choát byte thaáp cuûa ñòa chæ  
khi baét ñaàu moãi chu kyø boä nhôù ngoaøi. Coøn Port 2 duøng cho byte cao cuûa bus ñòa  
chæ. Caùch toå chöùc ñeå Port 0 vöøa mang döõ lieäu vöøa mang ñòa chæ, trong nöûa ñaàu  
chu kyø boä nhôù byte ñòa chæ thaáp ñöôïc xuaát ra töø Port 0 vaø ñöôïc choát laïi baèng tín  
hieäu ALE. IC choát 74HC373 hoaëc töông ñöông seõ giöõ byte thaáp cuûa ñòa chæ naøy  
ñeán heát chu kyø boä nhôù. Trong nöûa chu kyø thöù hai cuûa chu kyø boä nhôù, Port 0 ñöôïc  
duøng nhö bus döõ lieäu, vaø döõ lieäu naøy ñöôïc ñoïc hay laø vieát tuøy thuoäc vaøo thao taùc  
cuûa leänh.  
PORT 0  
EA  
D0 – D7  
A0 – A7  
D
G
.
Q
ALE  
74373  
A8 – A15  
PORT 2  
8951  
Boä nhôù ngoaøi  
Chu kyø maùy  
Ñòa chæ  
A0–A15  
D0–D7  
Döõ lieäu  
a.Khoâng Multiplexed  
Chu kyø maùy  
Ñòa chæ  
A8–A15  
AD0–AD7  
Ñòa chæ  
Döõ lieäu  
b.Coù Multiplexed  
16  
Vi Điều Khiển 8051  
Lê Chí Thông – [email protected]  
b) Truy xuaát ROM:  
ROM laø boä nhôù chæ ñoïc vaø ñöôïc cho pheùp truy xuaát baèng tín hieäu PSEN.  
Caùch keát noái phaàn cöùng giöõa 8051 vôùi ROM nhö hình veõ.  
Moãi chu kyø maùy keùo daøi khoaûng 12 xung clock. Neáu 8051 hoaït ñoäng vôùi  
nguoàn dao ñoäng laø 12Mh thì thôøi gian cuûa moät chu kyø maùy laø 1s. Giaûn ñoà thôøi  
gian cuûa hoaït ñoäng ñoïc boä nhôù ñöôïc chæ ra ôû hình.  
Ta thaáy trong moät chu kyø maùy, xung ALE xuaát hieän hai laàn vaø hai byte ñöôïc  
ñoïc töø ROM (töø leänh hieän haønh laø leänh moät byte thì byte thöù hai seõ ñöôïc boû  
qua).  
D0 – D7  
A0 – A7  
PORT 0  
EA  
D
G
.
Q
ALE  
74373  
PORT 2  
PSEN  
A8 – A15  
OE  
o
o
EPROM  
8951  
c) Truy xuaát RAM :  
RAM ngoaøi ñöôïc truy xuaát baèng caùc tín hieäu Read (RD) vaø Write (WR) ôû  
caùc chaân P3.7 vaø P3.6 töông öùng. Leänh duy nhaát truy xuaát RAM laø leänh MOVX  
söû duïng moät trong caùc thanh ghi data pointer (DPTR), R0, R1 nhö thanh ghi ñòa  
chæ. RAM giao tieáp vôùi 8051 gioáng nhö caùch thöùc cuûa EPROM chæ khaùc nhau ôû  
ñöôøng RD noái vôùi chaân Output Enable (OE) cuûa RAM vaø WR noái vôùi chaân W  
cuûa RAM.  
PORT 0  
EA  
D0 – D7  
A0 – A7  
D
G
.
Q
ALE  
74373  
PORT 2  
A8 – A15  
RD  
WR  
o
o
o
o
OE  
WR  
PSEN  
8951  
CS  
o
o
NC  
.
RAM  
17  
Vi Điều Khiển 8051  
Lê Chí Thông – [email protected]  
d) Giaûi maõ ñòa chæ cho 8951:  
Neáu coù nhieàu chip ROM hoaëc RAM cuøng giao tieáp vôùi 8051, vaán ñeà ñöôïc  
ñaët ra laø phaûi giaûi maõ ñòa chæ cho chuùng. Vaán ñeà giaûi maõ cuõng töông töï nhö caùc  
vi xöû lyù.  
Thoâng thöôøng ngöôøi ta duøng IC giaûi maõ nhö 74HC138, noái caùc chaân ra cuûa  
noù vôùi caùc ñaàu choïn chip (Chip Select CS) cuûa ROM hoaëc RAM. Ñieàu naøy ñöôïc  
minh hoïa trong hình treân ñeå giaûi maõ cho heä thoáng duøng nhieàu IC EPROM  
8Kx8bit (2764) vaø caùc IC RAM 8K (6264)  
e) Xeáp choàng caùc vuøng nhôù chöông trình vaø döõ lieäu beân ngoaøi:  
Vì boä nhôù chöông trình laø ROM, neân naøy sinh moät vaán ñeà baát tieän khi phaùt  
trieån phaàn meàm cho 8951. Ñoù laø laøm caùch naøo phaàn meàm coù theå söûa ñoåi chöông  
trình vaø ghi trôû laïi khi noù ñöôïc chöùa trong boä nhôù “chæ ñoïc”. Caùch giaûi quyeát laø  
xeáp choàng caùc vuøng nhôù chöông trình vaø döõ lieäu. Moät IC RAM coù theå chöùa caû  
chöông trình vaø döõ lieäu baèng caùch noái ñöôøng OE cuûa RAM vaøo moät maïch logic  
AND cuûa PSEN vaø RD. Maïch treân hình sau cho pheùp moät IC RAM ñöôïc duøng  
laøm boä nhôù chöông trình vaø döõ lieäu:  
WR  
o WR  
RAM  
RD  
PSEN  
o
OE  
Vaäy moät chöông trình coù theå ñöôïc taûi vaøo RAM (baèng caùch ghi noù nhö boä  
nhôù döõ lieäu) vaø thi haønh (baèng caùch truy xuaát noù nhö boä nhôù chöông trình).  
6. Leänh Reset:  
8951 ñöôïc reset baèng caùch giöõ chaân RST ôû möùc cao ít nhaát trong hai chu kyø  
maùyvaø traû noù veà möùc thaáp.RST coù theå ñöôïc kích baèng tay duøng moät nuùt baám  
hoaëc coù theå kích khi ngaét ñieän duøng moät maïch RC. Traïng thaùi cuûa taát caû caùc  
thanh ghi cuûa 8951 sau khi reset heä thoáng ñöôïc toùm taét trong baûng sau:  
18  
Vi Điều Khiển 8051  
Lê Chí Thông – [email protected]  
Thanh ghi  
Ñeám chöông trình  
Noäi dung  
0000 H  
Tích luõy  
00 H  
00 H  
B
PSW  
00 H  
SP  
07 H  
DPTR  
Port 0 ÷ 3  
IP  
0000 H  
FF H  
XXX00000 B  
0XX00000 B  
00 H  
IE  
Caùc thanh ghi ñònh thôøi  
SCON  
00 H  
SBUF  
00 H  
PCON (HMOS)  
PCON (CMOS)  
0XXXXXXX B  
0XXX0000 B  
Quan troïng nhaát trong caùc thanh ghi treân laø thanh ghi ñeám chöông trình, noù  
ñöôïc ñaët laïi 0000H. Khi SRT trôû laïi möùc thaáp, vieäc thi haønh chöông trình luoân  
luoân baét ñaàu ôû ñòa chæ ñaàu tieân trong boä nhôù chöông trình: ñòa chæ 0000H. Noäi  
dung cuûa RAM treân chip khoâng thay ñoåi bôûi leänh Reset.  
19  
Vi Điều Khiển 8051  
Lê Chí Thông – [email protected]  
II – HOAÏT ÑOÄNG CUÛA BOÄ ÑÒNH THÔØI (Timer) :  
1) Giôùi thieäu:  
Moät ñònh nghiaõ ñôn giaûn cuûa Timer laø moät chuoãi caùc Flip – Flop chia ñoâi taàn  
soá noái tieáp vôùi nhau, chuùng nhaän tín hieäu vaøo laøm xung nhòp. Ngoõ ra cuaû taàng  
cuoái laøm xung nhòp cho Flip – Flop baùo traøn cuûa Timer (Flip – Flop côø). Giaù trò  
nhò phaân trong caùc Flip – Flop cuûa Timer coù theå xem nhö moät soá ñeám soá xung  
nhòp (hoaït caùc söï kieän) töø khi khôûi ñoäng Timer. Ví duï Timer 16 Bit seõ ñeám leân  
töø 0000H ñeán FFFFH. Côø baùo traøn seõ leân 1khi soá ñeám traøn töø FFFFH ñeán  
0000H.  
8951 coù 2 Timer 16 bit, moãi Timer coù boán caùch laøm vieäc. Ngöôøi ta söû duïng  
caùc Timer ñeå:  
a) ñònh khoaûng thôøi gian,  
b) ñeám söï kieän,  
c) taïo toác ñoä baud cho port noái tieáp.  
Trong caùc öùng duïng ñònh khoaûng thôøi gian, ngöôøi ta laäp trình Timer trong  
khoaûng thôøi gian ñeàu ñaën vaø ñaët côø traøn timer. Côø ñöôïc duøng ñeå ñoàng boä hoaù  
chöông trình ñeå thöïc hieän moät taùc ñoäng nhö kieån tra traïng thaùi cuaû caùc ngoõ vaøo  
hoaëc gôûi söï kieän ra caùc ngoõ ra. Caùc öùng duïng khaùc coù theå söû duïng vieäc taïo xung  
nhòp ñeàu ñaën cuaû Timer ñeå ño thôøi gian troâi qua giöõa hai söï kieän (ví duï : ño ñoä  
roäng xung).  
Ñeám söï kieän duøng ñeå xaùc ñònh soá laàn xaûy ra cuûa moät söï kieän. Moät söï kieän laø  
baát cöù taùc ñoäng ngoaøi naøo coù theå cung caáp moät chuyeån traïng thaùi treân moät chaân  
cuûa 8951. Caùc Timer cuõng coù theå cung caáp xung nhòp toác ñoä Baud cho port noái  
tieáp.  
Truy xuaát Timer cuûa 8951 duøng saùu thanh ghi chöùc naêng ñaëc bieät cho trong  
baûng sau:  
Teân thanh ghi  
ñaëc bieät  
Muïc ñích  
Ñòa chæ  
Bit ñöôïc ñòa chæ hoùa  
TCON  
TMOD  
TL0  
TL1  
TH0  
Ñieàu khieån  
Cheá ñoä  
Byte thaáp boä Timer 0  
Byte thaáp boä Timer 1  
Byte cao boä Timer 0  
Byte cao boä Timer 1  
88H  
89H  
8AH  
8BH  
8CH  
8DH  
Coù  
Khoâng  
Khoâng  
Khoâng  
Khoâng  
Khoâng  
TH1  
20  
Tải về để xem bản đầy đủ
pdf 51 trang baolam 18620 Free
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Vi điều khiển 8051 - Lê Chí Thông", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_vi_dieu_khien_8051_le_chi_thong.pdf