BOÄ GIAÙO DUÏC VAØ ÑAØO TAÏO
TRÖÔØNG ÑAÏI HOÏC DAÂN LAÄP KYÕ THUAÄT COÂNG NGHEÄ
KHOA : ÑIEÄN TÖÛ – VIEÃN THOÂNG
ÑOÀ AÙN MOÂN HOÏC
ÑEÀ TAØI :
THIEÁT KEÁ-THI COÂNG MAÏCH ÑIEÀU KHIEÅN NHIEÄT ÑOÄ
Sinh vieân thöïc hieän : Nguyeãn Quang Hieáu.
Lôùp : 97ÑT04
MSSV 97ÑT890
1
LÔØI NOÙI ÑAÀU
Kyõ thuaät vi söû lyù hieän nay raát phaùt trieån , noù ñöôïc öùng duïng vaøo raát nhieàu lónh
vöïc nhö saûn xuaát coâng nghieäp ,töï ñoäng hoaù vaø coøn nhieàu lónh vöïc khaùc nöõa . So vôùi kyõ
thuaätsoá thì kyõ thuaät vi söû lyù nhoû goïn hôn raát nhieàu do noù ñöôïc tích hôïp laïi vaø ñöôïc laäp
trình ñeå ñieàu khieån .
Vôùi tính öu vieät cuûa vi xöû lyù thì trong phaïm vi ñoà aùn nhoû naøy em chæ tieán haønh
vieäc duøng vi xöû lyù ñeå ño vaø ñieàu khieån nhieät ñoä , ñaây chæ laø moät öùng duïng nhoû cuûa vi
xöû lyù trong caùc öùng duïng cuûa noù .
Nhöõng kieán thöùc hoïc ñöôïc coäng theâm hieåu bieát töø caùc taøi lieäu tham khaûo , tuy
coù theå hoaøn thaønh cuoán ñoà aùn naøy nhöng khoâng theå traùnh khoûi nhieàu thieáu soùt mong
thaày giaùo khi xem cuoán ñoà aùn naøy coù theå thoâng caûm.
Ñeå hoaøn thaønh cuoán ñoà aùn naøy em ñaõ nhaän ñöôïc söï chæ baûo taän tình cuûa thaày
giaùo höôùng daãn vaø söï giuùp ñôõ nhieät tình cuûa baïn beø . Cuoái cuøng em xin caûm ôn thaày
höôùng daãn Phaïm Huøng Kim Khaùnh ,thaày giaùo moân vi xöû lyù vaø caùc thaày coâ giaùo ñaõ
daïy cho em nhöõng kieán thöùc cô baûn ñeå em coù theå hoaøn thaønh cuoán ñoà aùn naøy.
Sinh vieân thöïc hieän
Nguyeãn Quang Hieáu.
2
PHAÀN A : CÔ SÔÛ LYÙ THUYEÁT
Chöông 1:
GIÔÙI THIEÄU CHUNG VEÀ BOÄ VI ÑIEÀU KHIEÅN
I.GIÔÙI THIEÄU :
Boä vi ñieàu khieån vieát taét laø Micro-controller, laø maïch tích hôïp treân moät
chip coù theå laäp trình ñöôïc, duøng ñeå ñieàu khieån hoaït ñoäng cuûa moät heä thoáng.
Theo caùc taäp leänh cuûa ngöôøi laäp trình, boä vi ñieàu khieån tieán haønh ñoïc, löu tröõ
thoâng tin, xöû lyù thoâng tin, ño thôøi gian vaø tieán haønh ñoùng môû moät cô caáu naøo
ñoù.
Trong caùc thieáh bò ñieän vaø ñieän vaø ñieän töû daân duïng, caùc boä vi ñieàu khieån,
ñieàu khieån hoaït ñoäng cuûa TV, maùy giaët, ñaàu ñoïc laser, ñieän thoïai, loø vi-ba …
Trong heä thoáng saûn xuaát töï ñoäng, boä vi ñieàu khieån ñöôïc söû duïng trong Robot,
daây chuyeàn töï ñoäng. Caùc heä thoáng caøng “thoâng minh” thì vai troø cuûa heä vi ñieàu
khieån caøng quan troïng.
II.KHAÛO SAÙT BOÄ VI ÑIEÀU KHIEÅN 8051 VAØ 8031:
IC vi ñieàu khieån 8051/8031 thuoäc hoï MCS51 coù caùc ñaët ñieåm sau :
- 4kbyte ROM (ñöôïc laäp trình bôûi nhaø saûn xuaát chæ coù ôû 8051)
- 128 buùyt RAM
- 4port I/0 8bit
- Hai boä ñònh thôøi 16bit
- Giao tieáp noái tieáp
- 64KB khoâng gian boä nhôù chöông trình môû roäng
- 64 KB khoâng gian boä nhôù döõ lieäu môû roäng
- moät boä xöû lí luaän lí (thao taùc treân caùc bit ñôn)
- 210 bit ñöôïc ñòa chæ hoùa
- boä nhaân / chia 4µs
3
1.CAÁU TRUÙC BEÂN TRONG CUÛA 8051 / 8031 :
INT\*1
INT\*0
TIMER2
TIMER1
PORT noái tieàp
Rom T1*
Ñieàu Caùc ùthanh 128 byte 4K-8051 Timer1
Ram Timer2 T2*
khieån ngaét ghi khaùc OK-8031
CPU
Taïo Ñieàu Caùc port Port
dao khieån bus I\O noái tieáp
EA\ RST PSEN ALE P0 P1 P2 P3
TXD* RXD*
Hình 2.1 : Sô Ñoà Khoái 8051 / 8031
4
Phaàn chính cuûa vi ñieàu khieån 8051 / 8031 laø boä xöû lí trung taâm (CPU:
central processing unit ) bao goàm :
- Thanh ghi tích luõy A
- Thanh ghi tích luõy phuï B, duøng cho pheùp nhaân vaø pheùp chia
- Ñôn vò logic hoïc (ALU : Arithmetic Logical Unit )
- Töø traïng thaùi chöông trình (PSW : Prorgam Status Word)
- Boán baêng thanh ghi
- Con troû ngaên xeáp
- Ngoaøi ra coøn coù boä nhôù chöông trình, boä giaûi maõ leänh, boä ñieàu khieån
thôøi gian vaø logic.
Ñôn vò xöû lí trung taâm nhaän tröïc tieáp xung töø boä giao ñoäng, ngoaøi ra coøn
coù khaû naêng ñöa moät tín hieäu giöõ nhòp töø beân ngoaøi.
Chöông trình ñang chaïy coù theå cho döøng laïi nhôø moät khoái ñieàu khieån ngaét
ôû beân trong. Caùc nguoàn ngaét coù theå laø : caùc bieán coá ôû beân ngoaøi , söï traøn boä
ñeám ñònh thôøi hoaëc cuõng coù theå laø giao dieän noái tieáp.
Hai boä ñònh thôøi 16 bit hoaït ñoäng nhö moät boä ñeám.
Caùc coång (port0, port1, port2, port3 ). Söû duïng vaøo muïc ñích ñieàu khieån.
Ôû coång 3 coù theâm caùc ñöôøng daãn ñieàu khieån duøng ñeå trao ñoåi vôùi moät boä
nhôù beân ngoaøi, hoaëc ñeå ñaàu noái giao dieän noái tieáp, cuõng nhö caùc ñöôøng ngaét
daãn beân ngoaøi.
Giao dieän noái tieáp coù chöùa moät boä truyeàn vaø moät boä nhaän khoâng ñoàng boä,
laøm vieäc ñoäc laäp vôùi nhau. Toác ñoä truyeàn qu oång noái tieáp coù theå ñaët trong vaûy
roäng vaø ñöôïc aán ñònh baèng moät boä ñònh thôøi.
Trong vi ñieàu khieån 8051 / 8031 coù hai thaønh phaàn quan troïng khaùc ñoù laø
boä nhôù vaø caùc thanh ghi :
Boä nhôù goàm coù boä nhôù Ram vaø boä nhôù Rom (chæ coù ôû 8031) duøng ñeå löu
tröõ döõ lieäu vaø maõ leänh.
Caùc thanh ghi söû duïng ñeå löu tröõ thoâng tin trong quaù trình xöû lí. Khi CPU
laøm vieäc noù laøm thay ñoåi noäi dung cuû aùc thanh ghi.
5
2.CHÖÙC NAÊNG CAÙC CHAÂN VI ÑIEÀU KHIEÅN :
40
30p
19 32
Vcc Po.7 AD7
XTAL1 Po.6 33 AD6
12MHz
Po.5 34 AD5
XTAL2 Po.4 35 AD4
18
30p Po.3 36 AD3
Po.2 37 AD2
Po.1 38 AD1
29 39
PSEN\ Po.0 AD0
30
ALE 8
P2.7
7
31 P2.6
EA\ 6
9 P2.5
RET 5
P2.4
4
P2.3
RD\ 17 3
P2.2
WR\ 16 2
P2.1
T1 15 1
P2.0
T0 14 28
13 P1.7 A15
INT1 27
12 P1.6 A14
INT0 26
11 P1.5 A13
TXD 25
10 P1.4 A12
RXD 24
P1.3 A11
23 A10
P1.2
22 A9
P1.1
Vss 21 A8
P1.0
20
Hình 2.2 : Sô Ñoà Chaân 8051
6
a.port0 : laø port coù 2 chöùc naêng ôû treân chaân töø 32 ñeán 39 trong caùc thieát keá
côõ nhoû
( khoâng duøng boä nhôù môû roäng ) coù hai chöùc naêng nhö caùc ñöôøng I/O. Ñoái vôùi
caùc thieát keá côõ lôùn ( vôùi boä nhôù môû roäng ) noù ñöôïc keát hôïp keânh giöõ a caùc
bus)
b.port1 : port1 laø moät port I/O treân caùc chaân 1-8. Caùc chaân ñöôïc kyù hieäu
P1.0, P1.1, P1.2 … coù theå duøng cho caùc thieát bò ngoaøi neáu caàn. Port1 khoâng coù
chöùc naêng khaùc, vì vaäy chuùng ta chæ ñöôïc duøng trong giao tieáp vôùi caùc thieát bò
ngoaøi.
c.port2 : port2 laø moät port 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.Port3 : port3 laø moät port 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 chöùc naêng, caùc coâng duïng chuyeån ñoåi coù lieân heä vôùi caùc
ñaëc tín ñaëc bieät cuûa 8051 / 8031 nhö ôû baûng sau :
Bit Teân Chöùc naêng chuyeån ñoåi
P3.0 RXD Döõ lieäu nhaän cho port noái tieáp
P3.1 TXD Döõ lieäu phaùt cho port noái tieáp
P3.2 INTO Ngaét 0 beân ngoaøi
P3.3 INT1 Ngaét 1 beân ngoaøi
P3.4 TO Ngoõ vaøo cuûa timer/counter 0
P3.5 T1 Ngoõ vaøo cuûa timer/counter 1
P3.6 WR Xung ghi boä nhôù döõ lieäu ngoaøi
P3.7 RD Xung ñoïc boä nhôù döõ lieäu ngoaøi
Baûng 2.1 : Chöùc naêng cuûa caùc chaân treân port3
e.PSEN (Program Store Enable ) : 8051 / 8031 coù 4 tín hieäu ñieàu khieån
7
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 bytes 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 vaø ñöôïc choát vaøo thanh ghi leänh cuûa
8051 ñeå giaûi maõ leänh. Khi thi haønh chöông trình trong ROM noäi (8051) PSEN
seõ ôû möùc thuï ñoäng (möùc cao).
f.ALE (Address Latch Enable ) :
tín hieäu ra 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
xöû lí 8585, 8088, 8086, 8051 duøng ALE moät caùch töông töï cho laøm vieäc giaûi caùc
keânh caùc bus ñòa chæ vaø döõ lieäu khi port 0 ñöôïc duøng trong cheá ñoä chuyeån ñoåi
cuûa noù : vöøa laø bus döõ lieäu vöøa laø buùyt thaáp cuûa ñòa chæ, ALE laø tín hieäu ñeå choát
ñòa chæ vaøo moät thanh ghi beân ngoaøi trong nöõa ñaàu cuûa chu kyø boä nhôù. Sau ñoù,
caùc ñöôøng port 0 duøng ñeå xuaát hoaëc nhaäp döõ lieäu trong nöõa sau chu kyø cuûa boä
nhôù.
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ø nguoàn xung nhòp cho caùc heä thoáng. Neáu xung treân 8051
laø 12MHz thì ALE coù taàn soá 2MHz. Chæ ngoaïi tröø khi thi haønh leänh MOVX,
moät xung ALE seõ bò maát. Chaân naøy cuõng ñöôïc laøm ngoõ vaøo cho xung laäp trình
cho EPROM trong 8051.
g.EA (External Access) :
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, 8051 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. Khi duøng 8031, EA luoân ñöôïc noái möùc thaáp vì khoâng coù boä
nhôù chöông trình treân chip. Neáu EA ñöôïc noái möùc thaáp boä nhôù beân trong
chöông trình 8051 seõ bò caám vaø chöông trình thi haønh töø EPROM môû roäng.
Ngöôøi ta coøn duøng chaân EA laøm chaân caáp ñieän aùp 21V khi laäp trình cho
EPROM trong 8051.
h.SRT (Reset) :
Ngoõ vaøo RST treân chaân 9 laø ngoõ reset cuûa 8051. Khi tín hieäu naøy ñöôïc
ñöa leân muùc cao (trong ít nhaát 2 chu kyø maùy ), caùc thanh ghi trong 8051 ñöôïc
taûi nhöõng giaù trò thích hôïp ñeå khôûi ñoäng heä thoáng.
i.Caùc ngoõ vaøo boä dao ñoäng treân chip :
Nhö ñaõ thaáy trong caùc hình treân , 8051 coù moät boä dao ñoäng treân chip. Noù
thöôøng ñöôïc noái vôùi thaïch anh giöõa hai chaân 18 vaø 19. Caùc tuï giöõa cuõng caàn
thieát nhö ñaõ veõ. Taàn soá thaïch anh thoâng thöôøng laø 12MHz.
8
j.Caùc chaân nguoàn :
8051 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.
3_ Caùc thanh ghi ñaëc bieät :
a. Caùc thanh ghi port xuaát nhaäp:
Caùc port cuûa 8051/8031 bao goàm Port 0 ôû ñòa chæ 80H, Port 1 ôû ñòa chæ 90
H, Port 2 ôû ñòa chæ A0H vaø Port 3 ôû ñòa chæ B0H. Taát caû caùc Port ñeàu ñöôïc ñòa
chæ hoùa töøng bit. Ñieàu ñoù cung caáp moät khaû naêng giao tieáp thuaän lôïi.
b. Caùc thanh ghi timer:
8051/8031 chöùa 2 boä ñònh thôøi ñeám 16 bit ñöôïc duøng trong vieäc ñònh thôøi
hoaëc ñeám söï kieän. Timer 0 ôû ñòa chæ 8AH (TL0:byte thaáp) vaø 8CH (TH0:byte
cao).Timer 1 ôû ñòa chæ 8BH (TL1:byte thaáp) vaø 8DH (TH1: byte cao). vieäc vaän
haønh timer ñöôïc set bôûi thanh ghi Timer Mode (TMOD) ôû ñòa chæ 89H vaø thanh
ghi ñieàu khieån timer (TCON) ôû ñòa chæ 88H. Chæ coù TCON ñöôïc ñòa chæ hoùa
töøng bit.
c. Caùc thanh ghi port noái tieáp:
8051/8031 chöùc moät port noái tieáp treân chip daønh cho vieäc trao ñoåi thoâng
tin vôùi caùc thieát bò noái tieáp nhö maùy tính, modem hoaëc cho vieäc giao tieáp vôùi
caùc IC khaùc coù giao tieáp noái tieáp (coù boä chuyeån ñoåi A/D, caùc thanh ghi dòch..).
Moät thanh ghi goïi laø boä ñeäm döõ lieäu noái tieáp (SBUF) ôû ñòa chæ 99H sseõ giöõ caû
hai giöõ lieäu truyeàn vaø nhaän. Khi truyeàn döõ lieäu thì ghi leân SBUf, khi nhaän döõ
lieäu thì ñoïc SBUF. Caùc mode vaän haønh khaùc nhau ñöôïc laäp trình qua thanh ghi
ñieàu khieån port noái tieáp (SCON) (ñöôïc ñòa chæ hoùa töøng bit) ôû ñòa chæ 98H.
d. Caùc thanh ghi ngaét:
8051/8031 coù caáu truùc 5 nguoàn ngaét, 2 möùc öu tieân. Caùc ngaét bò caám sau
khi reset heä thoáng vaø seõ ñöôïc cho pheùp baèng vieäc ghi thanh ghi cho pheùp ngaét
(IE) ôû ñòa chæ 8AH. Caû hai thanh ghi ñöôïc ñòa chæ hoùa töøng bit.
e. Caùc thanh ghi ñieàu khieån coâng suaát:
Thanh ghi ñieàu khieån coâng suaát (PCON) ôû ñòa chæ 87H chöùa nhieàu bit ñieàu
khieån.
9
4/. Leänh reset.
8051/8031 ñöôïc reset baèng caùch giöõ chaân RST ôû möùc cao ít nhaát trong 2 chu
kyø maùy vaø traû noù veà muùc thaáp. RST coù theå ñöôïc kích khi caáp ñieän duøng moät
maïch R-C.
+5V
+5V
100 10UF
8,2K
Hình 2.9: Maïch reset heä thoáng.
Traïng thaùi cuûa taát caû caùc thanh ghi cuûa 8051/8031 sau khi reset heä thoáng
ñöôïc toùm taét trong baûng sau:
Thanh ghi Noäi dung
Ñeám chöông trình 0000H
Tích luõy 00H
B 00H
PSW 00H
SP 07H
DPTR 0000H
Port 0-3 FFH
IP XXX00000B
IE 0XX00000B
Caùc thanh ghi ñònh thôøi 00H
SCON 00H
10
SBUF 00H
PCON(HMOS) 0XXXXXXB
PCON(CMOS) 0XXX0000B
Baûng 2.3: Traïng thaùi caùc thanh ghi sau khi reset
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 RST trôû laïi möùc thaáp, vieäc thi haønh chöông trình luoân
baét ñaàu ôû ñòa chæ ñaàu tieân trong boä nhôù trong chöông trình: ñòa chæ 0000H. Noäi
dung cuûa RAM treân chip khoâng bò thay ñoåi bôûi leänh reset.
5. Hoaït ñoäng cuûa boä ñònh thôøi (timer)
5.1 Giôùi thieäu.
Moät ñònh nghóa ñô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 nguoàn xung nhòp. Ngoõ ra cuûa
taàn soá cuoái laøm nguoàn 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ö soá ñeám soá xung
nhòp (hoaëc 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 1 khi soá ñeám traøn töø FFFFH ñeán 0000H.
8051/8031 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 hoaëc c) taïo toác ñoä baud
cho port noái tieáp trong 8051/8031.
Trong caùc öùng duïng ñònh khoaûng thôøi gian, ngöôøi ta laäp trình timer ôû moät
khoaûng ñeàu ñaën vaø ñaët côø traøn timer. Côø ñöôïc duøng ñeå ñoàng boä hoùa chöông
trình ñeå thöïc hieän moät taùc ñoäng nhö kieåm tra traïng thaùi cuûa caùc cöûa ngoõ vaøo
hoaëc göûi caùc 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 cuûa 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 8051/8031. Caùc timer cuõng coù theå cung caáp xung nhòp toác ñoä baud cho
port noái tieáp trong 8051/8031.
11
Truy xuaát timer cuûa 8051/8031 duøng 6 thanh ghi chöùc naêng ñaëc bieät cho
trong baûng sau:
SFR MUÏC ÑÍCH ÑÒA Ñòa chæ hoùa töøng bit
CHÆ
TCON Ñieàu khieån timer 88H Coù
TMOD Cheá ñoä timer 89H Khoâng
TL0 Byte thaáp cuûa timer 0 8AH Khoâng
TL1 Byte thaáp cuûa timer 1 8BH Khoâng
TH0 Byte cao cuûa timer 0 8CH Khoâng
TH1 Byte cao cuûa timer 1 8DH Khoâng
Baûng 2.4: Thanh ghi chöùc naêng ñaëc bieät duøng timer.
5.2 Thanh ghi cheá ñoä timer (TMOD)
Thanh ghi TMOD chöùa hai nhoùm 4 bit duøng ñeå ñaët cheá ñoä laøm vieäc cho timer
0 vaø timer 1.
Bit Teân Timer Moâ taû
7 GATE 1 Bit (Môû) coång, khi leân 1 timer chæ chaïy khi INT1
ôû möùc cao.
6 C/T 1 Bit choïn cheá ñoä counter/timer
1=boä ñeám söï kieän
0=boä ñònh khoaûng thôøi gian
5 M1 1 Bit 1 cuûa cheá ñoä(mode)
4 M0 1 Bit 0 cuûa cheá ñoä
00: cheá ñoä 0 : timer 13 bit
12
01: cheá ñoä 1 : timer 16 bit
10: cheá ñoä 2 : töï ñoäng naïp laïi 8255A bit
11: cheá ñoä 3 : taùch timer
3 GATE 0 Bit (môû) coång
2 C/T 0 Bit choïn counter/timer
1 M1 0 Bit 1 cuûa cheá ñoä
0 M0 0 Bit 0 cuûa cheá ñoä
Baûng 2.5: Toùm taét thanh ghi TMOD
5.3 Thanh ghi ñieàu khieån timer (TCON)
Thanh ghi TCON chöùa caùc bit traïng thaùi vaø caùc bit ñieàu khieån cho timer 0 vaø
timer 1.
Bit Kyù hieäu Ñòa chæ Moâ taû
TCON.7 TF1 8FH Côø baùo traøn timer 1. Ñaët bôûi phaàn
cöùng khi traøn, ñöôïc xoùa bôûi phaàn
meàm hoaëc phaàn cöùng khi boä xöû lyù
chæ ñeán chöông trình phuïc vuï ngaét.
TCON.6 TR1 8EH Bit ñieàu khieån timer 1 chaïy. Ñaët/xoùa
baèng phaàn meàm cho timer chaïy/ngöng.
TCON.5 TF0 8DH Côø baùo traøn timer 0
13
TCON.4 TR0 8CH Bit ñieàu khieån timer 0 chaïy
TCON.3 IE1 8BH Côø caïnh ngaét 1 beân ngoaøi, ñaëc bôûi
TCON.2 IT1 8AH Côø kieåu ngaét moät beân ngoaøi.
phaàn cöùng khi phaùt hieän moät caïnh
xuoáng ôû INT1, xoùa baèng phaàn meàm
hoaëc phaàn cöùng khi CPU chæ ñeán
chöông trình phuïc vuï ngaét.
Ñaët/xoùa baèng phaàn meàm ñeà ngaét
ngoaøi tích cöïc caïnh xuoáng/möùc thaáp
TCON.1 IE0 89H Côø caïnh ngaét 0 beân ngoaøi
TCON.0 IT0 88H Côø kieåu ngaét 0 beân ngoaøi
Baûng 2.6: Toùm taét thanh ghi TCON
5. 4 Caùc cheá ñoä timer.
a) Cheá ñoä 0, cheá ñoä timer 13 bit.
Ñeå töông thích vôùi 8048 (coù tröùôùc 8051)
Ba bit cao cuûa TLX (TL0 vaø/hoaêc TL1) khoâng duøng
TLx THx TFx
Xung nhòp (5 bit) (8 bit)
timer
Côø baùo traøn
b) Cheá ñoä 1- cheá ñoä timer 16 bit.
Hoaït ñoäng nhö timer 16 bit ñaày ñuû.
Côø baùo traøn laø bit TFx trong TCON coù theå ñoïc hoaëc ghi baèng phaàm
meàm.
MSB cuûa giaù trò trong caùc thanh ghi timer laø bit 7 cuûa THx vaø LBS laø bit
0 cuûa TLx. Caùc thanh ghi timer (Tlx/THx) coù theå ñöôïc ñoïc hoaëc ghi baát cöù luùc
naøo baèng phaàm meàm.
TLx THx TFx
Xung nhòp (5 bit) (8 bit)
timer
Côø baùo traøn
14
c) Cheá ñoä 0- cheá ñoä töï ñoäng naïp laïi 8 bit.
TLx hoaït ñoäng nhö moät timer 8 bit, trong khi ñoù THx vaãn giöõ nguyeân giaù
trò ñöôïc naïp. Khi soá ñeám traøn töù FFH ñeán 00H, khoâng nhöõng côø timer ñöôïc set
maø giaù trò trong THx ñoàng thôøi ñöôïc naïp vaøo TLx. Vieäc ñeám tieáp tuïc töø giaù trò
naøy leân ñeán FFH xuoáng 00H vaø naïp laïi... cheá ñoä naøy raát thoâng duïng vì söï traøn
timer xaûy ra trong nhöõng khoaûng thôøi gian nhaát ñònh vaø tuaàn hoaøn moät khi ñaõ
khôûi ñoäng TMOD vaø THx.
TLx TFx
(8 bit)
Xung nhòp
timer
Côû baùo traøn
Naïp laïi
THx
(8 bit)
d) Cheá ñoä 3- cheá ñoä taùch timer
Timer 0 taùch thaønh hai timer 8 bit (TL0 vaø TH0), TL0 coù côø baùo traøn laø
TF0 vaø TH0 coù côø baùo traøn laø TF1.
Timer 1 ngöng ôû cheá ñoä 3, nhöng coù theå ñöôïc khôûi ñoäng baèng caùch
chuyeån sang cheá ñoä khaùc. Giôùi haïn duy nhaát laø côø baùo traøn TF1 khoâng coøn bò
taùc ñoäng khi timer 1 bò traøn vì noù ñaõ ñöôïc noái tôùi TH0.
Khi timer 0 ôû cheá ñoä 3, coù theå cho timer 1 chaïy vaø ngöng baèng caùch chuyeån noù
ra ngoaøi vaø vaøo cheá ñoä 3. Noù vaãn coù theå ñöôïc söû duïng bôûi port noái tieáp nhö boä
taïo toác ñoä baund hoaëc noù coù theå ñöôïc söû duïng baèng baát cöù caùch naøo khoâng caàn
ngaét (vì noù khoâng coøn ñöôïc noái vôùi TF1).
Xung nhòp TL1 TH1
Timer
Xung nhòp TL0 TF0
Timer
15 TH0 TF1
Côø baùo traøn
I/12 Fosc
Côø baùo traøn
5.5 Nguoàn taïo xung nhòp.
Coù hai nguoàn taïo xung nhòp coù theå coù, ñöôï choïn baèng caùch ghi vaøo bit
C/T (counter/timer) trong TMOD khi khôûi ñoäng timer. Moät nguoàn taïo xung nhòp
duøng cho ñònh khoaûng thôøi gian, caùi khaùc cho ñeám söï kieän.
On chip
Crytal Osillato
r ÷12 Timer
Clock
T0 or T1
pin −
C/T
0=Up (Internal Timing)
1=Down (Event Counting)
Nguoàn xung taïo nhòp
- Ñònh khoaûng thôøi gian (interval timing)
Neáu C/T =0 hoaï t ñoäng timer lieân tuïc ñöôïc choïn vaø timer ñöôïc duøng cho
vieäc ñònh khoaûng thôøi gian. Luùc ñoù, timer laáy xung nhòp töø boä dao ñoäng treân
chip. Boä chia 12 ñöôïc theâm vaøo ñeå giaûm taàn soá xung nhòp ñeán giaù trò thích hôïp
cho phaàn lôùn caùc öùng duïng. Nhö vaäy thaïch anh 12 MHz seõ cho toác ñoä xung
nhòp timer 1 MHz. Boùa traøn timer xaûy ra sau moät soá (coá ñòng) xung nhòp, phuï
thuoäc vaøo giaù trò ban ñaàu ñöôïc naïp vaøo caùc thanh ghi timer TLx/THx.
- Ñeám söï kieän (Event counting)
- Neáu C/T=1, timer laáy xung nhòp töø nguoàn beân ngoaøi. Trong haàu heát caùc
öùng duïng nguoàn beân ngoaøi naøy cung caáp cho timer moät xung kh xaûy ra moät
“söï kieän “, timer duøng ñeám söï kieän ñöôïc xaùc ñònh baèng phaàn meàm baèng
caùch ñoïc caùc thanh ghi TLx/THx vì giaù trò 16 bit trong caùc thanh ghi naøy
taêng theâm 1 cho moãi söï kieän.
16
Nguoàn xung nhòp ngoaøi coù töø thay ñoåi chuù7c naêng cuûa caùc chaân port 3. Bit
4 cuûa port 3 (P3.4) duøng laøm ngoõ vaøo taïo xung nhòp beân trong timer 0 vaø ñöôïc
goïi laø “T0”. Vaø p3.5 hay “T1” laø ngoõ vaøo taïo xung nhòp cho timer 1.
5.6 Baét ñaàu döøng vaø ñieàu khieån caùc timer.
Phöông phaùp môùi ñôn giaûn nhaát ñeå baét ñaàu (cho chaïy) vaø döøng caùc timer
laø duøng caùc bit ñieàu khieån chaïy :TRx trong TCON, TRx bò xoùa sau khi reset heä
thoáng. Nhö vaäy, caùc timer theo maëc nhieân laø bò caám (bò döøng). TRx ñöôïc ñaët
leân 1 baèng phaàn meàm ñeå cho caùc timer chaïy.
Xung nhòp
Timer Caùc thanh ghi timer
0=leân : timer döøng
TRx 1=xuoáng : timer chaïy
Cho chaïy vaø döøng timer
Vì TRx ôû trong thanh ghi TCON coù ñòa chæ bit, neân deã daøng cho vieäc ñieàu
khieån caùc timer trong chöông trình. Ví duï : cho timer 0 chaïy baèng leänh : SETB
TR0 vaø döøng baèng leänh SETB TR0
Trình bieân dòch seõ thöïc hieän vieäc chuyeån ñoåi kyù hieäu caàn thieát töø “TR0” sang
ñòa chæ bit ñuùng. SETB TR0 chính xaùc gioáng nhö SETB 8CH.
5.7 Khôûi ñoäng vaø truy xuaát caùc thanh ghi timer.
Thoâng thöôøng caùc thanh ghi ñöôïc khôûi ñoäng moät laàn ôû ñaàu chöông trình
ñeå ñaët cheá ñoä laøm vieäc cho ñuùng. Sau ñoù trong thaân chöông trình caùc timer
ñöôïc cho chaïy, döøng , caùc bit côø ñöôïc kieåm tra vaø xoùa, caùc thanh ghi timer ñöôïc
ñoïc vaø caïp nhaät... theo ñoøi hoûi cuûa caùc öùng duïng.
TMOD laø thanh ghi thöù nhaát ñöôïc khôûi ñoäng vì noù ñaët cheá ñoä hoaït ñoäng.
Ví duï caùc leänh sau khi khôûi ñoäng timer 1 nhö timer 16 bit (cheá ñoä 1) coù xung
nhòp töø boä dao ñoäng treân chíp cho vieäc ñòng khoaûng thôøi gian.
MOV TMOD,#00010000B
Leänh naøyy seõ ñaët M1=0 vaû M0=1 cho cheá ñoä 1, C/T=0 vaø GATE=0 cho
xung nhòp noäi vaø xoùa caùc bit cheá ñoä timer 0. Dó nhieân timer thaät söï khoâng baét
ñaàu ñònh thôøi cho ñeán khi bit ñieàu khieån chaïyy TR1 ñöôïc ñaët leân 1.
Neáu caàn soá ñeám ban ñaàu, caùc thanh ghi timer TL1/TH1 cuõng phaûi ñöôïc khôûi
ñoäng. Nhôù laïi laø caùc timer ñeám leân vaø ñaët côø baùo traøn khi coù söï truyeån tieáp.
FFFFH sang 0000H.
- Ñoïc timer ñang chaïy.
17
Trong moät soá öùng duïng caàn ñoïc giaù trò trong caùc thanh ghi timer ñang
chaïy. Vì phaûi ñoïc 2 thanh ghi timer “sai pha” coù theå xaåy ra neáu byte thaáp traøn
vaøo byte cao giöõa hai laàn ñoïc. Giaù trò coù theå ñoïc ñöôïc khoâng ñuùng. Giaûi phaùp laø
ñoïc byte cao tröôùc, keá ñoù ñoïc byte thaáp roài ñoïc byte cao laïi moät laàn nöõa. Neáu
byte cao ñaõ thay ñoåi thì laäp laïi caùc hoaït ñoäng ñoïc.
5.8 Caùc khoaûng ngaén vaø caùc khoaûng daøi.
Daõy caùc khoaûng thôøi gian coù theå ñònh thôøi laø bao nhieâu ? vaán ñeà naøy
ñöôïc khaûo saùt vôùi 8051/8031 hoaït ñoäng vôùi taàn soá 12MHz. nhö vaäy xung nhòp
cuûa caùc timer coù taàn soá laù 1 MHz.
Khoaûng thôøi gian ngaén nhaát coù theå coù bò giôùi haïn khoâng chæ bôûi taàn soá xung
nhòp cuûa timer maø coøn bôûi phaàn meàm. Do aûnh höôûng cuûa thôøi khoaûng thöïc hieän
moät leänh. Leäng ngaén nhaát 8051/8031 laø moät chu kyø maùy hay 1µs. Sau ñaây laø
baûng toùm taét caùc kyõ thuaät ñeå taïo nhöõng khoaûng thôøi gian coù chieàu daøi khaùc
nhau (vôùi giaû söû xung nhòp cho 8051/8031 coù taàn soá 12 MHz)
Khoaûng thôøi gian toái ña Kyõ thuaät
≈10 - Baèng phaàn meàm
256 - Timer 8 bit vôùi töï ñoäng naïp laïi
65535 - Timer 16 bit
Khoâng giôùi haïn - Timer 16 bit coäng vôùi caùc voøng
laäp phaàn meàm
Caùc kyõ thuaät ñeå laäp trình caùc khoaûng thôøi gian (FOSC=12 MHz)
6. Hoaït ñoäng port noái tieáp.
6.1. Giôùi thieäu.
8051/8031 coù moät port noái tieáp trong chip coù theå hoaït ñoäng ôû nhieàu cheá
ñoä khaùc treân moät daõy taàn soá roäng. Chöùc naêng chuû yeáu cuûa moät port noái tieáp laø
thöïc hieän chuyeån ñoåi song song sang noái tieáp vôùi döõ lieäu xuaát vaø chuyeån ñoài
noái tieáp sang song song vôùi döõ lieäu nhaäp.
Truy xuaát phaàn cöùng ñeán port noái tieáp qua caùc chaân TXD vaø RXD. Caùc
chaân naøy coù caùc chöùc naêng khaùc vôùi hai bit cuûa port 3. P3 ôû chaân 11 (TXD) vaø
P3.0 ôû chaân 10 (RXD).
Port noái tieáp cho hoaït ñoäng song coâng (full duplex : thu vaø phaùt ñoàng thôøi)
vaø ñeäm luùc thu (receiver buffering) cho pheùp moät kyù töï seõ ñöôïc thu vaø ñöôïc giöõ
trong khi kyù töï thöù hai ñöôïc nhaän. Neáu CPU ñoïc kyù töï thöù nhaát tröôùc khi kyù töï
thöù hai ñöôïc thu ñaày ñuû thì döõ lieäu seõ khoâng bò maát.
18
Hai thanh ghi chöùc naêng ñaëc bieät cho pheùp phaàn meàm truy xuaát ñeán port
noái tieáp laø : SBUF vaø SCON. Boä ñeám port noái tieáp (SBUF) ôû ñaïi chæ 99H thaät
söû laø hai boä ñeám. Vieát vaøo SBUF ñeå truy xuaát döõ lieäu thu ñöôïc. Ñaây laø hai
thanh ghi rieâng bieät thanh ghi chæ ghi ñeå phaùt vaø thanh ghi ñeå thu.
TXD (P3.1) RXD (P3.0)
CLK SUBF
(Chæ ghi) Q D Thanh ghi dòch
CLK
Xung nhòp toác SBUF
Ñoä baud (thu) (chæ ñoïc)
Xung nhòp toác
Ñoä baud (thu) SBUF
(chæ ñoïc)
BUS noäi 8051/8031
Hình 2.9: Sô ñoà port noái tieáp.
Thanh ghi ñieàu khieån port noái tieáp (SCON) ôû ñòa chæ 98H laø thanh ghi coù
ñòa chæ bit chöùa caùc bit traïng thaùi vaø caùc bit ñieàu khieån. Caùc bit ñieàu khieån ñaët
cheá ñoä hoaït ñoäng cho port noái tieáp, vaø caùc bit traïng thaùi baùo caùo keát thuùc vieäc
phaùt hoaëc thu kyù töï. Caùc bit traïng thaùi coù theå ñöôïc kieåm tra baèng phaàn meàm
hoaëc coù theå ñöôïc laäp trình ñeå taïo ngaét.
Taàn soá laøm vieäc cuûa port noái tieáp coøn goïi laø toác ñoä baund coù theå coá ñònh
(laáy töø boä giao ñoäng cuûa chip). Neáu söû duïng toác ñoä baud thay ñoåi, timer 1 seõ
cung caáp xung nhòp toác ñoä baud vaø phaûi ñöôïc laäp trình.
6.2 Thanh ghi ñieàu khieån port noái tieáp.
Cheá ñoä hoaït ñoäng cuûa port noái tieáp ñöôïc ñaët baèng caùch ghi vaøo thanh ghi
cheá ñoä port noái tieáp (SCON) ôû ñòa chæ 98H. Sau ñaây caùc baûng toùm taét thanh ghi
SCON vaø caùc cheá ñoä cuûa port noái tieáp :
19
Bit Kyù hieäu Ñòa chæ Moâ taû
SCON.7 SM0 9FH Bit 0 cuûa cheá ñoä port noái tieáp
SCON.6 SM1 9EH Bit 1 cuûa cheá ñoä port noái tieáp
SCON.5 SM2 9DH Bit 2 cuûa cheá ñoä 2 noái tieáp.
cho pheùp trueàn thoâng ñaõ xöû lyù
trong caùc cheá ñoä 2 vaø 3 ;RI seõ
khoâng bò taùc ñoäng neáu bit thöù
9 thu ñöôïc laø 0
SCON.4 REN 9CH Cho pheùp boä thu phaûi ñaët leân
1 ñeå thu (nhaän) caùc kyù töï
SCON.3 TB8 9BH Bit 8 phaùt, bit thöù 9 ñöôïc phaùt
caùc cheá ñoä 2 vaø 3; ñöôïc ñaët
vaø xoùa baèng phaàn meàm
SCON.2 RB8 9AH Bit 8 thu, bit thöù 9 thu ñöôïc
SCON.1 TI 99H Côø ngaét phaùt. Ñaët leân 1 khi
keát thuùc phaùt kyù töï; ñöôïc xoùa
phaàn meàm
SCON.0 RI 98H Côø ngaét thu. Ñaët leân 1 khi
Keát thuùc thu kyù töï; ñöôïc xoùa
Baèng phaàn meàm
Baûng 2.7:Toùm taét thanh ghi cheá ñoä port noái tieáp SCON.
SM0 SM1 Cheá ñoä Moâ taû Toác ñoä baud
0 0 0 Thanh ghi dòch Coá ñònh (Fosc/12)
0 1 1 UART 8 bit Thay ñoåi (ñaët baèng timer)
1 0 2 UART 9 bit Coá ñònh (Fosc/12 hoaëc
Fosc/64)
1 1 3 UART 9 bit Thay ñoåi (ñaët baèng timer)
Baûng 2.8: Caùc cheá ñoä port noái tieáp.
Tröôùc khi söû duïng port noái tieáp, phaûi khôûi ñoäng SCON cho ñuùng cheá ñoä.
Ví duï ,leänh sau:
20