Tài liệu GIao diện PC với các KIT vi điều khiển qua cổng COM: ... Ebook GIao diện PC với các KIT vi điều khiển qua cổng COM
79 trang |
Chia sẻ: huyen82 | Lượt xem: 1441 | Lượt tải: 0
Tóm tắt tài liệu GIao diện PC với các KIT vi điều khiển qua cổng COM, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
PHAÀN I
CÔ SÔÛ LYÙ THUYEÁT
CHÖÔNG 1
CAÛM BIEÁN NHIEÄT ÑOÄ
KHAÙI NIEÄM VEÀ NHIEÄT ÑOÄ
Nhieät ñoä laø traïng thaùi cô baûn cuûa vaät chaát, noù ñaëc tröng cho möùc ñoä noùng laïnh cuûa vaät chaát. Baûn chaát cuûa nhieät ñoä laø do söï chuyeån ñoäng cuûa caùc phaàn töû gaây neân, chuyeån ñoäng caøng nhanh vaät chaát caøng noùng, chuyeån ñoäng cuûa caùc phaàn töû lieân quan maät thieát ñeán nhieät ñoä . Do ñoù ngöôøi ta goïi chuyeån ñoäng giöõa caùc phaàn töû laø chuyeån ñoäng nhieät .
Nhieät ñoä luoân truyeàn töø nôi coù nhieät ñoä cao ñeán nôi coù nhieät ñoä thaáp, coù nhieàu caùch truyeàn nhieät nhö : ñoái löu, tieáp xuùc hay böùc xaï . Toác ñoä truyeàn nhieät phuï thuoäc vaøo möùc ñoä cheânh leäch giöõa nhieät ñoä vaø heä soá truyeàn nhieät . Do tính chaát truyeàn nhieät maø nguoàn nhieät luoân bò maát nhieät ra moâi tröôøng xung quanh .
CAÙC PHÖÔNG PHAÙP ÑO NHIEÄT ÑOÄ
Ñeå ño nhieät ñoä, ngöôøi ta thöôøng döïa treân caùc nguyeân lyù sau :
Döïa treân söï giaõn nôû
Döïa treân ñaëc tính giaõn nôû cuûa moät soá vaät lieäu theo söï thay ñoåi nhieät ñoä maø ngöôøi ta xaùc ñònh ñöôïc nhieät ñoä döïa treân moät möùc chuaån ñaõ ñònh tröôùc . Vaät lieäu thöôøng duøng laø Platin, thuûy ngaân, coàn, … Taàm nhieät ño giôùi haïn döôùi 1000oC .
Döïa treân söï thay ñoåi ñoä daãn ñieän cuûa vaät lieäu theo nhieät ñoä
Döïa treân ñaëc tính naøy, ta tính ñöôïc doøng ñieän töông öùng vôùi moät möùc nhieät ñoä naøo ñoù . Nguyeân lyù naøy ñöôïc öùng duïng döôùi nhieàu daïng :
Daïng thay ñoåi ñieän trôû theo nhieät : taàm ño (-200oC ÷ -650oC)
Daïng baùn daãn : Taàm ño -100oC ÷ -1200oC
Daïng caëp nhieät ñieän : taàm ño -270oC ÷ -2500oC
Döïa treân söï böùc xaï cuûa vaät lieäu khi bò gia nhieät
Caùc vaät lieäu khi bò gia nhieät seõ böùc xaï, döïa treân ñaëc tính naøy ta ño ñoä böùc xaï vaø tính ra nhieät ñoä treân vaät lieäu . Taàm nhieät ñoä > 100oC .
Ñeå ño nhieät ñoä coù nhieàu phöông phaùp
Phöông phaùp ño tröïc tieáp baèng nhieät keá thoâng thöôøng
Chæ ño ôû taàm nhieät ñoä thaáp, döôùi 1000oC . Phöông phaùp naøy ñôn giaûn, reû tieàn, ñoïc tröïc tieáp giaù trò nhieät ñoä . Tuy nhieân sai soá lôùn khoâng thích hôïp trong coâng ngheä caàn söï chính xaùc cao .
Phöông phaùp ño baèng caûm bieán ñieän töû
Döïa vaøo ñaëc tính daãn ñieän khi nhieät ñoä bieán thieân cuûa moät soá chaát baùn daãn, ngöôøi ta cheá taïo caùc boä caûm bieán ñieän töû, nhieät trôû cuûa caùc boä caûm bieán naøy coù ñoä chính xaùc töông ñoái, giaù thaønh reû . Tuy nhieân, taàm nhieät ñoä hoaït ñoäng cuõng khoâng cao laém, khoaûng döôùi 1000oC. Tín hieäu thu ñöôïc laø tín hieäu daïng Analog, raát nhoû phaûi ñöôïc khueách ñaïi vaø xöû lyù môùi söû duïng ñöôïc .
Trong ñieän töû duøng vi maïch LM–335 ñeå caûm bieán nhieät ñoä LM 335
Khueách ñaïi
Laáy giaù trò ñieän aùp ñeå ñieàu khieån, hieån thò
Phöông phaùp ño baèng caëp nhieät
Ñaây laø phöông phaùp ño qua trung gian, giaù trò ñieän coù theå ño ñöôïc ôû taàm nhieät ñoä cao töø 200oC ÷ 2000oC . Tín hieäu thu ñöôïc cuõng phaûi qua khaâu xöû lyù ñaëc bieät nhö khueách ñaïi, bieán ñoåi A/D . Phöông phaùp naøy coù ñoä chính xaùc cao.
Caùc phöông phaùp ño khaùc
Ngoaøi ra, ngöôøi ta coøn nhieàu phöông phaùp ño ñaëc bieät ñeå ño nhieät ñoä ôû nhöõng nôi coù nhieät ñoä quaù cao hoaëc nôi coù tính chaát ñaëc bieät : Ño qua tia hoàng ngoaïi .
Trong ñeà taøi naøy ta duøng phöông phaùp caûm bieán ñieän töû (hoï IC LM 335 ) ñeå ño nhieät ñoä .
Caùc thang ño nhieät ñoä
Ñeå ño nhieät ñoä, Ngöôøi ta duøng nhieàu thang ño tuøy vaøo lónh vöïc öùng duïng vaø quy ñònh cuûa töøng quoác gia . Coù 4 daïng thang chia nhieät ñoä hay duøng nhaát laø : Thang chia Celcius (oC), thang chia Kelvin (oK), thang chia Fahrenhiet (oF) vaø thang chia Reùaumur (oR) .
Thang chia Celcius
Thang chia nhieät ñoä naøy do Anders Celcius (1701 – 1744) ñöa ra, nhieät ñoä ñoâng ñaëc vaø nhieät ñoä soâi cuûa aùp suaát khí quyeån bình thöôøng ñöôïc laáy laøm ñieåm goác . Khoaûng thang chia nhieät ñoä giöõa hai ñieåm ñoù ñöôïc chia thaønh 100 phaàn baèng nhau . Nhieät ñoä ñoâng ñaëc cuûa nöôùc trong thang chia Celcius ñöôïc laáy laø 0oC .
Thang chia nhieät ñoä tuyeät ñoái Kelvin
Thang chia nhieät ñoä tuyeät ñoái do William Thomson (Lord Kelvin) ñöa ra coù lieân heä vôùi Celcius bôûi ñaúng thöùc :
ToK = ToC + 273, 15
Ñoä khoâng cuûa thang chia tuyeät ñoái theo Kelvin: ToK = 0 töông öùng vôùi nhieät ñoä to = -273,15oC vaø ñöôïc goïi laø khoâng tuyeät ñoái (oK) . Ñoù laø nhieät ñoä taïi ñoù chuyeån ñoäng nhieät hoån loaïn cuûa caùc phaân töû khí lyù töôûng seõ ngöøng laïi, töùc laø khí lyù töôûng ôû 0oK seõ thaønh vaät raén .
Thang chia nhieät ñoä Fahreinheit
Ñoä chia trong thang chia cuûa Fahreinheit laø 0, 01 khoaûng nhieät ñoä giöõa nhieät ñoä tan cuûa hoãn hôïp tuyeát vaø Amoniclorua vôùi nhieät ñoä bình thöôøng cuûa cô theå con ngöôøi .
Theo thang chia naøy, nhieät ñoä tan cuûa baêng (oC) laø 32oF vaø nhieät ñoä soâi cuûa nöôùc ôû aùp suaát bình thöôøng (100oC) laø 212oF . Khoaûng nhieät ñoä töø nhieät ñoä tan cuûa tuyeát ñeán nhieät ñoä soâi cuûa nöôùc ñöôïc xaùc ñònh trong thang chia Fahreinheit laø 180oF .
Thang chia nhieät ñoä Reùaumur
Nhieät ñoä chia trong thang chia cuûa Reùaumur ñöôïc laáy laø nhieät ñoä tan cuûa tuyeát hay baêng nhö thang chia Celcius, nhöng ñoä chia ñöôïc laáy baèng 1/80 khoaûng nhieät ñoä giöõa ñoä tan cuûa tuyeát vaø nhieät ñoä soâi cuûa nöôùc ôû aùp suaát bình thöôøng . Nhö vaäy, khoaûng töø nhieät ñoä tan cuûa tuyeát ñeán nhieät ñoä soâi cuûa nöôùc ñöôïc xaùc ñònh trong thang chia Reùaumur laø 80oR .
Bieåu thöùc chuyeån ñoåi töø thang chia nhieät ñoä naøy sang thang chia nhieät ñoä khaùc coù daïng
CAÛM BIEÁN NHIEÄT ÑOÄ
Toång quan veà caûm bieán nhieät ñoä
Caûm bieán nhieät ñoä laø duïng cuï chuyeån ñoåi ñaïi löôïng nhieät thaønh caùc ñaïi löôïng vaät lyù khaùc chaúng haïn nhö ñieän, aùp suaát, ñoä giaõn nôû daøi, ñoä giaõn nôû khoái, ñieän trôû, … Caûm bieán nhieät ñoä laø phaàn töû khoâng theå thieáu trong baát kyø heä thoáng ño löôøng ñieàu khieån nhieät ñoä naøo. Caûm bieán nhieät ñoä coù khaû naêng nhaän bieát ñöôïc tín hieäu nhieät ñoä moät caùch chính xaùc, trung thöïc vaø chuyeån ñoåi thaønh tín hieäu coù theå ño löôøng ñöôïc nhö ñieän aùp, doøng ñieän, ñieän trôû, theå tích, aùp suaát, …
Caùc thoâng soá caûm bieán nhieät
Thoâng soá caáu taïo : ñöôïc quyeát ñònh do nhaø saûn xuaát vaø phuï thuoäc vaøo töøng loaïi caûm bieán.
Thoâng soá söû duïng : bao goàm caùc yeáu toá sau
Khoaûng laøm vieäc : laø khoaûng nhieät ñoä maø caûm bieán coù khaû naêng khi chöa bò baõo hoøa . Khoaûng laøm vieäc cao hay thaáp laø do tính chaát caáu taïo vaø tính lyù hoùa cuûa töøng loaïi caûm bieán qui ñònh .
Ñoä nhaïy: ñöôïc ñònh nghóa
df: söï thay ñoåi ñaïi löôïng ño cuûa caûm bieán .
dx : söï thay ñoåi ñaïi löôïng vaät lyù.
Ngöôõng ñoä nhaïy: laø möùc thaáp nhaát maø caûm bieán coù theå phaùt hieän ñöôïc .
Tính treã : coøn goïi laø quaùn tính cuûa caûm bieán. Tính treã cuûa caûm bieán taïo ra sai soá cuûa pheùp ño. Toác ñoä thay ñoåi cuûa ñaïi löôïng ño phaûi phuø hôïp vôùi tính treã cuûa caûm bieán. Neáu ñaïi löôïng ño thay ñoåi quaù nhanh maø quaùn tính cuûa caûm bieán lôùn thì khoâng theå ño chính xaùc ñöôïc. Moïi caûm bieán ñeàu coù tính treã do aûnh höôûng cuûa voû baûo veä.
Caùc loaïi caûm bieán thoâng duïng
Caëp nhieät ñieän
Caëp nhieät ñieän laø duïng cuï ño nhieät ñoä thöôøng ñöôïc söû duïng roäng raõi trong coâng nghieäp. Cô sôû cheá taïo caëp nhieät ñieän döïa treân caùc nguyeân lyù sau :
Hieäu öùng Thomson : qua moät daây daãn coù doøng ñieän I vaø hieäu nhieät treân daây laø T1-T2 thì seõ coù moät söï haáp thuï hay toûa nhieät.
Hieäu öùng Pentier : khi coù doøng ñieän ñi qua moät moái noái cuûa hai daây daãn thì taïi vò trí moái noái seõ coù söï haáp thuï hay toûa nhieät.
Hieäu öùng Seebeck: trong moät daây daãn baát kyø, khi coù söï cheânh leäch nhieät ñoä taïi moät ñieåm thì ngay taïi ñieåm ñoù seõ xuaát hieän moät suaát ñieän ñoäng
Ñònh luaät Macmut: trong moät maïch ñieän kín cuûa daây daãn ñoàng nhaát baát kyø, söï phaân boá nhieät ñoä ra sao, suaát ñieän ñoäng toång coäng cuûa maïch luoân baèng khoâng .
Caáu taïo caëp nhieät ñieän
Caëp nhieät ñieän ñöôïc cheá taïo baèng hai sôïi kim loaïi khaùc nhau vaø coù ít nhaát laø hai moái noái. Moät ñaàu ñöôïc giöõ ôû nhieät ñoä chuaån goïi laø ñaàu ra, ñaàu coøn laïi tieáp xuùc vôùi ñoái töôïng ño.
Caëp nhieät ñieän coù cöïc döông vaø cöïc aâm, cöïc döông thöôøng ñaùnh daáu maøu ñoû
Tuøy theo vaät lieäu cheá taïo, caëp nhieät ñieän ñöôïc phaân thaønh caùc loaïi sau:
20
40
30
50
10
1800
1400
1000
600
200
60
T (0C)
70
E(mV)
R
J
T
K
S
E
B
E
J
K
T
E: Chromel/constantan
J: Saét/constantan
T: Ñoàng/constantan
K: Chromel/Alumel
R: Platin-Rodi(13%)/Platin
S: Platin-Rodi(10%)/Platin
B: Platin-Rodi(30%)/Platin-Rodi(6%)
Vaät lieäu caáu taïo
Veà nguyeân taéc, khi ñoát noùng moái haøn cuûa hai kim loaïi baát kyø ñeàu phaùt sinh moät suaát ñieän ñoäng nhieät . Nhöng khoâng phaûi taát caû caùc kim loaïi vaø hôïp kim naøo cuõng ñeàu duøng laøm caëp nhieät ñöôïc .Vaät lieäu laøm caëp nhieät ñieän ñoøi hoûi moät soá yeâu caàu sau :
Ñoä tinh khieát cao.
Tính choáng aên moøn toát.
Ñoä noùng chaûy cao hôn nhieät moâi tröôøng caàn ño.
Moät soá tính chaát chuû yeáu nhö :daãn ñieän, daãn nhieät toát.
Tính laëp laïi trong khoaûng moät thôøi gian daøi.
Ngoaøi ra ñoä chính xaùc cuûa caëp nhieät ñieän coøn phuï thuoäc vaøo ñoä chính xaùc cheá taïo vaø lyù tính cuûa moâi tröôøng ño.
Caùch söû duïng
Ñeå caëp nhieät ñieän coù theå laøm vieäc toát vaø laâu beàn , khi söû duïng caàn löu yù:
Caëp nhieät ñieän caàn coù voû baûo veä ñeå choáng taùc ñoäng xaâm thöïc cuûa moâi tröôøng, yeâu caàu ñoái vôùi voû boïc laø caùch ñieän nhöng khoâng caùch nhieät.
Phaûi ñaët caëp nhieät ôû nôi thích hôïp vì thöôøng laø nhieät khoâng phaân boá ñeàu.
Vò trí laép ñaët phaûi traùnh choã coù töø tröôøng, ñieän tröôøng maïnh.
Ñeå caëp nhieät thaúng ñöùng, ñeà phoøng oáng baûo veä bò bieán daïng do nhieät cao.
Neân laép ñaët daây buø vaøo oáng saét noái ñaát ñeå traùnh nhieãu .
Nhieät keá ñieän trôû
Nguyeân lyù laøm vieäc cuûa nhieät keá laø döïa vaøo söï thay ñoåi ñieän trôû theo nhieät ñoä cuûa caùc vaät lieäu daãn ñieän.
Nhieät ñieän trôû kim loaïi
Caáu taïo
Vaät lieäu caáu taïo ñieän trôû kim loaïi ñoøi hoûi caùc yeâu caàu sau:
Heä soá nhieät lôùn.
Ñieän trôû suaát lôùn.
Tính oån ñònh lyù hoùa toát.
Tính thuaàn khieát.
Ñoä nhaïy
Ñoä nhaïy S cuûa nhieät ñieän trôû kim loaïi coù daïng sau:
a : laø heä soá nhieät ñieän trôû.
R : laø ñieän trôû ôû 0oC.
Heä soá nhieät ñieän trôû
Heä soá nhieät ñieän trôû cuûa kim loaïi seõ tính nhö sau
Heä soá nhieät a phuï thuoäc vaøo tính ñoàng nhaát cuûa kim loaïi .
Nhieät ñieän trôû baùn daãn
Thay ñoåi nhieät ñoä ñöôïc cheá taïo baèng chaát baùn daãn thöôøng goïi laø Thermistor.
Thaønh phaàn chính cuûa Thermistor laø boät cuûa caùc oxyt kim loaïi nhö Maùy nghieàn bi,Fe,Ni…,hoaëc caùc hoãn hôïp tinh cheá nhö MgAl2O4 ,Zn2TiO4 …
Phaân loaïi
Nhieät ñieän trôû baùn daãn ñöôïc chia thaønh hai loaïi :
Nhieät ñieän trôû Pct :laø loaïi nhieät ñieän trôû coù heä soá nhieät döông, nghóa laø nhieät ñoä taêng thì R giaûm.
Nhieät ñieän trôû Nct: thaønh phaàn chính laø boät kim loaïi nhö: MnAl2O4 vaø Zn2TiO4. Ñoä tin caäy cuûa nhieät ñieän trôû baùn daãn phuï thuoäc vaøo ñoä tinh khieát cuûa vaät lieäu cheá taïo. Nct thöôøng coù hình daïng nhö:daïng haït, daïng dóa, daïng khoen.
Heä soá thu nhieät ñoä
Thermistor seõ bò ñoát noùng khi nhieät ñoä moâi tröôøng xung quanh taêng töø nhieät ñoä T0 ñeán T, nhö vaäy laø nhieät ñieän trôû ñaõ tieâu thuï ñöôïc moät coâng suaát theo coâng thöùc nhö sau:
W= C(T-T0)
C : laø heä soá thu nhieät cuûa ñieän trôû, laø naêng löôïng caàn thieát ñeå laøm taêng nhieät ñoä cuûa Thermistor leân 1oC so vôùi nhieät ñoä xung quanh, coù ñôn vò laø wm/oC .
Caùch söû duïng
Khi söû duïng nhieät keá khoâng neân duøng nhieät ñieän trôû ôû nhieät ñoä quaù cao hay quaù thaáp laøm cô caáu tinh theå kim loaïi thay ñoåi, cuõng khoâng neân ñeå nôi quaù aåm seõ taïo ñieàu kieän cho ñieän trôû ræ, khoâng kieåm soaùt ñöôïc . Khoâng neân ñaët ñieän trôû kim loaïi nôi coù chaán ñoäng rung hay va ñaäp .
Caùc öu ñieåm
Coù ñoä chính xaùc cao, coù theå keát noái vôùi maùy tính…
IC caûm bieán nhieät ñoä
Ñaây laø maïch tích hôïp nhaän tín hieäu nhieät ñoä chuyeån ñoåi thaønh ñieän, cho pheùp ño ñöôïc ôû daïng bieán aùp hay doøng .
Moät soá loaïi IC caûm bieán thoâng duïng : LX5700, LX135, LM235, LM335, AD590, LM134, …
Trong ñeà taøi naøy, duøng caûm bieán nhieät LM335 .
CHÖÔNG 2
SÖÛ DUÏNG PORT NOÁI TIEÁP
TRUYEÀN THOÂNG NOÁI TIEÁP
Ta coù theå thöïc hieän truyeàn döõ lieäu giöõa maùy tính vaø vi xöû lyù theo nhieàu chuaån khaùc nhau . Vì trong luaän vaên naøy söû duïng ñeán vieäc thu phaùt döõ lieäu theo kieåu noái tieáp neân caàn phaûi khaùi quaùt vaøi neùt veà caùc chuaån truyeàn thoâng .
Truyeàn thoâng noái tieáp laø vieäc thu phaùt döõ lieäu ôû daïng chuoãi caùc xung ñieän – goïi laø caùc bit . Hieäp hoäi ñieän töû coâng nghieäp (EIA) ñöa ra caùc chuaån truyeàn thoâng khaùc nhau nhö : RS 232-C, RS-422, RS-423, RS-485, RS-449, … Kyù hieäu RS laø vieát taét cuûa Recommended Standard, nghóa laø tieâu chuaån khuyeán caùo .
Vieäc truyeàn döõ lieäu noái tieáp theo chuaån RS-232 coù öu ñieåm hôn truyeàn song song: Möùc ñieän aùp hoaït ñoäng laø +12V vaø –12V, khoaûng caùch truyeàn xa hôn, ít nhieãu hôn.
Vieäc trao ñoåi döõ lieäu dieãn ra treân hai ñöôøng daãn TxD vaø RxD, möùc tín hieäu treân chaân ra RxD tuøy thuoäc vaøo ñöôøng daãn TxD vaø thöôøng naèm trong khoaûng –12V ñeán +12V, caùc bit döõ lieäu ñöôïc ñaûo ngöôïc laïi. Möùc cao naèm giöõa –3V vaø –12V, möùc thaáp naèm giöõa +3V vaø +12V. ÔÛ traïng thaùi tónh, treân ñöôøng daây coù ñieän aùp laø –12V.
Moät chuoãi döõ lieäu truyeàn ñi ñöôïc baét ñaàu baèng moät bit khôûi ñaàu, tieáp theo ñoù laø caùc bit döõ lieäu, bit thaáp nhaát ñi tröôùc. Soá bit döõ lieäu naèm trong khoaûng 5 ñeán 8 bit, tieáp ñoù laø bit kieåm tra chaún leû vaø cuoái cuøng laø bit keát thuùc (Stop bit). Toác ñoä truyeàn ñöôïc thieát laäp baèng tham soá Baud Rate, laø soá bit truyeàn ñi trong 1 giaây, thoâng thöôøng laø 300, 600, 1200, 2400, 4800, 9600 vaø 19200 .
Vieäc thieát laäp caùc thoâng soá truyeàn noái tieáp ñöôïc thöïc hieän baèng caùch thay ñoåi caùc giaù trò trong caùc thanh ghi phuïc vuï truyeàn noái tieáp.
Baûn ñoà thanh ghi noäi cuûa boä thu phaùt noái tieáp UART-8250 (khoâng ñoàng boä).
Register Name
Code
COM1
COM2
COM3
COM4
Function
Transmitter Holding Register
THR
3F8H
2F8H
3E8H
2E8H
OUTPUT
Receiver Data Register
RDR
3F8H
2F8H
3E8H
2E8H
INPUT
Baud Rate Divisor (LSB)
BRDL
3F8H
2F8H
3E8H
2E8H
OUTPUT
Baud Rate Divisor (MSB)
BRDH
3F9H
2F9H
3E9H
2E9H
OUTPUT
Interrupt Enable Register
IER
3F9H
2F9H
3E9H
2E9H
OUTPUT
Interrupt ID Register
IID
3FAH
2FAH
3EAH
2EAH
INPUT
Line Control Register
LCR
3FBH
2FBH
3EBH
2EBH
OUTPUT
Modem Control Register
MDC
3FCH
2FCH
3ECH
2ECH
OUTPUT
Line Status Register
LSR
3FDH
2FDH
3EDH
2EDH
INPUT
Modem Status Register
MSR
3FEH
2FEH
3EEH
2EEH
INPUT
Thanh ghi ñieàu khieån ñöôøng truyeàn (Line Control Register)
Bit
Bit cao cuûa thanh ghi naøy goïi laø bit choát, truy xuaát heä soá chia. Neáu bit naøy ñöôïc ñaët leân 1 thì giaù trò ôû thanh ghi cô sôû ñöôïc truy xuaát laøm byte thaáp cuûa thanh ghi heä soá chia choïn toác ñoä truyeàn, vaø giaù trò ôû thanh ghi cô sôû +1 seõ ñöôïc truy xuaát laøm byte cao cuûa thanh ghi heä soá chia choïn toác ñoä truyeàn. Neáu bit naøy ñöôïc xoùa veà 0 thì thanh ghi cô sôû seõ thaønh thanh ghi ñeäm thu phaùt.
7
6
5
4
3
2
1
0
Bit
Noäi dung
Bit 0 Bit 1
00 : 5 bit data ; 01 : 6 bit data
10 : 7 bit data ; 11 : 8 bit data
Bit 2
0 : 1 bit stop
1 : 1,5 hay 2 bit stop
Bit 3
0 : khoâng kieåm tra parity
1 : kieåm tra parity
Bit 4
1 : kieåm tra parity chaün
0 : kieåm tra parity leû
Bit 5
1 : neáu bit 4 = 1; 0 : neáu bit 4 = 0
Bit 6
Cho pheùp caám ñöôøng truyeàn noái tieáp
1 : ngoõ ra bò xoaù traéng ; 0 : caám
Bit 7
1 : choïn soá chia;0 : boä ñeäm thu, phaùt
Thanh ghi ñieàu khieån MODEM (Modem Control Register)
Thanh ghi ñieàu khieån MODEM duøng ñeå ñaët giao thöùc baét tay khi truyeàn thoâng söû duïng MODEM.
Bit
7
6
5
4
3
2
1
0
Bit
Noäi dung
Bit 0
Data Terminal Ready
1 : DTR Active; 0 : DTR Inactive
Bit 1
Request to Send;
1 : RTS Active; 0 : RTS Inactive
Bit 2
Output 1 (spare signal)
1 : OUT 1 : Active; 0 : OUT 1 Inactive
Bit 3
Output 2 (Interrupt Enable Signal)
1 : Communication Interrupt Active
0 : Communication Interrupt Inactive
Bit 4
Loopback Feature
1 : Transmitter output looped back to receiver register
0 : Normal Operation
Bit 5,6,7
0,0,0
Thanh ghi traïng thaùi ñöôøng truyeàn (Line Status Register)
Baùo cho maùy tính bieát thoâng tin, traïng thaùi cuûa döõ lieäu truyeàn ñi.
Bit:
7
6
5
4
3
2
1
0
Bit
Noäi dung
Bit 0
1 : Coù döõ lieäu trong boä ñeäm nhaän
Bit 1
1 : Overrun Error
Bit 2
1 : Parity Error
Bit 3
1 : Framing Error
Bit 4
1 : Baùo ngaét (ñöôøng truyeàn troáng )
Bit 5
1 : Thanh ghi phaùt troáng
Bit 6
1 : Thanh ghi dòch vaø thanh ghi phaùt troáng
0 : Thanh ghi dòch coøn chöùa döõ lieäu
Bit 7
0
Chuaån RS-232
Chuaån RS-232 laàn ñaàu tieân ñöôïc giôùi thieäu vaøo naêm 1962 do hieäp hoäi kyõ thuaät ñieän töû EIA (Electronics Industries Association) nhö laø chuaån giao tieáp truyeàn thoâng giöõa maùy tính vaø moät thieát bò ngoaïi vi (modem, maùy veõ, mouse, maùy tính khaùc,……).
Giao tieáp RS-232 laø giao dieän phoå bieán roäng raõi nhaát. Ngöôøi duøng maùy tính PC coøn goïi coång naøy laø COM 1, coøn COM 2 ñeå töï do cho caùc öùng duïng khaùc. Gioáng nhö coång maùy in, coång noái tieáp RS-232 ñöôïc söû duïng moät caùch raát thuaän tieän cho muïc ñích ño löôøng vaø ñieàu khieån.
Vieäc truyeàn döõ lieäu qua RS-232 ñöôïc tieán haønh theo caùch noái tieáp, nghóa laø caùc bit döõ lieäu ñöôïc göûi ñi noái tieáp nhau treân moät ñöôøng truyeàn daãn . Tröôùc heát, loaïi truyeàn naøy coù theå duøng cho nhöõng khoaûng caùch lôùn hôn, bôûi vì caùc khaû naêng gaây nhieãu nhoû ñaùng keå hôn laø duøng coång song song. Vieäc duøng coång song song coù moät nhöôïc ñieåm ñaùng keå laø caùp truyeàn duøng quaù nhieàu sôïi, vaø vì vaäy raát ñaét tieàn. Hôn nöõa tín hieäu naèm trong khoaûng 0 - 5V toû ra khoâng thích öùng vôùi khoaûng caùch lôùn. Coång noái tieáp RS-232 khoâng phaûi laø moät heä thoáng Bus, noù cho pheùp deã daøng taïo ra lieân keát döôùi hình thöùc ñieåm noái ñieåm giöõa hai maùy caàn trao ñoåi thoâng tin vôùi nhau, moät thaønh phaàn thöù ba khoâng theå tham gia vaøo cuoäc trao ñoåi thoâng tin naøy .
Coång COM 25 chaân Coång COM 9 chaân
Baûng saép xeáp chaân cuûa coång noái tieáp ôû maùy tính
9 chaân
25 chaân
Chöùc naêng
1
2
3
4
5
6
7
8
9
8
3
2
20
7
6
4
5
22
DCD _ Data Carrier Detect (Loái vaøo)
RxD _ Receive Data (Loái vaøo)
TxD _ Transmit Data (Loái ra)
DTR _ Data Terminal Ready (Loái ra)
GND _ Ground (Noái ñaát)
DSR _ Data Set Ready (Loái vaøo)
RTS _ Request to Send (Loái ra)
CTS _ Clear to Send (Loái vaøo)
RI _ Ring Indicator (Loái ra)
Vieäc truyeàn döõ lieäu xaûy ra treân hai ñöôøng daãn. Qua chaân caém ra TxD, maùy tính gôûi döõ lieäu cuûa noù ñeán caùc thieát bò khaùc. Trong khi ñoù döõ lieäu maø maùy tính nhaän ñöôïc laïi ñöôïc daãn ñeán chaân RxD. Caùc tín hieäu khaùc ñoùng vai troø nhö laø tín hieäu hoã trôï khi trao ñoåi thoâng tin vaø vì vaäy khoâng phaûi trong moïi öùng duïng ñeàu duøng ñeán . Caùc bit döõ lieäu ñöôïc gôûi ñi theo kieåu ñaûo ngöôïc, nghóa laø caùc bit coù giaù trò “1” seõ coù möùc ñieän aùp LOW, caùc bit coù giaù trò “0” seõ coù möùc ñieän aùp HIGH. Möùc tín hieäu nhaän vaø truyeàn qua chaân RxD vaø TxD thoâng thöôøng naèm trong khoaûng –12V ñeán +12V. Möùc ñieän aùp ñoái vôùi möùc LOW naèm giöõa +3V ñeán +12V, möùc HIGH laø –3V ñeán –12V
ÔÛ traïng thaùi tónh, treân ñöôøng daây vaãn coù ñieän aùp –12V. Moät bit khôûi ñoäng (Start bit) seõ môû ñaàu vieäc truyeàn döõ lieäu. Tieáp sau ñoù laø caùc bit rieâng leû ñeán, trong ñoù caùc bit coù troïng soá thaáp ñöôïc göûi tröôùc tieân. Con soá cuûa caùc bit döõ lieäu thay ñoåi giöõa 5 vaø 8. ÔÛ cuoái doøng döõ lieäu coøn coù moät bit döøng (Stop bit) ñeå ñaët laïi traïng thaùi loái ra (-12V).
Toác ñoä Baud coù giaù trò thoâng thöôøng laø : 300; 600; 1200; 4800; 9600; 19200 Baud. Kyù hieäu Baud töông öùng vôùi soá bit truyeàn trong 1 giaây ( bit per second _ bps). Chaúng haïn nhö khi toác ñoä Baud baèng 9600 coù nghóa laø coù 9600 bit döõ lieäu ñöôïc truyeàn trong 1 giaây. Vì moãi byte döõ lieäu coù moät bit baét ñaàu vaø moät bit ñöôïc duøng gôûi keøm theo, do ñoù khi truyeàn moät byte döõ lieäu ñaõ coù 10 bit ñöôïc göûi ñi. Vôùi toác ñoä Baud thoâng thöôøng, moãi giaây cho pheùp truyeàn nhieàu nhaát töø 30 ñeán 1920 byte döõ lieäu, vì vaäy nhöôïc ñieåm lôùn nhaát cuûa coång truyeàn noái tieáp laø toác ñoä truyeàn döõ lieäu bò haïn cheá.
So saùnh giöõa TTL vaø RS-232, ta thaáy TTL söû duïng möùc Logic döông vaø 0,4V choáng nhieãu. Trong khi ñoù, RS-232 söû duïng möùc ñieän aùp 12V ñeå ñaûm baûo truyeàn ñöôïc treân ñöôøng daây daøi. Vôùi khoaûng choáng nhieãu 12V cho pheùp tín hieäu ñi qua moâi tröôøng nhieãu maïnh maø ñoái vôùi TTL khoâng theå coù ñöôïc.
Moät trong nhöõng yeâu caàu quan troïng cuûa RS-232 laø thôøi gian chuyeån töø moät möùc logic naøy tôùi moät möùc logic khaùc khoâng vöôït quaù 4% thôøi gian moät bit. Vì theá ôû toác ñoä 19200 Baud, thôøi gian möùc logic phaûi nhoû hôn 0,04/19200s. Vaán ñeà naøy laøm giôùi haïn chieàu daøi ñöôøng truyeàn. Vôùi toác ñoä truyeàn 19200 Baud, ta coù theå truyeàn xa nhaát laø 50 feet (15,24 m).
Moät trong nhöõng vaán ñeà quan troïng caàn chuù yù khi söû duïng RS-232 laø maïch thu phaùt khoâng caân baèng (ñôn cöïc). Ñieàu naøy coù yù nghóa laø tín hieäu vaøo/ra ñöôïc so vôùi ñaát. Vì vaäy neáu ñieän theá taïi hai ñieåm ñaát cuûa hai maïch thu phaùt khoâng baèng nhau thì seõ coù doøng ñieän chaïy treân daây noái ñaát. Keát quaû seõ coù aùp rôi treân daây noái ñaát (V=I.R) seõ laøm suy yeáu tín hieäu logic. Neáu truyeàn tín hieäu ñi xa, R seõ taêng daàn ñeán aùp rôi treân ñaát, seõ lôùn daàn ñeán luùc tín hieäu logic rôi vaøo vuøng khoâng xaùc ñònh vaø maïch thu seõ khoâng nhaän ñuùng döõ lieäu ñöôïc truyeàn töø maïch phaùt. Chính söï khoâng caân baèng treân maïch thu phaùt laø moät trong nhöõng nguyeân nhaân giôùi haïn ñöôøng truyeàn .
Do trong luaän vaên naøy khoâng söû duïng caùc chuaån giao tieáp khaùc, ñöôïc giôùi thieäu treân, neân khoâng giôùi thieäu chi tieát .
MÔÛ ROÄNG PORT DUØNG 8255
Caáu truùc phaàn cöùng
8255A laø IC ngoaïi vi ñöôïc cheá taïo theo coâng ngheä LSI duøng ñeå giao tieáp song song giöõa Microprocessor vaø thieát bò ñieàu khieån beân ngoaøi.
Sô ñoà chaân vaø sô ñoà logic cuûa 8255
Teân caùc chaân cuûa 8255A
D7 ¸ D0 : Data Bus (Bi – Direction ) .
RESET: Reset, Input .
/CS :Chip Select, Input
/RD: Read, Input
/WR: Write, Input
A0A1 : Port Address
PA7 ¸ PA0 : Port A
PB7 ¸ PB0 : Port B
PC7 ¸ PC0 : Port C
8255A giao tieáp vôùi Microprocessor thoâng qua 3 bus : bus döõ lieäu, bit D7 ¸ D0, bus ñòa chæ A1A0, bus ñieàu khieån /RD, /WR, /CS, Reset.
Maõ leänh, thoâng tin traïng thaùi vaø döõ lieäu ñeàu ñöôïc truyeàn treân 8 ñöôøng döõ lieäu D7 ¸ D0. Microprocessor gôûi döõ lieäu ñeán 8255A hoaëc Microprocessor ñoïc döõ lieäu töø 8255A tuøy thuoäc vaøo leänh ñieàu khieån. Caùc ñöôøng tín hieäu /RD, /WR cuûa 8255A ñöôïc keát noái vôùi caùc ñöôøng /RD, /WR cuûa Microprocessor .
Tín hieäu Reset duøng ñeå khôûi ñoäng 8255A khi caáp ñieän, khi bò Reset caùc thanh ghi beân trong cuûa 8255A ñeàu bò xoùa vaø 8255A ôû traïng thaùi saün saøng laøm vieäc. Khi giao tieáp vôùi Microprocessor, ngoõ vaøo tín hieäu Reset naøy ñöôïc keát noái vôùi tín hieäu Reset Out cuûa Microprocessor.
Tín hieäu Chip Select /CS duøng ñeå löïa choïn 8255A khi Microprocessor giao tieáp vôùi nhieàu 8255A .
8255A goàm 3 Port xuaát/nhaäp (I/O) coù teân laø Port A, Port B, Port C, moãi Port 8255A goàm 8 bit. Port A goàm PA0 - PA7, Port B goàm PB0 - PB7, Port C goàm caùc bit PC0 - PC7. Caùc Port naøy coù theå laø caùc Port Input hay Output tuøy thuoäc vaøo leänh ñieàu khieån, leänh ñieàu khieån do Microprocessor gôûi ñeán chöùa trong thanh ghi leänh (coøn goïi laø thanh ghi ñieàu khieån) ñeå ñieàu khieån 8255A .
Caùc ñöôøng ñòa chæ A1A0 cuûa 8255A duøng ñeå löïa choïn caùc Port vaø thanh ghi. A1A0= 002 duøng ñeå choïn Port A, A1A0= 012 duøng ñeå choïn Port B, A1A0=102 duøng ñeå choïn Port C, A1A0=112 duøng ñeå choïn thanh ghi ñieàu khieån.
Trong sô ñoà khoái cuûa 8255A , caùc Port I/O cuûa 8255A chia ra laøm 2 nhoùm : nhoùm A goàm Port A vaø 4 bit cao cuûa Port C, nhoùm B goàm Port B vaø 4 bit thaáp cuûa Port C. Ñeå söû duïng caùc Port cuûa 8255A, ngöôøi laäp trình phaûi gôûi byte ñieàu khieån ra thanh ghi ñieàu khieån ñeå 8255A ñònh caáu hình cho caùc Port ñuùng theo yeâu caàu maø ngöôøi laäp trình mong muoán.
NHOÙM A
NHOÙM B
D7
D6
D5
D4
D3
D2
D1
D0
MODE SELECTION
1:ACTIVE
MODE SELECTION
00:MODE 0
01:MODE 1
1X:MODE 2
Port A
1:INPUT
0:OUTPUT
Port C
(HIGH)
1:INPUT
0:OUTPUT
MODE
SELECTION
1:MODE 1
0:MODE 0
Port B
1: IN PUT
0:OUTPUT
Port C
(LOW)
1:INPUT
0:OUTPUT
Caáu truùc töø ñieàu khieån cuûa 8255A.
Caáu truùc phaàn meàm cuûa 8255.
Do caùc Port ra cuûa 8255A ñöôïc chia ra laøm 2 nhoùm: nhoùm A vaø nhoùm B taùch rôøi neân töø ñieàu khieån cuûa 8255A cuõng ñöôïc chia laøm 2 nhoùm.
Caùc bit D2D1D0 duøng ñeå ñònh caáu hình cho nhoùm B:
Bit D0 duøng ñeå thieát laäp 4 bit thaáp cuûa Port C
D0=0 : Port C xuaát döõ lieäu (Output),
D0=1 : Port C laø Port nhaäp döõ lieäu (Input).
Bit D1 duøng ñeå thieát laäp Port B
D1=0: Port B laø Port xuaát döõ lieäu (Output)
D1=1:Port B laø Port nhaäp döõ lieäu (Input).
Bit D2 duøng ñeå thieát laäp Mode ñieàu khieån cuûa nhoùm B:
D2 = 0: nhoùm B hoaït ñoäng ôû Mode 0.
D2 = 1: nhoùm B hoaït ñoäng ôû Mode 1.
Caùc bit D6D5D4D3 duøng ñeå ñònh caáu hình cho nhoùm A:
Bit D3 duøng ñeå thieát laäp 4 bit cao cuûa Port C
D3=0:Port C laø Port xuaát döõ lieäu (Output)
D3=1:Port C laø Port nhaäp döõ lieäu (Input)
Bit D4 duøng ñeå thieát laäp Port A,
D4=0:Port A laø Port xuaát döõ lieäu (Output)
D4=1:Port A laø Port nhaäp döõ lieäu (Input)
Bit D6D5 duøng ñeå thieát laäp Mode ñieàu khieån cuûa nhoùm B:
D6D5=01: nhoùm A hoaït ñoäng ôû mode 1.
D6D5=1x: nhoùm A hoaït ñoäng ôû mode 2.
Giao tieáp giöõa maùy tính vôùi 8255A
Vi maïch 8255A coù theå giao tieáp vôùi vi xöû lyù theo hai kieåu: kieåu xuaát/nhaäp (I/O) vaø kieåu boä nhôù .
Khi vi xöû lyù giao tieáp vôùi 8255A theo kieåu I/O thì noù chæ duøng 8 ñöôøng ñòa chæ töø A0 ñeán A7 ñeå giao tieáp, coøn khi giao tieáp theo kieåu boä nhôù thì noù duøng 16 ñöôøng A0 ñeán A15 ñeå giao tieáp, vì vaäy dung löôïng giao tieáp theo kieåu I/O thaáp hôn dung löôïng giao tieáp theo kieåu boä nhôù.
Khi keát noái giöõa vi xöû lyù vaø vi maïch 8255A thì 2 ñöôøng ñòa chæ A0 vaø A1 duøng ñeå löïa choïn caùc coång vaø thanh ghi ñieàu khieån, coøn caùc ñöôøng A2-A7 duøng ñeå löïa choïn vi maïch hoaït ñoäng, thoâng thöôøng caùc ñöôøng ñòa chæ naøy ñöôïc ñöa vaøo vi maïch giaûi maõ roài caùc ngoõ ra cuûa vi maïch giaûi maõ seõ ñöa ñeán chaân /CS cuûa caùc vi maïch 8255A.
Ví duï: thieát keá 2 vi maïch 8255A giao tieáp vôùi vi xöû lyù theo kieåu I/O. Ta coù baûng ñòa chæ caùc vi maïch 8255A nhö sau:
IC
A7
A6
A5
A4
A3
A2
A1
A0
HEX
8255I
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
00
03
8255II
0
0
0
0
0
0
0
0
0
0
1
1
0
1
0
1
04
07
8255I chieám 1 vuøng ñòa chæ töø 00H ñeán 03H , ñòa chæ cuûa Port A= 00H, Port B= 01H ,Port C= 02H vaø ñòa chæ cuûa thanh ghi ñieàu khieån = 03H .
8255II chieám moät vuøng ñòa chæ töø 04H ñeán 07H, ñòa chæ cuûa Port A= 04H, Port B= 05H, Port C= 06H vaø ñòa chæ cuûa thanh ghi ñieàu khieån= 07H .
Giao tieáp kieåu boä nhôù
Khi thieát keá giao tieáp 8255A vôùi vi xöû lyù theo kieåu boä nhôù, chöùc naêng cuûa 8255A khoâng coù gì thay ñoåi, chæ thay ñoåi veà ñòa chæ truy xuaát. Kieåu I/O: ñòa chæ cuûa Port hay thanh ghi coù ñoä daøi 8 bit. Kieåu boä nhôù: ñòa chæ cuûa Port hay thanh ghi seõ coù ñoä daøi 16 bit gioáng nhö boä nhôù neân goïi laø kieåu boä nhôù.
Khi thieát keá kieåu I/O theo kieåu boä nhôù thì moãi Port hay thanh ghi ñieàu khieån cuûa 8255A ñöôïc xem laø töøng oâ nhôù. Khi ñoù, vi xöû lyù giao tieáp vôùi 8255A gioáng nhö giao tieáp vôùi boä nhôù vaø 2 leänh IN, OUT khoâng coøn taùc duïng. Kieåu boä nhôù chæ söû duïng trong caùc heä thoáng nhoû, ñôn giaûn.
Giao tieáp kieåu I/O
Khi thieát keá vi xöû lyù giao tieáp vôùi 8255A theo kieåu I/O thì vieäc giao tieáp thoâng qua hai leänh: In addr – Port vaø Out addr – Port. Döõ lieäu giao tieáp luoân chöùa trong thanh ghi A, ñòa chæ Port (Addr Port) coù ñoä daøi 8 bit.
Cuõng gioáng nhö boä nhôù, Vi xöû lyù coù theå giao tieáp vôùi nhieàu vi maïch 8255A. Vôùi 8 bit ñòa chæ, neáu xem moãi moät ñòa chæ truy xuaát moät oâ nhôù thì vi xöû lyù coù khaû naêng truy xuaát 255 oâ nhôù (vôùi 256 ñòa chæ). Moãi vi maïch 8255A chieám 4 ñòa chæ, 3 Port vaø 1 thanh ghi ñieàu khieån, neân soá löôïng vi maïch 8255A coù theå giao tieáp vôùi vi xöû lyù laø .
Giao tieáp IC8255A vôùi Microprocessor.
ÖÙùng duïng cuûa 8255A
IC giao tieáp I/O 8255A coù raát nhieàu öùng duïng trong caùc heä thoáng ñieàu khieån duøng MicroProcessor, 8255A ñoùng vai troø laø IC giao tieáp giöõa MicroProcessor vaø ñoái töôïng ñieàu khieån.
Caùc öùng duïng cuûa 8255A laø truyeàn döõ lieäu, giaûi maõ hieån thò, giaûi maõ baøn phím, giao tieáp ñieàu khieån tuøy theo yeâu caàu .
CHÖÔNG 3
GIÔÙI THIEÄU HOÏ VI ÑIEÀU KHIEÅN 8051
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 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 ms.
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
Soá hieäu saûn xuaát
Boä nhôù chöông trình treân chip
Boä nhôù ._.döõ lieäu treân chip
Soá boä ñònh thôøi
(boä ñeám)
8031
8051
8751
8951
0K
4K ROM
4K EPROM
4K FLASH
128 byte
128 byte
128 byte
128 byte
2
2
2
2
8032
8052
8752
8952
0K
8K ROM
8K EPROM
8K FLASH
256 byte
256 byte
256 byte
256 byte
3
3
3
3
GIÔÙI THIEÄU AT89C52
AT89C52 laø moät Microcomputer 8 bit, hoï 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") . Vôùi söï keát noái linh hoaït 8 bit CPU vôùi flash treân chip, AT89C52 cuûa Atmel laø moät micro-computer tuyeät vôøi vôùi ñoä linh hoaït cao vaø giaûi quyeát hieäu quaû nhieàu chöông trình ñieàu khieån ghi vaøo noù .
Sô ñoà khoái cuûa AT89C51
Nhöõng ñaëc tröng cuûa AT89C52.
Töông thích vôùi caùc saûn phaåm MCS-51
8 KByte 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 .
Khoùa boä nhôù chöông trình ba caáp .
256 x 8 bit RAM noäi .
32 ñöôøng xuaát-nhaäp laäp trình ñöôïc (töông öùng 4 Port) .
Ba Timer/Counter 16 bit .
Moät caáu truùc ngaét 6-vector 2 möùc .
Moät Port noái tieáp song coâng laäp trình ñöôïc daïng full.
Maïch ñoàng hoà vaø boä dao ñoäng treân chip .
Caáu hình chaân cuûa AT89C52 nhö sau
Nhö vaäy AT89C52 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 döõ 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
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, Port 0 coù caùc ñieän trôû pull-up 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ôû pull-up 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ôû pull-up 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ôû pull-up 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ôû pull-up 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ôû pull-up 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ôû pull-up 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ôû keùo leân 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ôû pull-up 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 .
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ôû pull-up 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ôû pull-up 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ôû pull-up 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
Chaân
Teân
Caùc chöù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
T0
T1
Port nhaäp noái tieáp
Port xuaát noái tieáp
Ngaét 0 beân ngoaøi
Ngaét 1 beân 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
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/
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 () 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ïc ñí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 thanh ghi SFR taïi ñòa chæ 8Eh . Neáu bit naøy ñöôïc set, ALE chæ ñöôï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ôû pull-up "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 (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, ñöôïc kích hoaït hai laàn moãi chu kyø maùy, nhöng hai hoaït ñoäng seõ bò boû qua moãi khi truy caäp boä nhôù döõ lieäu ngoaøi .
/Vpp
(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, seõ ñöôïc choát beân trong khi Reset .
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) .
XTAL1 vaø XTAL2
XTAL1 vaø XTAL2 laø hai ngoõ vaøo vaø ra cuûa moät boä khueách ñaïi dao ñoäng nghòch ñöôïc caáu hình ñeå duøng nhö moät boä dao ñoäng treân chip .
Caùc keát noái cuûa boä dao ñoäng
Khoâng coù yeâu caàu naøo veà duty cycle cuûa tín hieäu xung ngoaøi, vì ngoõ nhaäp noái vôùi maïch taïo xung noäi laø moät flip-flop chia ñoâi, nhöng caùc chæ ñònh veà thôøi gian High vaø Low, caùc möùc aùp toái ña vaø toái thieåu phaûi ñöôïc tuaân theo .
Caùc ñaëc tröng khaùc seõ ñöôïc trình baøy moät caùch chi tieát hôn ôû nhöõng phaàn tieáp theo sau ñaây.
TOÅ CHÖÙC BOÄ NHÔÙ
8051/8031 coù boä nhôù theo caáu truùc Harvard: coù nhöõng vuøng boä nhôù rieâng bieät cho chöông trình vaø döõ lieäu. Nhö ñaõ noùi ôû treân, caû chöông trình vaø döõ lieäu coù theå ôû beân trong, duø vaäy chuùng coù theå ñöôïc môû roäng baèng caùc thaønh phaàn ngoaøi leân ñeán toái ña 64 Kbyte boä nhôù chöông trình vaø 64 Kbyte boä nhôù döõ lieäu .
Boä nhôù beân trong bao goàm ROM vaø RAM treân chip, RAM treân chip bao goàm nhieàu phaàn : phaàn löu tröõ ña duïng, phaàn löu tröõ ñòa chæ hoùa töøng bit, caùc bank thanh ghi vaø caùc 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 ñòa chæ boä nhôù khaùc.
Ngaên xeáp beân trong RAM noäi nhoû hôn so vôùi RAM ngoaøi nhö trong caùc boä vi xöû lyù khaùc .
Chi tieát veà boä nhôù RAM treân chip
Theo hình veõ sau, RAM beân trong 8051/8031 ñöôïc phaân chia giöõa caùc bank thanh ghi (00H–1FH), RAM ñòa chæ hoùa töøng bit (20H–2FH), RAM ña duïng (30H–7FH) vaø caùc thanh ghi chöùc naêng ñaëc bieät (80H–FFH).
Boä nhôù
chöông trình
ñöôïc choïn
qua PSEN
FFFF
0000
Boä nhôù
döõ lieäu
ñöôïc choïn
qua WR
vaø RD
FFFF
0000
FF
00
Boä nhôù treân chip
Boä nhôù môû roäng
Toùm taét caùc vuøng boä nhôù cuûa 8031/8051
.
7F
7E
7D
7C
7B
7A
79
78
2F
77
76
75
74
73
72
71
70
2E
6F
6E
6D
6C
6B
6A
69
68
2D
67
66
65
64
63
62
61
60
2C
5F
5E
5D
5C
5B
5A
59
58
2B
57
56
55
54
53
52
51
50
2A
4F
4E
4D
4C
4B
4A
49
48
29
47
46
45
44
43
42
41
40
28
3F
3E
3D
3C
3B
3A
39
38
27
37
36
35
34
33
32
31
30
26
2F
2E
2D
2C
2B
2A
29
28
25
27
26
25
24
23
22
21
20
24
1F
1E
1D
1C
1B
1A
19
18
23
17
16
15
14
13
12
11
10
22
0F
0E
0D
0C
0B
0A
09
08
21
07
06
05
04
03
02
011
00
20
Bank 3
1F
18
Bank 2
17
10
Bank 1
0F
08
Bank 0
07
00
RAM ña duïng
7F
30
RAM
Ñòa chæ bit
Ñòa chæ byte
87
86
85
84
83
82
81
80
80
P0
khoâng ñöôïc ñòa chæ hoùa bit
81
SP
khoâng ñöôïc ñòa chæ hoùa bit
82
DPL
khoâng ñöôïc ñòa chæ hoùa bit
83
DPH
khoâng ñöôïc ñòa chæ hoùa bit
87
PCON
8F
8E
8D
8C
8B
8A
89
88
88
TCON
khoâng ñöôïc ñòa chæ hoùa bit
89
TMOD
khoâng ñöôïc ñòa chæ hoùa bit
8A
TL0
khoâng ñöôïc ñòa chæ hoùa bit
8B
TL1
khoâng ñöôïc ñòa chæ hoùa bit
8C
TH0
97
96
95
94
93
92
91
90
90
P1
9F
9E
9D
9C
9B
9A
99
98
98
SCON
khoâng ñöôïc ñòa chæ hoùa bit
99
SBUF
A7
A6
A5
A4
A3
A2
A1
A0
A0
P2
AF
–
–
AC
AB
AA
A9
A8
A8
IE
–
–
–
BC
BB
BA
B9
B8
B8
IP
E7
E6
E5
E4
E3
E2
E1
E0
E0
ACC
D7
D6
D5
D4
D3
D2
–
D0
D0
PSW
B7
B6
B5
B4
B3
B2
B1
B0
B0
P3
F7
F6
F5
F4
F3
F2
F1
F0
F0
B
THANH GHI CHÖÙC NAÊNG ÑAËC BIEÄT
Ñòa chæ byte
Ñòa chæ bit
khoâng ñöôïc ñòa chæ hoùa bit
8D
TH1
FF
Toùm taét boä nhôù döõ lieäu treân chip
RAM ña duïng
Maëc duø treân hình cho thaáy 80 byte RAM ña duïng chieám caùc ñòa chæ töø 30H–7FH, 32 byte döôùi cuøng töø 00H ñeán 1FH cuõng coù theå ñöôïc duøng vôùi muïc ñích töông töï (maëc duø caùc ñòa chæ naøy ñaõ coù muïc ñích khaùc).
Moïi ñòa chæ trong vuøng RAM ña duïng ñeàu coù theå ñöôïc truy xuaát töï do duøng caùch ñaùnh ñòa chæ tröïc tieáp hoaëc 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 .
Vuøng RAM ña muïc ñích coøn coù theå ñöôïc truy xuaát baèng kieåu ñònh ñòa chæ giaùn tieáp thoâng qua caùc thanh ghi R0 vaø R1 . Thí duï, 2 leänh sau thöïc hieän cuøng moät coâng vieäc nhö ôû thí duï treân .
MOV R0,#5FH
MOV A,@R0
Leänh ñaàu tieân söû duïng kieåu ñònh ñòa chæ töùc thì, di chuyeån giaù trò 5FH vaøo thanh ghi R0. Leänh tieáp theo söû duïng kieåu ñònh ñòa chæ giaùn tieáp, di chuyeån döõ lieäu troû bôûi R0 vaøo thanh ghi A.
RAM ñòa chæ hoùa töøng bit
8051/8031 chöùa 210 bit ñöôïc ñòa chæ hoùa, trong ñoù 128 bit laø ôû caùc ñòa chæ byte 20H ñeán 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 tieä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 20H ñeán 2FH. Caùc ñòa chæ naøy ñöôïc truy xuaát nhö caùc byte hoaëc nhö caùc bit phuï thuoäc vaøo leänh ñöôïc duøng. Ví duï, ñeå ñaët bit 67H baèng 1, 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 ôû ñòa chæ naøy. Caùc vi xöû lyù seõ 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 caû byte
Caùc Bank thanh ghi
32 byte thaáp nhaát cuûa boä nhôù noäi laø daønh cho caùc bank thanh ghi. Boä leänh cuûa 8051/8031 hoã trôï 8 thanh ghi (R0 ñeán R7) vaø theo maëc ñònh (sau khi Reset heä thoáng) caùc thanh ghi naøy ôû caùc ñò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 caùc thanh ghi R0 ñeán 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 giaù trò 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 (PSW). 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 tích luõy 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ï thuoäc vaøo caùc phaàn khaùc) .
CAÙC THANH GHI CHÖÙC NAÊNG ÑAËC BIEÄT
Moät baûn ñoà vuøng boä nhôù treân chip ñöôïc goïi laø khoâng gian thanh ghi chöùc naêng ñaëc bieät (SFR) nhö ñöôïc trình baøy trong baûng treân .
Löu yù raèng khoâng phaûi taát caû caùc ñòa chæ ñeàu ñöôïc söû duïng, vaø caùc ñòa chæ khoâng ñöôïc söû duïng coù theå khoâng ñöôïc cung caáp treân chip . Caùc haønh ñoäng ñoïc ñeán caùc ñòa chæ naøy noùi chung seõ traû veà caùc döõ lieäu ngaãu nhieân, vaø caùc haønh ñoäng vieát seõ coù moät hieäu öùng khoâng xaùc ñònh .
Caùc phaàn meàm ngöôøi duøng khoâng neân vieát caùc möùc 1 ñeán nhöõng vò trí khoâng ñöôïc lieät keâ naøy, vì chuùng coù theå ñöôïc duøng trong caùc saûn phaåm töông lai khi theâm vaøo caùc ñaëc tröng môùi. Trong tröôøng hôïp naøy, caùc giaù trò Reset hoaëc khoâng tích cöïc cuûa caùc bit môùi seõ luoân laø 0 .
Caùc thanh ghi noäi cuûa 8051/8031 ñöôï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 moät . Taùc ñoäng naøy ñöôïc ngaàm ñònh trong maõ leänh .
Caùc thanh ghi trong 8051/8031 ñöôï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, neân khoâng lôïi loäc gì khi ñaët chuùng vaøo trong RAM treân chip).
Ñoù laø lyù do ñeå 8051/8031 coù nhieàu thanh ghi nhö vaäy . Cuõng nhö R0 ñeán R7, coù 21 thanh ghi chöùc naêng ñaëc bieät (SFR : Special Function Register) ôû vuøng treân cuûa RAM noäi, töø ñòa chæ 80H ñeán 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å ñöôïc truy xuaát ngaàm 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å ñöôïc ñòa chæ hoùa bit hoaëc byte . Ngöôøi thieát keá phaûi thaä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 khaùc khoâng ñoåi . Ta thaáy raèng E0H ñoàng thôøi laø ñòa chæ byte cuûa caû thanh ghi tích luõy vaø laø ñòa chæ bit cuûa bit coù troïng soá nhoû nhaát trong thanh ghi tích luõy . Vì leänh SETB chæ taùc ñoäng treân bit, neân chæ coù ñòa chæ bit laø coù hieäu quaû .
Töø traïng thaùi chöông trình
Töø traïng thaùi chöông trình (PSW : Program Status Word) ôû ñò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 0 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ù ñöôïc 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 coù 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 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 côø nhôù
ANL C, 25H .
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 0AH ñeán 0FH . Neáu caùc giaù trò ñöôïc coäng laø soá BCD, thì sau leänh coäng 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 vaøo nibble cao .
Côø 0 : Côø 0 (F0) laø 1 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 choïn bank thanh ghi (RS0 vaø RS1) xaùc ñònh bank thanh ghi ñöôïc tích cöïc . Chuùng ñöôïc xoùa sau khi Reset heä thoáng vaø ñöôïc thay ñoåi baèng phaàn meàm neáu caàn . Ví duï, ba leänh sau cho pheùp bank thanh ghi 3 vaø di chuyeån noäi dung cuûa thanh ghi R7 (ñòa chæ byte 1FH) ñeán 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 ñaïi chæ bit ñuùng ñöôïc thay theá cho caùc kyù hieäu “RS1” vaø “RS0” . Vaäy, leänh SETB RS1 seõ gioáng nhö leänh SETB 0D4H .
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 ñöôïc 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 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 .
Keát quaû laø moät soá coù daáu 8EH ñöôïc xem nhö -116, khoâng phaûi laø keát quaû ñuùng (142), vì vaäy, bit OV ñöôïc set .
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. Thanh ghi B cuõng coù theå ñöôïc xem nhö thanh ghi ñeäm ña duïng. Noù ñöôïc ñòa chæ hoùa töøng bit baèng caùc ñòa chi bit F0H ñeán F7H .
Con troû ngaên xeáp
Con troû ngaên xeáp (SP) laø moät thanh ghi 8 bit ôû ñòa chæ 81H . Noù chöùa ñòa chæ cuûa byte döõ lieäu hieän haønh treân ñænh cuûa ngaên xeáp . Caùc leänh treân ngaên xeáp bao goàm caùc thao taùc caát döõ lieäu vaøo ngaên xeáp vaø laáy döõ lieäu ra khoûi ngaên xeáp . Leänh caát döõ lieäu vaøo ngaên xeáp seõ laøm taêng SP tröôùc khi ghi döõ lieäu, vaø leänh laáy döõ lieäu ra khoûi ngaên xeáp seõ ñoïc döõ lieäu vaø giaûm SP . Ngaên xeáp cuûa 8051/8031 ñöôïc giöõ trong RAM noäi vaø ñöôïc giôùi haïn caùc ñòa chæ coù theå truy xuaát baèng ñòa chæ giaùn tieáp . Chuùng laø 128 byte ñaàu cuûa 8051/8031 .
Ñeå khôûi ñoäng laïi SP vôùi ngaên xeáp baét ñaàu taïi 60H, caùc leänh sau ñaây ñöôïc duøng:
MOV SP, #5FH
Treân 8051/8031 ngaên xeáp bò giôùi haïn 32 byte vì ñòa chæ cao nhaát cuûa RAM treân chip laø 7FH. Sôû dó duøng giaù trò 5FH vì SP seõ taêng leân 60H tröôùc khi caát byte döõ lieäu ñaàu tieân .Ngöôøi thieát keá coù theå choïn khoâng phaûi khôûi ñoäng laïi con troû ngaên xeáp maø ñeå noù laáy giaù trò maëc ñònh khi Reset heä thoáng . Giaù trò maëc ñònh ñoù laø 07H vaø keát quaû laø ngaên ñaàu tieân ñeå caát döõ lieäu coù ñòa chæ laø 08H . Neáu phaàn meàm öùng duïng khoâng khôûi ñoäng laïi SP, bank thanh ghi 1 (coù theå caû 2 vaø 3) seõ khoâng duøng ñöôïc vì vuøng RAM naøy ñaõ ñöôïc duøng laøm ngaên xeáp .
Ngaên xeáp ñöôïc truy xuaát tröïc tieáp baèng caùc leänh PUSH vaø POP ñeå löu tröõ taïm thôøi vaø laáy laïi döõ lieäu, hoaëc ñöôïc truy xuaát ngaàm baèng caùc leänh goïi chöông trình con (ACALL, LCALL) vaø caùc leänh trôû veà (RET, RETI) ñeå caát vaø laáy laïi boä ñeám chöông trình .
Con troû döõ lieäu
Con troû döõ lieäu (DPTR) ñöôïc duøng ñeå truy xuaát boä nhôù ngoaøi laø moät thanh ghi 16 bit ôû ñòa chæ 82H (DPL : byte thaáp) vaø 83H (DPH : byte cao). Ba leänh sau seõ ghi 55H vaøo RAM ngoaøi ôû ñòa chæ 1000H :
MOV A, #55H
MOV DPTR, #1000H
MOVX @DPTR, A
Leänh ñaàu tieân duøng ñòa chæ töùc thôøi ñeå taûi döõ lieäu 55H vaøo thanh ghi tích luõy. Leänh thöù hai cuõng duøng ñòa chæ töùc thôøi, laàn naøy ñeå taûi döõ lieäu 16 bit 1000H vaøo con troû döõ lieäu . Leänh thöù ba duøng ñòa chæ giaùn tieáp ñeå di chuyeån döõ lieäu trong A (55H) ñeán RAM ngoaøi ôû ñòa chæ ñöôïc chöùa trong DPTR (1000H).
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æ 90H, 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 . Ví duï, neáu moät motor ñöôïc noái qua moät cuoän daây coù transistor laùi ñeán bit 7 cuûa Port 1, noù coù theå ñöôïc baät vaø taét baèng moät leänh ñôn :
SETB P1.7 ; baät motor
CLR P1.7 ; taét motor
Caùc leänh treân duøng daáu chaám ñeå xaùc ñònh moät bit trong moät byte. Trình hôïp dòch seõ thi haønh söï chuyeån ñoåi caàn thieát, vì vaäy hai leänh sau ñaây laø nhö nhau :
CLR P1.7
CLR 97H
Trong moät ví duï khaùc, xem xeùt giao tieáp ñeán moät thieát bò vôùi moät bit traïng thaùi goïi laø BUSY, ñöôïc set khi thieát bò ñang baän vaø ñöôïc xoùa khi thieát bò ñaõ saün saøng. Neáu BUSY ñöôïc noái tôùi P1.5, voøng laëp sau seõ ñöôïc duøng ñeå chôø thieát bò trôû laïi traïng thaùi saün saøng.
WAIT : JB P1.5, WAIT
Leänh naøy coù nghóa laø “neáu bit P1.5 ñöôïc set thì nhaûy tôùi nhaõn WAIT” . Noùi caùch khaùc “nhaûy trôû laïi vaø kieåm tra laàn nöõa” .
Caùc thanh ghi Timer
8051/8031 chöùa ba boä ñònh thôøi/ ñeám 16 bit ñöôïc duøng cho 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) . Timer 2 (TL2: byte thaáp vaø TH2: byte cao) . Vieäc vaän haønh Timer0 vaø Timer1 ñöôïc set bôûi thanh ghi Timer Mode (TMOD) ôû ñòa chæ 89H vaø thanh ghi ñieàu khieån Timer (TCON) ôû ñòa chæ 88H. Vieäc vaän haønh Timer2 ñöôïc set bôûi thanh ghi Timer2 Mode ( T2MOD) ôû ñòa chæ 0C9H vaø thanh ghi ñieàu khieån (T2CON) ôû ñòa chæ 0C8H. Chæ coù TCON vaø T2CON ñöôïc ñòa chæ hoùa töøng bit . Ñöôïc cho ôû baûng sau :
Thanh ghi TMOD (Timer Mode)
Duøng ñeå xaùc laäp cheá ñoä hoaït ñoäng cho boä Timer .
Gate C/ M1 M0 Gate C/ M1 M0
4 bit cao xaùc laäp Timer 1
4 bit thaáp xaùc laäp Timer 0
- M1,M0 : xaùc laäp Mode
M1
M0
Mode
0
0
0
0
1
1
1
0
2
1
1
3
C/ = : boä Timer nhaän xung clock töø dao ñoäng noäi.
C/ = : boä Timer nhaän xung clock töø beân ngoaøi ( töø ngoõ T0 hay T1)
- Gate : ñieàu khieån môû roäng.
Gate = 0 : boä Timer hoaït ñoäng bình thöôøng
Gate = 1 : boä Timer chæ hoaït ñoäng khi ngoõ INTx =0
Thanh ghi TCON ( Timer Control)
TF1
TR1
TF0
TR0
IE1
IT2
IE0
IT0
bit thaáp khoâng duøng cho Timer)
Thanh ghi T2CON :
TF2
EXF2
RCLK
TCLK
EXEN2
TR2
C/
CP/
7
6
5
4
3
2
1
0
Xaùc laäp MODE Timer2:
RCLK + TCLK
CP/
TR2
MODE
0
0
1
16-Bit Auto-Reload
0
1
1
16-Bit Capture
1
X
1
Baud Rate Generator
X
X
0
(Off)
TFx : ( Timer Flag) : côø traøn Timer x : khi boä ñeám bò traøn thì TFx =1 ( sau khi traøn phaûi xoùa veà 0)
Caùc thanh ghi Port noái tieáp
8051/8031 chöùa 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, mode hoaëc cho vieäc giao tieáp vôùi caùc IC khaùc coù giao tieáp noái tieáp (caùc 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 seõ giöõ caû hai döõ 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.
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æ A8H. Caû hai thanh ghi ñöôïc ñòa chæ hoùa töøng bit.
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. Chuùng ñöôïc toùm taét trong baûng sau :
4 – Khoâng ñònh nghóa.
3 GF1 Bit côø ña duïng 1.
2 GF0 Bit côø ña duïng 0.
1 PD Giaûm coâng suaát, ñöôïc set ñeå kích hoaït
mode giaûm coâng suaát, chæ thoaùt khi Reset
0 IDL Mode chôø, set ñeå kích hoaït mode chôø, chæ
thoaùt khi coù ngaét hoaëc Reset heä thoáng.
Bit Kyù hieäu YÙ nghóa
7 SMOD Bit gaáp ñoâi toác ñoï Baud, neáu ñöôïc set thì
toác ñoä Baud seõ taêng gaáp ñoâi trong caùc mode
1,2 vaø 3 cuûa Port noái tieáp.
6 – Khoâng ñònh nghóa.
5 – Khoâng ñònh nghóa.
HOAÏT ÑOÄNG CUÛA PORT NOÁI TIEÁP
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ä treân moät daûi taàn soá roäng. Chöùc naêng chuû yeáu cuûa Port noái tieáp laø thöïc hieän chuyeån ñoåi song song sang noái tieáp ñoái 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.1 ôû 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 ñöôïc thu ñaày ñuû thì döõ lieäu seõ khoâng bò maát.
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 chæ 99H thaät söï laø hai boä ñeäm. Vieát vaøo SBUF ñeå naïp döõ lieäu seõ ñöôïc phaùt, vaø ñoïc 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 chæ ñoïc ñeå thu.
CLK SBUF Q
(chæ ghi)
TxD
(P3.1)
Thanh ghi dòch
D
CLK
Xung nhòp toác ñoä Baud
(phaùt)
Xung nhòp toác ñoä Baud
(thu)
RxD
(P3.0)
SBUF
(chæ ñoïc)
Bus noäi 8051/8031
Thanh ghi ñieàu khieån Port noái tieáp: ôû ñò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 keát thuùc vieäc phaùt hoaëc thu kyù töï. Taàn soá laøm vieäc cuûa Port noái tieáp, coøn goïi laø toác ñoä Baud coù theå coá ñònh. 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. Sau ñaây laø caùc baûng toùm taét thanh ghi SCON vaø caùc cheá ñoä cuûa Port noái tieáp :
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ä Port noái tieáp. Cho pheùp truyeàn thoâng ña xöû lyù trong caùc cheá ñoä 2 vaø 3.
SCON.4 REN 9CH Cho pheùp boä thu phaûi ñöôïc ñaët leân 1 ñeå thu.
SCON.3 TB8 9BH Bit 8 phaùt, bit thöù 9 ñöôïc phaùt trong caùc cheá ñoä 2 vaø 3
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 baèng 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.
Toùm taét thanh ghi cheá ñoä Port noái tieáp SCON.
Caùc cheá ñoä hoaït ñoäng
Thanh ghi dòch 8 bit (cheá ñoä 0)
Cheá ñoä 0 ñöôïc choïn baèng caùch ghi caùc bit 0 vaøo SM1 vaø SM0 cuûa SCON, ñöa Port noái tieáp vaøo cheá ñoä thanh ghi dòch 8 bit. Döõ lieäu noái tieáp vaøo vaø ra qua RxD vaø TxD xuaát xung nhòp dòch. 8 bit ñöôïc phaùt hoaëc thu vôùi bit ñaàu tieân laø LSB. Toác ñoä Baud coá ñònh ôû 1/12 taàn soá dao ñoäng treân chip.
Vieäc phaùt ñi ñöôïc khôûi ñoäng baèng baát cöù leänh naøo ghi döõ lieäu vaøo SBUF. Döõ lieäu ñöôïc dòch ra ngoaøi treân ñöôøng RxD (P3.0) vôùi caùc xung nhòp ñöôïc göûi ra ñöôøng TxD (P3.1). Moãi bit phaùt ñi hôïp leä trong moät chu kyø maùy. Trong moãi chu kyø maùy, tín hieäu xung nhaäp xuoáng thaáp ôû S3P1 vaø trôû veà möùc cao ôû S6P1.
S1
P1
P2
S2
P1
P2
S3
P1
P2
S4
P1
P2
S5
P1
P2
S6
P1
P2
Moät chu kyø maùy
OSC
ALE
Bit döõ lieäu hôïp leä
Döõ lieäu xuaát
Clock dòch
Clock dòch
(TxD)
D0
D1
D2
D3
D4
D5
D6
D7
Döõ lieäu xuaát
ALE
Phoùng to
Giaûn ñoà thôøi gian Port noái tieáp phaùt ôû cheá ñoä 0.
Vieäc thu ñöôïc khôûi ñoäng khi bit cho pheùp boä thu (REN) ._.