Giới thiệu vi điều khiển
AT89C51
Chương 1: GIỚI THIỆU AT89C51
I - TÓM TẮT PHẦN CỨNG:
1) Giới thiệu họ MCS51:
MSC-51 là một họ IC vi điều khiển (microcontroller), được phát triển chế tạo
và bán ở thị trường bởi hãng INTEL của Mỹ. Các nhà chế tạo IC khác như
SIEMENS của Đức, ADVANCED MICRO DEVICES, FUJITSU của Nhật và
PHILIPS của Hà Lan là các nhà cung cấp thiết bị trong họ MSC-51 được cấp
giấy bản quyền thứ hai, hãng ALMEL cũn
52 trang |
Chia sẻ: huongnhu95 | Lượt xem: 343 | Lượt tải: 0
Tóm tắt tài liệu Bài giảng Vi Điều Khiển-Giới thiệu vi điều khiển AT89C51 - Lê Hoàng Anh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
g 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 – chithong@gmail.com
2
Sô doà khoái hoï MCS51.
Interrupt
Control
Other
Register
128 byte
RAM
128 byte
RAM
8052
ROM
0K:8031
8032
4K:8051
8951
8K:8952
Timer 0
Timer 1
Timer 2
8952
CPU
Oscilator BUS
Coltrol
I/O Port Serial Port
TXD
RXD
Address/Data
EA
RS
T
INT1
INT0
Timer 2
(8952)
Timer 1
Timer 0
Serial
port
P0 P2 P1 P3
PSEN
ALE
RXD
RXD
T0
T1
Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com
3
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æ.
32
33
34
35
36
37
38
39P0.0
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
28
27
26
25
24
23
22
21
17
16
15
14
13
12
11
10
8
7
6
5
4
3
2
1P1.0
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P2.0
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P3.0
P3.7
P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
29
30
31
9
PSEN
ALE
RST
EA
20
40
VCC
VSS
8951
Sô ñoà chaân 8951
Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com
4
a) PORT 0 :
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 Cöùc naêng chuyeån ñoåi
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
RXD
TXD
INT0
INT1
T0
T1
WR
RD
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
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.
Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com
5
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.
Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com
6
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 :
30
General
Purpose
RAM
2F 7F 7E 7D 7C 7B 7A 79 78
2E 77 76 75 74 73 72 71 70
2D 6F 6E 6D 6C 6B 6A 69 68
2C 67 66 65 64 63 62 61 60
2B 5F 5E 5D 5C 5B 5A 59 58
2A 57 56 55 54 53 52 51 50
29 4F 4E 4D 4C 4B 4A 49 48
28 47 46 45 44 43 42 41 40
27 3F 3E 3D 3C 3B 3A 39 38
26 37 36 35 34 33 32 31 30
25 2F 2E 2D 2C 2B 2A 29 28
24 27 26 25 24 23 22 21 20
23 1F 1E 1D 1C 1B 1A 19 18
21 17 16 15 14 13 12 11 10
20 0F 0E 0D 0C 0B 0A 09 08
1F 07 06 05 04 03 02 01 00
1817
BANK 3
100F
BANK 2
0807
BANK 1
00 Default Register
Bank for R0 ÷ R7
Baûng toùm taét baûn ñoà vuøng nhôù
RAM treân chip
Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com
7
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
FF
F0 F7 F6 F5 F4 F3 F2 F1 F0 B
E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC
D0 D7 D6 D5 D4 D3 D2 - D0 PSW
B8 - - - BC BB BA B9 B8 IP
B0 B7 B6 B5 B4 B3 B2 B1 B0 P3
A8 AF - - AC AB AA A9 A8 IE
A0 A7 A6 A5 A4 A3 A2 A1 A0 P2
99 Not bit Addressable SBUF
98 9F 9E 9D 9C 9B 9A 99 98 SCON
90 97 96 95 94 93 92 91 90 P1
8D Not bit Addressable TH1
8C Not bit Addressable TH0
8B Not bit Addressable TL1
8A Not bit Addressable TL0
89 Not bit Addressable TMOD
88 8F 8E 8D 8C 8B 8A 89 88 TCON
87 Not bit Addressable PCON
83 Not bit Addressable DPH
82 Not bit Addressable DPL
81 Not bit Addressable SP
80 87 86 85 84 83 82 81 80 P0
aùc thanh ghi chöùc naêng ñaëc bieät
Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com
8
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 ;ñoïc caû byte
ORL A,#10000000B ;set MSB
MOV 2CH,A ;ghi laïi byte
Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com
9
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å
Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com
10
ñöôï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 Ñòa chæ YÙ nghóa
PSW.7 CY D7H Côø nhôù
PSW.6 AC D6H Côø nhôù phuï
PSW.5 F0 D5H Côø 0
PSW.4 RS1 D4H Bit 1 choïn Bank thanh ghi
PSW.3 RS0 D3H 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
PSW.2 OV D2H Côø traøn
PSW.1 - D1H Döï tröõ
PSW.0 P D0H 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
Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com
11
* Côø nhôù phuï :
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.
Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com
12
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.
Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com
13
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 1 cuûa côø ña naêng.
Bit 2 (GF2) : Bit 2 cuûa côø ña naêng.
Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com
14
Bit 1 (PD) : set ñeå khôûi ñoäng mode Power Down vaø thoaùt ra ñeå reset.
Bit 0 (IDL) : 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.
Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com
15
Vieäc phaân keânh BUS döõ lieäu vaø BUS ñòa chæ ñöôïc theå hieän treân hình veõ
sau :
A0 ÷ A15
D0 ÷ D7
Address
Data
Memory cycle
Memory cycle
Address
AD0 ÷ AD7
A0 ÷ A15
Nomultiplexed (24 pins)
Multiplexed (16 pins)
Address Data
Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com
16
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.
A0–A15
D0–D7
A8–A15
AD0–AD7
Chu kyø maùy
Chu kyø maùy
Ñòa chæ
Ñòa chæ
Ñòa chæ
Döõ lieäu
Döõ lieäu
a.Khoâng Multiplexed
b.Coù Multiplexed
PORT 0
EA
ALE
PORT 2
D0 – D7
A0 – A7
A8 – A15
Q D
G
.
74373
.
8951 Boä nhôù ngoaøi
Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com
17
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).
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
ALE
PORT 2
PSEN
D0 – D7
A0 – A7
A8 – A15
OE
Q D
G
.
74373
.
8951 EPROM
o o
PORT 0
EA
ALE
PORT 2
RD
WR
PSEN
D0 – D7
A0 – A7
A8 – A15
OE
WR
CS
Q D
G
.
74373
.
8951 RAM
o
o o
o o
o
.
NC
Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com
18
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:
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:
RAM
WR
OE
o
o
WR
RD
PSEN
Vi Điều Khiển 8051 Lê Chí Thông – chithong@gmail.com
19
Thanh ghi Noäi dung
Ñeám chöông trình
Tích luõy
B
PSW
SP
DPTR
Port 0 ÷ 3
IP
IE
Caùc thanh ghi ñònh thôøi
SCON
SBUF
PCON (HMOS)
PCON (CMOS)
0000 H
00 H
00 H
00 H
07 H
0000 H
FF H
XXX00000 B
0XX00000 B
00 H
00 H
00 H
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
Các file đính kèm theo tài liệu này:
- bai_giang_vi_dieu_khien_gioi_thieu_vi_dieu_khien_at89c51_le.pdf