Luanvan1. Luaân vaên toát nghieäp
BOÄ GIAÙO DUÏC VAØ ÑAØO TAÏO
ÑAÏI HOÏC QUOÁC GIA THAØNH PHOÁ HOÀ CHÍ MINH
TRÖÔØNG ÑAÏI HOÏC SÖ PHAÏM KYÕ THUAÄT
KHOA ÑIEÄN –ÑIEÄN TÖÛ
BOÄ MOÂN ÑIEÄN TÖÛ
LUAÄN VAÊN TOÁT NGHIEÄP
ÑEÀ TAØI :
KHAÛO SAÙT VAØ ÖÙNG DUÏNG VI ÑIEÀU KHIEÅN- THIEÁT KEÁ-
THI COÂNG MAÏCH KHOÁNG CHEÁ NHIEÄT ÑOÄ PHOØNG
SVTH :NGUYEÃN HOAØNG VUÕ
NGUYEÃN THANH VUÕ
GVHD:LEÂ THANH ÑAÏO
Trang 1
3. Luaân vaên toát nghieäp
LÔØI CAÛM TAÏ
Chuùng em xin chaân
thaønh caûm ôn Thaày Leâ
Thanh Ñaïo ñaõ taän tình
höôùng daãn vaø giuùp ñô
chuùng em trong suoátthôøigian
thöïc hieän luaän vaên .
Xin caûm ôn quùi thaày
coâKhoa Ñieän vaø caùc baïn
sinh vieân cuøng khoùa ñaõ
ñoùng goùp nhöõng yù kieán
Trang 3
4. Luaân vaên toát nghieäp
LÔØI NOÙI ÑAÀU
Trong nhieàu lónh vöïc saûn xuaát coâng nghieäp hieän nay, nhaát laø
ngaønh coâng nghieäp luyeän kim, cheà bieán thöïc phaãm… vaán ñeà ño
vaø khoáng cheá nhieät ñoä ñaëc bieät ñöôïc chuù troïng ñeán vì noù laø
moät yeáu toá quyeát ñònh chaát löôïng saûn phaãm. Naém ñöôïc taàm quan
troïng cuûa vaán ñeà treân nhoùm thöïc hieän tieán haønh nghieân cöùu vaø
thieát keá moät heä thoáng ño vaø khoáng cheá nhieät ñoä töï ñoäng, vôùi
mong muoán laø giaûi quyeát nhöõng yeâu caàu treân, vaø laáy ñoù laøm
ñeà taøi toát nghieäp cho mình.
Nhöõng kieán thöùc naêng löïc ñaït ñöôïc trong quaù trình hoïc taäp ôû
tröôøng seõ ñöôïc ñaùnh giaù qua ñôït baûo veä luaän vaên cuoái khoùa. Vì
vaäy chuùng em coá gaéng taän duïng taát caû nhöõng kieán thöùc ñaõ hoïc
ôû tröôøng cuøng vôùi söï tìm toài nghieân cöùu, ñeå coù theå hoaøn thaønh
toát luaän vaên naøy. Nhöõng saûn phaãm nhöõng keát quaû ñaït ñöôïc
ngaøy hoâm nay tuy khoâng coù vì lôùn lao. Nhöng ñoù laø nhöõng thaønh
quaû cuûa naêm hoïc taäp. Laø thaønh coâng ñaàu tieân cuûa chuùng em
tröôùc khi ra tröôøng .
Maët duø chuùng em raát coá gaéng ñeå hoaøn thaønh taäp luaän vaên
naøy ñuùng thôøi haïn, neân khoâng traùnh khoûi nhöõng thieáu soùt mong
quí thaày coâ thoâng caûm. Chuùng em mong ñöôïc ñoùn nhaän nhöõng yù
kieán ñoùng goùp. Cuoái cuøng xin chaân thaønh caûm ôn quí thaày coâ vaø
caùc baïn sinh vieân.
Nhoùm sinh vieân thöïc hieän
NGUYEÃN HOAØNG VUÕ
Trang 4
9. Luaân vaên toát nghieäp
BOÄ GIAÙO DUÏC VAØ ÑAØO TAÏO COÄNG HOØA XAÕ HOÄI CHUÛ
NGHÓA VIEÄT NAM
ÑAÏI HOÏC QUOÁC GIA TP.HCM ÑOÄC LAÄP_ TÖÏ DO _HAÏNH
PHUÙC
TRÖÔØNG ÑAÏI HOÏC SÖ PHAÏM KYÕ THUAÄT
KHOA ÑIEÄN _ÑIEÄN TÖÛ
NHIEÄM VUÏ LUAÄN VAÊN TOÁT NGHIEÄP
Hoï vaø teân sinh vieân thöïc hieän : Nguyeãn Hoaøng Vuõ__Nguyeãn
Thanh Vuõ
Lôùp : 95 KÑÑ
Ngaønh : ñieän _ñieän töû
1.Teân ñeà taøi : KHAÛO SAÙT VAØ ÖÙNG DUÏNG VI ÑIEÀU
KHIEÅN_THIEÁT KEÁ_THI COÂNG MAÏCH KHOÁNG
CHEÁ NHIEÄT ÑOÄ PHOØNG.
2. Caùc soá lieäu ban ñaàu :
3.Noäi dung caùc phaàn thuyeát minh vaø tính toaùn :
4.Caùc baûn veõ :
5.Giaùo vieân höôùng daãn : LEÂ THANH ÑAÏO
6. Ngaøy giao nhieäm vuï :
Trang 9
10. Luaân vaên toát nghieäp
7.Ngaøy hoaøn thaønh nhieäm vuï :
Thoâng qua boä moân.
Ngaøy___thaùng___naêm___
Giaùo vieân höôùng daãn Chuû nhieäm boä
moân
Trang 10
11. Luaân vaên toát nghieäp
MUÏC LUÏC
Trang
A_PHAÀN GIÔÙI THIEÄU
TRANG TÖÏA
NHIEÄM VUÏ CUÛA LUAÄN VAÊN
BAÛNG NHAÄN XEÙT CUÛA GIAÙO VIEÂN HÖÔÙNG DAÃN
BAÛNG NHAÄN XEÙT CUÛA GIAÙO VIEÂN PHAÛN BIEÄN
LÔØI NOÙI ÑAÀU
LÔØI CAÛM ÔN
B_PHAÀN NOÄI DUNG
1
Chöông 1: DAÃN NHAÄP 1
I.ÑAËT VAÁN ÑEÀ
1
II.GIÔÙI THIEÄU ÑEÀ TAØI
1
III.MUÏC ÑÍCH NGHIEÂN CÖÙU
1
Chöông 2: GIÔÙI THIEÄU CHUNG VEÀ VI ÑIEÀU KHIEÅN 3
I.GIÔÙI THIEÄU
3
II.LÒCH SÖÛ PHAÙT TRIEÅN CUÛA VI ÑIEÀU KHIEÅN
3
III.KHAÛO SAÙT BOÄ VI ÑIEÀU KHIEÅN 8051/8031
4
Chöông 3: KHAÛO SAÙT IC GIAO TIEÁP NGOAÏI VI
8255A 38
Trang 11
12. Luaân vaên toát nghieäp
I.CAÁU TRUÙC PHAÀN CÖÙNG
38
II.CAÁU TRUÙC PHAÀN MEÀM
40
III.GIAO TIEÁP GIÖÕA VI XÖÛ LYÙ VÔÙI 8255A
42
Chöông 4: KHAÛO SAÙT BOÄ NHÔÙ BAÙN DAÃN 43
I.BOÄ NHÔÙ CHÆ ÑOÏC (ROM : READ ONLY MEMORY)
43
II.BOÄ NHÔÙ RAM (RANDOM ACCESS MEMORY)
46
Chöông 5: ÑO NHIEÄT ÑOÄ 48
I.HEÄ THOÁNG ÑO LÖÔØNG
48
II.CAÙC PHÖÔNG PHAÙP ÑO NHIEÄT ÑOÄ
49
Chöông 6: CHUYEÅN ÑOÅI TÖÔNG TÖÏ SANG SOÁ
51
I.KHAÙI NIEÄM CHUNG
51
II. NGUYEÂN TAÉC THÖÏC HIEÄN CHUYEÅN ÑOÅI AD
51
III.CAÙC PHÖÔNG PHAÙP CHUYEÅN ÑOÅI ADC
52
Trang 12
13. Luaân vaên toát nghieäp
Chöông 7: THIEÁT KEÁ VAØ THI COÂNG 56
I.NHIEÄM VUÏ THIEÁT KEÁ
56
II.SÔ ÑOÀ KHOÁI VAØ CHÖÙC NAÊNG TÖØNG KHOÁI
56
III.THIEÁT KEÁ VAØ PHAÂN TÍCH NGUYEÂN LÍ HOAÏT ÑOÄNG TÖØNG
KHOÁI 56
IV.SÔ ÑOÀ NGUYEÂN LÍ VAØ GIAÛI THUAÄT CHÖÔNG TRÌNH
71
V.THI COÂNG
89
CHÖÔNG KEÁT LUAÄN 83
C_PHUÏ LUÏC – TAØI LIEÄU THAM KHAÛO
85
I.PHUÏ LUÏC
85
II.TAØI LIEÄU THAM KHAÛO
Trang 13
14. Luaân vaên toát nghieäp
Chöông 1:DAÃN NHAÄP
I.ÑAËT VAÁN ÑEÀ :
Ngaøy nay vôùi söï phaùt trieån cuûa coâng nghieäp vi ñieän töû, kyõ
thuaät soá caùc heä thoáng ñieàu khieån daàn daàn ñöôïc töï ñoäng hoùa.
Vôùi nhöõng kyõ thuaät tieân tieán nhö vi xöû lí, vi maïch soá … ñöïôc öùng
duïng vaøo lænh vöïc ñieàu khieån, thì caùc heä thoáng ñieàu khieån cô khí
thoâ sô, vôùi toác ñoä xöû lí chaäm chaïp ít chính xaùc ñöôïc thay theá baèng
caùc heä thoáng ñieàu khieån töï ñoäng vôùi caùc leänh chöông trình ñaõ
ñöôïc thieát laäp tröôùc.
Trong quaù trình saûn xuaát ôû caùc nhaø maùy, xí nghieäp hieän nay,
vieäc ño vaø khoáng cheá nhieät ñoä töï ñoäng laø moät yeâu caàu heát söùc
caàn thieát vaø quan troïng. Vì neáu naém baét ñöôïc nhieät ñoä laøm vieäc
cuaû caùc heä thoáng. Daây chuyeàn saûn xuaát … giuùp ta bieát ñöôïc tình
traïng laøm vieäc cuûa c aùc yeâu caàu. Vaø coù nhöõng xöû lyù kòp thôøi
traùnh ñöôïc nhöõng hö hoûng vaø söï coá coù theå xaûy ra.
Ñeå ñaùp öùng ñöôïc yeâu caàu ño vaø khoáng cheá nhieät ñoä töï
ñoäng, thì coù nhieàu phöông phaùp ñeå thöïc hieän, nghieân cöûu khaûo
saùt vi ñieàu khieån 8051 nhoùm thöïc hieän nhaän thaáy raèng: öùng duïng
vi ñieàu khieån 8051 vaøo vieäc ño vaø khoáng cheá nhieät ñoä töï ñoäng laø
phöông phaùp toái öu nhaát. Ñoàng ñöôïc söï ñoàng yù cuûa khoa Ñieän
Tröôøng Ñaïi Hoïc Sö Phaïm Kyõ Thuaät. Nhoùm chuùng em tieán haønh
thöïc hieän ñeà taøi “Khaûo saùt vaø öùng duïng vi ñieàu khieån thieát
keá thi coâng maïch khoáng cheá nhieät ñoä phoøng” .
II.GIÔÙI HAÏN ÑEÀ TAØI :
Vôùi thôøi gian gaàn möôøi tuaàn thöïc hieän ñeà taøi, cuõng nhö trình
ñoä chuyeân moân coù haïn, chuùng em ñaõ coá gaéng heát söùc ñeå hoaøn
thaønh taäp luaän vaên naøy, nhöng chæ giaûi quyeát ñöôïc nhöõng vaán
ñeà sau :
0 0
• Thieát keá maïch ño nhieät ñoä trong daûi töø 0 C – 100 C hieån
thò soá .
Trang 14
15. Luaân vaên toát nghieäp
0
• Khoáng cheá nhieät ñoä ôû möùc 20 C .
• Vieát chöông trình (phaàn meàm) ñeå ñaùp öùng caùc yeâu caàu
treân .
• Do thôøi gian quaù haïn heïp neân chuùng em chæ thieát keá
0
moät ñaàu ño vaø chæ khoáng cheá ôû moät möùc nhieät ñoä 20 C .
III.MUÏC ÑÍCH NGHIEÂN CÖÙU :
Muïc ñích tröôùc heát khi thöïc hieän ñeà taøi naøy laø ñeå hoaøn taát
chöông trình moân hoïc ñeå ñuû ñieàu kieän ra tröôøng .
• Cuï theå khi nghieân cöùu thöïc hieän ñeà taøi laø chuùng em
muoán phaùt huy nhöõng thaønh quaû öùng duïng cuûa vi ñieàu khieån
nhaèm taïo ra nhöõng saûn phaåm, nhöõng thieát bò tieân tieán hôn, vaø
ñaït hieäu quaû saûn xuaát cao hôn.
• Maët khaùc taäp luaän vaên naøy cuõng coù theå laøm taøi lieäu
tham khaûo cho nhöõng sinh vieân khoùa sau. Giuùp hoï hieåu roõ hôn
veà nhöõng öùng duïng cuûa vi ñieàu khieån .
• Ngoøai ra quaù trình nghieân cöùu thöïc hieän ñeà taøi laø moät
cô hoäi ñeå chuùng em töï kieåm tra laïi nhöõng kieán thöùc ñaõ ñöôïc
hoïc ôû tröôøng, ñoàng thôøi phaùt huy tính saùng taïo, khaû naêng giaûi
quyeát moät vaán ñeà theo yeâu caàu ñaët ra. Vaø ñaây cuõng laø dòp
ñeå chuùng em töï khaúng ñònh mình tröôùc khi ra tröôøng ñeå tham gia
vaøo caùc hoaït ñoäng saûn xuaát cuûa xaõ hoäi.
Trang 15
16. Luaân vaên toát nghieäp
Chöông 2
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.LÒCH SÖÛ PHAÙT TRIEÅN CUÛA C AÙC BOÄ VI ÑIEÀU
KHIEÅN :
Boä vi ñieàu khieån thöïc ra, laø moät loaïi vi xöû lí trong taäp hôïp caùc
boä vi xöû lyù noùi chung. Boä vi ñieàu khieån ñöôïc phaùt trieån töø boä vi
xöû lí, töø nhöõng naêm 70 do söï phaùt trieån vaø hoaøn thieän veà coâng
ngheä vi ñieän töû döïa treân kyõ thuaät MOS (Metal-Oxide-Semiconductor) ,
möùc ñoä tích hôïp cuûa caùc linh kieän baùn daãn trong moät chip ngaøy
caøng cao.
Naêm 1971 xuaát hieän boä vi xöû lí 4 bit loaïi TMS1000 do coâng ty
texas Instruments vöøa laø nôi phaùt minh vöøa laø nhaø saûn xuaát. Nhìn
toång theå thì boä vi xöû lí chæ coù chöùa treân moät chip nhöõng chöùc
naêng caàn thieát ñeå xöû lí chöông trình theo moät trình töï, coøn taát caû
boä phaän phuï trôï khaùc caàn thieát nhö : boä nhôù döõ lieäu , boä nhôù
chöông trình , boä chueån ñoåi AID, khoái ñieàu khieån, khoái hieån thò,
ñieàu khieån maùy in, hoái ñoàng hoà vaø lòch laø nhöõng linh kieän naèm
ôû beân ngoaøi ñöôïc noái vaøo boä vi xöû lí.
Trang 16
17. Luaân vaên toát nghieäp
Maõi ñeán naêm 1976 coâng ty INTEL (Interlligen-Elictronics). Môùi cho
ra ñôøi boä vi ñieàu khieån ñôn chip ñaàu tieân treân theá giôùi vôùi teân goïi
8048. Beân caïnh boä xöû lí trung taâm 8048 coøn chöùa boä nhôù döõ lieäu,
boä nhôù chöông trình, boä ñeám vaø phaùt thôøi gian caùc coång vaøo vaø
ra Digital treân moät chip.
Caùc coâng ty khaùc cuõng laàn löôïc cho ra ñôøi caùc boä vi ñieàu
khieån 8bit töông töï nhö 8048 vaø hình thaønh hoï vi ñieàu khieån MCS-48
(Microcontroller-sustem-48).
Ñeán naêm 1980 coâng ty INTEL cho ra ñôøi theá heä thöù hai cuûa boä
vi ñieàu khieån ñôn chip vôùi teân goïi 8051. Vaø sau ñoù haøng loaït caùc vi
ñieàu khieån cuøng loaïi vôùi 8051 ra ñôøi vaø hình thaønh hoï vi ñieàu
khieån MCS-51 .
Ñeán nay hoï vi ñieàu khieån 8 bit MCS51 ñaõ coù ñeán 250 thaønh
vieân vaø haàu heát caùc coâng ty haøng daãn haøng ñaàu theá giôùi cheá
taïo. Ñöùng ñaàu laø coâng ty INTEL vaø raát nhieàu coâng ty khaùc nhö :
AMD, SIEMENS, PHILIPS, DALLAS, OKI …
Ngoaøi ra coøn coù caùc coâng ty khaùc cuõng coù nhöõng hoï vi ñieàu
khieån rieâng nhö:
Hoï 68HCOS cuûa coâng ty Motorola
Hoï ST62 cuûa coâng ty SGS-THOMSON
Hoï H8 cuûa coâng ty Hitachi
Hoï pic cuaû coâng ty Microchip
III.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 I10 8bit
- Hai boä ñònh thôøi 16bit
- Giao tieáp noái tieáp
Trang 17
18. Luaân vaên toát nghieä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
1.CAÁU TRUÙC BEÂN TRONG CUÛA 8051 / 8031 :
INT*1
INT*0
TIMER2
TIMER1
Rom T1*
PORT noái 128 byte Timer1
Ñieàu Caùc
tieàp 4K-8051 T2*
khieån ùthanh Ram Timer2
OK-8031
ngaét ghi khaùc
CPU
Taïo Ñieàu Caùc port Port
dao khieån IO noái
ñoäng bus tieáp
P0 P1 P2
EA RST PSEN ALE
P3
TXD* RXD*
Hình 2.1 : Sô Ñoà Khoái 8051 / 8031
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
Trang 18
19. Luaân vaên toát nghieäp
- Ñô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.
2.CHÖÙC NAÊNG CAÙC CHAÂN VI ÑIEÀU KHIEÅN :
Trang 19
20. Luaân vaên toát nghieäp
40
30p
19 Po.7 32
Vcc AD7
12MHz XTAL1 33
Po.6 AD6
XTAL2 Po.5 34 AD5
18
30p Po.4 35 AD4
Po.3 36 AD3
29 Po.2 37 AD2
PSEN
30 Po.1 38
8 AD1
ALE P2.7
Po.0 39
7 AD0
P2.6
31 EA 6
P2.5
9 RET 5
P2.4
RD 17 4
P2.3
WR 16 3
P2.2
T1 15 2
P2.1 28 A15
T0 14 P1.7 1
P2.0 27 A14
13 P1.6
INT1
26 A13
INT0 12 P1.5
25 A12
11 P1.4
TXD
24 A11
RXD 10 P1.3
23 A10
Vss P1.2
22 A9
P1.1
20 21 A8
P1.0
Hình 2.2 : Sô Ñoà Chaân 8051
Trang 20
21. Luaân vaên toát nghieäp
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
IO. Ñ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
Trang 21
22. Luaân vaên toát nghieäp
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
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) :
Trang 22
23. Luaân vaên toát nghieäp
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.
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.Toå chöùc boä nhôù :
8051 / 8031 coù boä nhôù theo caáu truùc Harvard : coù nhöõng vuøng
cho boä nhôù rieâng bieät cho chöông trình döõ lieäu. Nhö ñaõ noùi ôû treân,
caû chöông trình vaø döõ lieäu coù theå ôû beân trong 8051, 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 Kbytes boä nhôù chöông trình vaø 64 Kbytes boä nhôù döõ
lieäu.
Boä nhôù beân trong bao goàm ROM (8051) 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.
Trang 23
24. Luaân vaên toát nghieäp
FFFF FFFF
Boä nhôù Boä nhôù
chöông döõ lieäu
trình
FF
ñöôïc choïn ñöôïc choïn
qua PSEN qua WR
Vaø RD
00 0000 0000
Hình 2.3 : Toùm taét caùc vuøng boä nhôù cuûa 8031 / 8051
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 nhö caùc ñòa chæ boä
nhôù khaùc.
- Ngaên xeáp baân trong RAM noäi nhoû hôn so vôùi RAM ngoaøi nhö
trong caùc boä vi xöû lí khaùc.
• Chi tieát veà boä nhôù RAM treân chip :
Nhö ta ñaõ thaáy treân hình sau, RAM beân 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).
a. RAM ña duïng.
Ñòa chæ byte Ñòa chæ bit
7F
RAM ña duïng
30
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
Trang 24
25. Luaân vaên toát nghieäp
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 01 00
20
BANK 3
1F
BANK 2
18
BANK 1
17
Default register
10
Bank for RO÷R7
0F
08
07
00
Baûng toùm taét baûn baûn ñoà vuøng nhôù treân chip data 8051
Trang 25
26. Luaân vaên toát nghieäp
Ñòa chæ byte Ñòa chæ bit
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 D1 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
Not bit addressable SBUF
99
9F 9E 9D 9C 9B 9A 99 98 SCON
98
97 96 95 94 93 92 91 90 P1
90
Not bit addressable TH1
8D
Not bit addressable TH0
8C
Not bit addressable
8B
Not bit addressable TL1
8A
Not bit addressable TL0
89
TMOD
88 8F 8E 8D 8C 8B 8A 89 88 TCON
87 Not bit addressable PCON
Trang 26
27. Luaân vaên toát nghieäp
83 Not bit addressable DPH
82 Not bit addressable DPL
81 Not bit addressable SP
80 87 86 85 84 83 82 81 80 PO
Toùm taét boä nhôù döõ lieäu treân chip
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 moät buùyt 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 duøng caùch ñaùnh
ñòa chæ giaùn tieáp qua RO hay R1. Ví duï, sau khi 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 ñò hæ töùc thôøi ñeå di chuyeån giaù trò 5FH vaøo
thanh ghi R0 vaø leänh thöù hai duøng ñòa 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 :
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 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 meàm laø moät ñaëc tín
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 chi xöû lí ñ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/0 cuõng ñöôïc ñòa chæ töøng bit laøm ñôïn giaûn phaàn meàm xuaát
nhaäp töøng bit.
Trang 27
28. Luaân vaên toát nghieäp
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 caùc bit phuï
thuoäc vaøo leänh ñöôïc duøng . ví duï, ñeå ñaët 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ûa ñòa chæ naøy.
c.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 (RO ñ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 moät 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 quûa (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).
Trang 28
29. Luaân vaên toát nghieäp
4./ Caùc thanh ghi chöùc naêng ñaëc bieät:
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 1. 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 tröïc tieáp, seõ khoâng coù lôïi khi ñaët chuùng vaøo trong
RAM treân chip). Ñoù laø lyù do ñeå 8051/0831 coù nhieàu thanh ghi. Cuõng
nhö R0 ñeán R7, coù 21 thanh ghi chöùc naêng ñaëc bieät (SFR: Special
Funtion Rgister) ôû 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öø 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 thay ñoåi.
Ta thaáy raèng E0H ñoàng thôøi laø ñòa chæ byte cuûa thanh ghi tích luõy
vaø laø ñòa chæ 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û.
a. 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 choïn bank thanh ghi.
Trang 29
30. Luaân vaên toát nghieäp
00=bank 0; ñòa chæ 00H-
07H
01=bank 1: ñòa chæ 08H-
0FH
PSW.2 OV D2H 10=bank 2:ñòa chæ 10H-
PSW.1 D1H 17H
PSW.0 P D0H 11=bank 3:ñòa chæ 18H-
1FH
Côø traøn
Döï tröõ
Côø Parity chaün.
Baûng 21: Töø traïng thaùi chöông trì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 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 quûa 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 seõ AND bit 25H vôùi côø nhôù vaø
ñaët keát quûa 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 quûa
cuûa 4 bit thaáp trong khoaûng 0AH ñeán 0FH. Neáu caùc giaù trò coäng
ñöôïc 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 quûa lôùn hôn 9 trôû veà taâm töø
0÷9.
• Côø 0
Trang 30
31. Luaân vaên toát nghieäp
Côø 0 (F0)laø moät bit côø ña duïng daønh 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 (RSO 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 IFH)
ñeán thanh ghi tích luõy:
SETB RS1
SETB RSO
MOV A,R7
Khi chöông trình ñöôïc hôïp dòch caùc ñòa 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 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 quûa
cuûa noù 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 quûa lôùn hôn +127
hoaëc nhoû hôn –128 seõ set bit OV.
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 quûa 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 quûa 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
ttöøng bit baèng caùc ñòa chæ bit FOH ñeán F7H.
c. 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
Trang 31
32. Luaân vaên toát nghieäp
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õ doïc döõ lieäu vaø laøm 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,#%FH
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ó cuøng giaù trò 5FH vì SP seõ
taêng leân 60H tröôùc khi caát byte döõ leä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 quûa laø ngaên ñaàu tieân ñeå
caát döõ lieäu coù ñòa chæ 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 giöõ 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, LACALL) vaø caùc
leänh trôû veà (RET,RETI) ñeå caát vaø laáy laïi boä ñeám chöông trình.
d. 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
Trang 32
33. Luaân vaên toát nghieäp
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)
e. 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.
f. 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.
g. 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.
h. 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.
i. Caùc thanh ghi ñieàu khieån coâng suaát:
Trang 33
34. Luaân vaên toát nghieäp
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:
Bit Kyù hieäu Yù nghóa
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
6 tieáp
5 Khoâng ñònh nghóa
4 Khoâng ñònh nghóa
3 GF1 Khoâng ñònh nghóa
2 GF0 Bit côø ña duïng 1
1 PD Bit côø ña duïng 0
Giaûm coâng suaát, ñöôïc set ñeå kích
0 IDL hoaït mode giaûm coâng suaát, chæ
thoaù khi reset
Mode chôø, set ñeå kích hoaït mode
chôø, chæ thoaùt khi coù ngaét hoaëc
reset heä thoáng.
Baûng 2.2 :Thanh ghi ñieàu khieån coâng suaát (PCON)
5/. Boä nhôù ngoaøi.
8051/8031 coù khaû naêng môû roäng boä nhôù ñeán 64K boä nhôù
chöông trình vaø 64K boä nhôù döõ lieäu beân ngoaøi. Do ñoù coù theå
duøng theâm ROM vaø RAM neáu caàn.
Khi duøng boä nhôù ngoaøi, port 0 khoâng coøn laø moät port I/O
thuaàn tuùy nöõa. Noù ñöôïc hôïp keânh giöõa bus ñòa chæ (A0-A7) vaø bus
döõ lieäu (D0-D7) vôùi tín hieäu ALE ñeå choát byte thaáp cuûa ñòa chæ khi
baét ñaàu moãi chu kyø boä nhôù. Port 2 thoâng thöôøng ñöôïc duøng cho
byte cao cuûa bus ñòa chæ.
Trong nöûa ñaàu cuûa moãi chu kyø boä nhôù, byte thaáp cuûa
ñòa chæ ñöôïc caáp trong port 0 vaø ñöôïc choát baèng xung ALE. Moät IC
choát 74HC373 (hoaëc töông ñöông) seõ giöõ byte ñòa chæ thaáp trong
Trang 34
35. Luaân vaên toát nghieäp
phaàn coøn laïi cuûa chu kyø boä nhôù. Trong nöûa sau cuûa chu kyø boä
nhôù port 0 ñöôïc duøng nhö bus döõ lieäu vaø ñöôïc ñoïc hoaëc ghi tuøy
theo leänh.
a/ Truy xuaát boä nhôù chöông trình ngoaøi:
Boä nhôù chöông trình ngoaøi laø moä IC ROM ñöôïc pheùp bôûi tín
hieäu PSEn. Hình sau moâ taû caùch noái moät EPROM vaøo 8051/8031:
Port D0-D7
0
D
Q A0-A7
EA 74HC37
8051 3 EPROM
ALE G
A8-A15
Port
2 OE
Hình 2.5 Giao tieáp giöõa 8051/8031 vaø EPROM
Moät chu kyø maùy cuûa 8051/8031 coù 12 chu kyø xung nhòp. Neáu
PSEN
boä dao ñoäng treân chip ñöôïc laùi bôûi moät thaïch anh 12MHz thì chu kyø
maùy keùo daøi 1µs. Trong moät chu kyø maùy seõ coù 2 xung ALE vaø 2
byte ñöôïc ñoïc töø boä nhôù chöông trình (neáu leänh hieän haønh laø moät
M o ät c h u k y ø m a ùy
byte thì byte thöù hai seõ ñöôïc loaïi boû). Giaûn ñoà thôøi gian cuûa moät
S1 S2 S3 S4 S5 S6 S1
laàn laáy leänh ñöôïc veõ ôû hình sau:
P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2
O SC
A L E
PSEN
P o rt 2 PC H PC H
P o rt 1
PC L O pcode PC L
Trang 35
36. Luaân vaên toát nghieäp
Hình 2.6: Giaûn ñoà thôøi gian ñoïc boä nhôù chöông trình ngoaøi.
b/ Truy xuaát boä nhôù döõ lieäu ngoaøi:
Port 0
D0-D7
74HC373 RAM
8051
O D
EA
G A0-A7
ALE
A8-A15
Port 2
Hình 2.7: Giao tieáp giöõa 8051/8031 vaø RAM
RD OE
Boä nhôù döõ lieäu ngoaøi laø moät boä nhôù RAM ñöôïc cho pheùp
ghi/ñoïc baèng caùc tín heäu WR vaø RD (caùc chaânWE P3.6 vaø P3.7 thay
WR
ñoåi chöùc naêng). chæ coù moät caùch truy xuaát boä nhôù döõ lieäu ngoaøi
laø vôùi leänh MOVX duøng con troû döõ lieäu (DPTR) 16 bit hoaëc R0 vaø
R1 xem nhö thanh ghi ñòa chæ.
Trang 36
37. Luaân vaên toát nghieäp
Keát noái bus ñòa chæ vaø bus döõ lieäu giöõa RAM vaø 8051/8031
cuõng gioáng EPROM vaø do ñoù cuõng coù theå leân ñeán 64 byte boä
nhôù RAM. Ngoaøi ra, chaân RD cuûa 8051/8031 ñöôïc noái tôùi chaân cho
pheùp xuaát (OE) cuûa RAM vaø chaân WR ñöôïc noái tôùi chaân ghi (WR)
cuûa RAM.
Giaûn ñoà thôøi gian cho leänh ñoïc boä nhôù döõ lieäu ngoaøi ñöôïc
veõ treân hình sau ñoái vôùi leänh MOVX A, @DPTR:
M o ä c h u k y øm a ù
t y M o ä c h u k y øm a ù
t y
S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6
A L E
PSEN
R D
P o rt 2 PC H D PH
P o rt 0
PC L O pcode D PL D A TA
Hình 2.8: Giaûn ñoà thôøi gian cuûa leänh MOVX
Giaûn ñoà thôøi gian cho leänh ghi (MOVX @DPTR, A) cuõng töông töï
chæ khaùc ñöôøng WR seõ thay vaøo ñöôøng RD vaø döõ lieäu ñöôïc xuaát
ra treân port 0 (RD vaãn giöõ möùc cao).
6/. 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å
+5V
+5V
ñöôïc kích khi caáp ñieän duøng moät maïch R-C.
100 10UF
Trang 37 8 , 2 K
38. Luaân vaên toát nghieäp
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:
Noäi dung
Thanh ghi
Ñ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
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ä
Trang 38
39. Luaân vaên toát nghieäp
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.
7. Hoaït ñoäng cuûa boä ñònh thôøi (timer)
7.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.
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
CHÆ bit
Trang 39
40. Luaân vaên toát nghieäp
TCON Ñieàu khieån timer 88H Coù
TMOD Cheá ñoä timer 89H Khoâng
TL0 Byte thaáp cuûa 8AH Khoâng
TL1 timer 0 8BH Khoâng
TH0 Byte thaáp cuûa 8CH Khoâng
TH1 timer 1 8DH Khoâng
Byte cao cuûa timer
0
Byte cao cuûa timer
1
Baûng 2.4: Thanh ghi chöùc naêng ñaëc bieät duøng timer.
7.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)
Trang 40
41. Luaân vaên toát nghieäp
4 M0 1 Bit 0 cuûa cheá ñoä
00: cheá ñoä 0 : timer 13 bit
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
7.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
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
Trang 41
42. Luaân vaên toát nghieä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
7. 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
(5 bit) (8 bit)
Xung nhòp
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
(5 bit) (8 bit)
Xung nhòp
timer
Côø baùo traøn
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
Trang 42
43. Luaân vaên toát nghieäp
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
THx
Naïp laïi
(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).
TL1 TH1
Xung nhòp
Timer TL0 TF0
Trang 43
TH0 TF1
44. Luaân vaên toát nghieäp
Xung nhòp
Timer
Côø baùo traøn
I/12 Fosc
Côø baùo traøn
7.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
÷12
r 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
Trang 44
45. Luaân vaên toát nghieäp
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.
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.
7.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
TRx
0=leân : timer döøng
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.
7.7. Khôûi ñoäng vaø truy xuaát caùc thanh ghi timer.
Trang 45
46. Luaân vaên toát nghieäp
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.
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.
7.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
Trang 46
47. Luaân vaên toát nghieäp
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)
8. Hoaït ñoäng port noái tieáp.
8.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.
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.
Trang 47
48. Luaân vaên toát nghieäp
TXD (P3.1) RXD (P3.0)
SUBF
CLK
(Chæ ghi) Thanh ghi
Q D
dòch
CLK SBUF
Xung nhòp toác (chæ ñoïc)
Ñoä baud (thu) SBUF
Xung nhòp toác (chæ ñoïc)
Ñoä baud (thu) 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.
8.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 :
Trang 48
49. Luaân vaên toát nghieä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ä 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
Trang 49
50. Luaân vaên toát nghieäp
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:
MOV SCON,#01010010B
Khôûi ñoäng port noái tieáp cho cheá ñoä 1 (SM0/SM1=0/1), cho pheùp
boä thu (REN=1) vaø ñaët côø ngaét phaùt (TP=1) ñeå chæ boä phaùt saün
saøng hoaït ñoäng.
8.3 Khôûi ñoäng vaø truy xuaát caùc thanh ghi coång noái tieáp.
a. Cho pheùp thu:
Bit cho pheùp boä thu (REN = Receiver Enable) trong SCON phaûi
ñöôïc ñaët leân 1 baèng phaàn meàm ñeå cho pheùp thu caùc kyù töï.
Trang 50
51. Luaân vaên toát nghieäp
Thoâng thöôøng thöïc hieän vieäc naøy ôû ñaàu chöông trình khi khôûi ñoäng
coång noái tieáp, timer...Coù theå thöïc hieän vieäc naøy theo hai caùch.
Leänh :
SETB REN
Seõ ñaët REN leân 1, hoaëc leänh :
MOV SCON,#xxx1xxxxB
Seõ ñaët REN 1 vaø ñaëc hoaëc xoùa ñi caùc bit khaùc treân SCON khi
caàn (caùc x phaûi laø 0 hoaëc 2 ñeå ñaëc cheá ñoä laøm vieäc).
b. Bit döõ lieäu thöù 9:
Bit döõ lieäu thöù 9 caàn phaùt trong caùc cheá ñoä 2 vaø 3, phaûi
ñöôïc naïp vaøo trong TB8 baèng phaàn meàm. Bit döõ lieäu thöù 9 thu ñöôïc
ñaët ôû RBS. Phaàn meàm coù theå caàn hoaëc khoâng caàn bit döõ lieäu
thöù 9, phuï thuoäc vaøo caùc ñaëc tính kyõ thuaät cuûa thieát bò noái tieáp
söû duïng (bit döõ lieäu thöù 9 cuõng ñoùng vai moät troø quan troïng trong
truyeàn thoâng ña xöû lyù).
c. Theâm 1 bit parity:
Thöôøng söû duïng bit döõ lieäu thöù 9 ñeå theâm parity vaøo kyù töï.
Nhö ñaõ xeùt ôû caùc chöông tröôùc, pit P trong töø traïng thaùi chöông trình
(PSW) ñöôïc ñaët leân 1 hoaëc bò xoùa bôûi chu kyø maùy ñeå thieát laäp
kieåm tra chaün vôùi 8 bit trong thanh tích luõy.
d. Caùc côø ngaét:
Hai côø ngaét thu vaø phaùt (RI vaø TI) trong SCON ñoùng moät vai
troø quan troïng truyeàn thoâng noái tieáp duøng 8051/8031. Caû hai bit ñöôïc
ñaët leân 1 baèng phaàn cöùng, nhöng phaûi ñöôïc xoùa baèng phaàn meàm.
8.4 . Toác ñoä baud port noái tieáp.
Nhö ñaõ noùi, toác ñoä baud coá ñònh ôû caùc cheá ñoä 0 vaø 2.
Trong cheá ñoä 0 noù luoân luoân laø taàn soá dao ñoäng treân chip ñöôïc
chia cho 12 . Thoâng thöôøng thaïch anh aán ñònh taàn soá dao ñoäng treân
chip cuûa 8051/8031 nhöng÷12cuõng coù theå söû duïng nguoàn xung nhòp
khaùc. Giaû söû vôùi taàn soá dao ñoäng danh ñònh laø 12 MHz, tìm toác
ñoä baud cheá ñoä 0 laø 1 MHz.
÷64
Dao ñoäng Xung nhòp
Trang 51
÷32
52. Luaân vaên toát nghieäp
treân chip toác ñoä baud
a. Cheá ñoä 0
SMOD=0
Dao ñoäng Xung nhòp
treân chip toác ñoä baud
SMOD=1
b. Cheá ñoä 2
÷32
SMOD=0
Dao ñoäng Xung nhòp
treân chip ÷16 toác ñoä baud
SMOD=1
c. Cheá ñoä 1 vaø 3.
Hình 2.10. Caùc nguoàn taïo xung nhòp cho port noái tieáp.
Maëc nhieân, sau khi reset heä thoáng, toác ñoä baud cheá ñoä laø 2
taàn soá boä dao ñoäng chia cho 64. Toác ñoä baud cuõng aûnh höôûng bôûi
1 bit trong thanh ghi ñieàu khieån nguoàn cung caáp (PCON). Bit 7 cuûa
PCON laø bit SMOD. Ñaët bit sMOD leân moät laøm gaáp ñoâi toác ñoä baud
trong cheá ñoä 1,2 vaø 3. Trong cheá ñoä 2, toác ñoä baud coù theå bò gaáp
ñoâi töø giaù trò maëc nhieân cuûa 1/64 taàn soá dao ñoäng (SMOD=0) ñeán
1/32 taàn soá dao ñoäng (SMOD=1)
Trang 52
53. Luaân vaên toát nghieäp
Vì PCON khoâng ñöôïc ñònh ñòa chæ theo bit, neân ñeå ñaët bit
SMOD leân 1 caàn phaûi theo caùc leänh sau:
MOV A,PCON laáy giaù trò hieän thôøi cuûa PCON
SETB ACC.7 ñaët bit 7 (SMOD) leân 1
MOV PCON,A ghi giaù trò ngöôïc veà PCON
Caùc toác ñoä baud trong caùc cheá ñoä 1 vaø 3 ñöôïc xaùc ñònh
baèng toác ñoä traøn cuûa timer 1. Vì timer hoaït ñoäng ôû taàn soá töông
ñoái cao, traøn timer ñöôïc chia theâm cho 32 (hay 16 neáu SMOD=1) tröôùc
khi cung caáp xung nhòp toác ñoä baud cho port noái tieáp.
9. Hoaït ñoäng ngaét.
Ngaét laø hoaït ñoäng ngöøng taïm thôøi moät chöông trình naøy ñeå tji
haønh moät chöông trình khaùc. Caùc ngaét coù moät vai troø quan troïng
trong thieát keá vaø khaû naêng thöïc thi cuûa vi ñieàu khieån. Chuùng cho
pheùp heä thoán ñaùp öùng khoâng cuøng luùc tôùi moät coâng vieäc vaø
giaûi quyeát moät coâng vieäc ñoù trong khi moät chöông trình khaùc ñang
thöïc thi.
Moät heä thoáng ñöôïc ñieàu khieån baèng ngaét cho aûo giaùc laø
laøm nhieàu vieäc ñoàng thôøi. Dó nhieân CPU moãi laàn khoâng theå thöïc
thi moät chöông trình ñeå thöïc thi moät chöông trình khaùc, roài quay veà
chöông trình ñaàu. khi coù yeâu caàu ngaét. Chöông trình giaûi quyeát ngaét
ñöôïc goïi laû chöông trình phuïc vuï ngaét (ISR : Interrupt Sevice Reutine).
9.1 Toå chöùc ngaét.
Ôû 8051 coù 5 nguoàn ngaét:
- 2 ngaét ngoaøi
- 2 ngaét töø timer.
- 1 ngaét port noái tieáp.
Taát caû caùc ngaét seõ khoâng ñöôïc ñaët sau khi reset heä thoáng
vaø cho pheùp ngaét rieâng reõ bôûi phaàn meàm.
a. Cho pheùp vaø khoâng cho pheùp ngaét.
Moãi nguoàn ngaét ñöôïc cho pheùp hoaëc khoâng cho pheùp töøng
ngaét moät qua thanh ghi chöùc naêng ñaët bieät coá ñònh ñòa chæ bit IE
(Interrupt Enable : cho pheùp ngaét) ôû ñòa chæ A8H. Cuõng nhö caùc bit
Trang 53
54. Luaân vaên toát nghieäp
cho pheùp moãi nguoàn ngaét, coù moät bit cho pheùp hoaëc caám toaøn
boä ñöôïc xoùa ñeå caám taát caû caùc ngaét hoaëc ñöôïc ñaët leân 1 ñeå
cho pheùp taát caû caùc ngaét.
Bit Kyù hieäu Ñòa chæ bit Moâ taû (1=cho pheùp,0=caám)
IE.7 EA AFH Cho pheùp hoaëc caám toaøn
IE.6 EA AEH boä
IE.5 ET5 ADH Khoâng ñöôïc ñònh nghóa
IE.4 E5 ACH Cho pheùp ngaét töø timer 2
IE.3 ET1 ABH (8052)
IE.2 EX1 AAH Cho pheùp ngaét Port noái tieáp
IE.1 ET0 A9H Cho pheùp ngaét töø timer 1
A8H
IE.0 EX0 Cho pheùp ngaét ngoaøi 1
Cho pheùp ngaét töø timer 0
Cho pheùp ngaét ngoaøi 0
Toùm taét thanh ghi IE.
b. Öu tieân ngaét.
Moãi nguoàn ngaét ñuôïc laäp trình rieâng vaøo moät trong hai möùc öu
tieân qua thanh ghi chöùc naêng ñaëc bieät ñöôïc ñòa chæ bit Ip (Interrupt
priority : öu tieân ngaét) ôû ñòa chæ B8H.
Bit Kyù Ñòa chæ bit Moâ taû (1=möùc cao
hieäu hôn,0=möùc thaáp)
IP.7 Khoâng ñöôïc ñònh nghóa
IP.6 Khoâng ñöôïc ñònh nghóa
IP.5 PT2 BDH Öu tieân cho ngaét töø timer 2
IP.4 PS BCH (8052)
IP.3 PT1 BBH Öu tieân cho ngaét Port noái
IP.2 PX1 BAH tieáp
IP.1 PT0 B9H Öu tieân cho ngaét töø timer 1
IP.0 PX0 B8H Öu tieân cho ngaét ngoaøi
Trang 54
55. Luaân vaên toát nghieäp
Öu tieân cho ngaét töø timer 0
Öu tieân cho ngaét ngoaøi 0
Toùm taét thanh ghi IP.
Caùc ngaét öu tieân ñöôïc xoùa sau khi reset heä thoáng ñeå ñaë ttaát
caû caùc ngaét ôû möùc öu tieân thaáp hôn.
9.2 Xöû lyù ngaét.
Khi coù moät ngaén xaåy ra vaø ñöôïc CPU chaáp nhaän, chöông trình
chính bò ngaét quaõng. Nhöõng hoaït ñoäng sau xaåy ra:
- Thi haønh hoaøn chænh leänh ñang hieän haønh.
- Caùc DC vaøo ngaét xeáp.
- Traïng thaùi ngaét hieän haønh ñöôïc caát beân trong.
- Caùc ngaét ñöôïc chaën taïi möùc cuûa ngaét.
- Nap vaøp DC ñòa chæ Vector cuûa ISR.
- ISR thöïc thi.
ISR thöïc thi vaø ñaùp öùng ngaét. ISR hoaøn taát baèng leänh RET1.
Ñieàu naøy laøm laáy laïi giaù trò cuõ cuûa PC töø ngaên xeáp vaø laáy laïi
traïng thaùi ngaét cuõ. Chöông trình laïi tieáp tuïc thi haønh taïi nôi maø noù
döøng.
• Caùc Vector ngaét.
Khi chaáp nhaän ngaét, giaù trò ñöôïc naïp vaøo PC ñöôïc goïi laø
Vector ngaét. Noù laø ñòa chæ baét ñaàu cuûa ISR cho nguoàn taïo ngaét.
Caùc Vector ngaét ñöôïc cho ôû baûng sau:
Ngaét Côø Ñòa chæ Vector
Reset heä RST 0000H
thoáng IE0 0003H
Beân ngoaøi 0 TF0 000BH
Timer 0 IE1 0013H
Beân ngoaøi 1 TF1 001BH
0023H
Timer 1 TI hoaëc RI
Trang 55
56. Luaân vaên toát nghieäp
Port noái tieáp
Caùc Vector ngaét.
Vector reset heä thoáng (RST ôû ñòa chæ 0000H) noù gioáng nhö moät
ngaét. Noù ngaét chöông trình chính vaø taûi vaøo PC moät giaù trò môùi.
Khi chæ ñeán moät ngaét “côø gaây ngaét töï ñoäng bò xoùa bôûi
phaàn cöùng, tröø ra R1, T1 cho caùc ngaét coång noái tieáp. Vì coù hai
nguoàn coù theå coù cho ngaét naøy, khoâng thöïc teá ñeå CPU xoùa côø
ngaét naøy. Caùc bit phaûi ñöôïc kieåm tra trong ISR ñeå xaùc ñònh nguoàn
ngaét vaø côø taïo ngaét seõ ñöôïc xoùa baèng phaàn meàm.
9.3 Caùc ngaét cuûa 8051.
a. Caùc ngaét timer.
Caùc ngaét timer coù ñòa chæ Vector ngaét laø 000BH (timer 0) vaø
001BH (timer 1). Ngaét timer xaåy ra khi caùc thanh ghi timer (TLx ITHx)
traøn vaø set côø baùo traøn (TFx) leân 1. Caùc côø timer (TFx) khoâng bò
xoùa baèng phaàn meàm. Khi cho pheùp caùc ngaét, TFx töï ñoäng bò xoùa
baèng phaàn cöùng khi CPU chuyeån ñeán ngaét.
b. Caùc ngaét coång noái tieáp.
Ngaét coång noái tieáp xaåy ra khi hoaëc côø phaùt (TI) hoaëc côø
ngaét thu (KI) ñöôïc ñaët leân 1. Ngaét phaùt xaåy ra khi moät kyù töï ñaõ
ñöôïc nhaän xong vaø ñang ñôïi trong SBUP ñeå ñöôïc ñoïc.
Caùc ngaét coång noái tieáp khaùc vôùi caùc ngaét timer. Côø gaây ra
ngaét coång noái tieáp khoâng bò xoùa baèng phaàn cöùng khi CPU chuyeån
tôùi ngaét. Do coù hai nguoàn ngaét coång noái tieáp Ti vaø RI. Nguoàn
ngaét phaûi ñöôïc xaùc ñònh trong ISR vaø côø taïo ngaét seõ ñöôïc xoùa
baèng phaàn meàm. Caùc ngaét timer côø ngaét côø ngaét ñöôïc xoùa baèng
phaàn cöùng khi CPU höôùng tôùi ISR.
c. Caùc ngaét ngoaøi.
- Caùc ngaét ngoaøi xaåy ra khi coù moät möùc thaáp hoaëc caïnh xuoáng
treân chaân INT0 hoaëc INT1 cuûa vi ñieàu khieån. Ñaây laø chöùc naêng
chuyeån ñoåi cuûa caùc bit Port 3.(Port 3.2 vaø Port 3.3).
Caùc côø taïo ngaét naøy laø caùc bit IE0 vaù IE1 trong TCON. Khi quyeàn
ñieàu khieån ñaõ chuyeån ñeán ISR, côø taïo ra ngaét chæ ñöôïc xoùa neáu
ngaét ñöôïc tích cöïc baèng caïnh xuoáng. Neáu ngaét ñöôïc tích cöïc theo
Trang 56
57. Luaân vaên toát nghieäp
möùc, thì nguoàn yeâu caàu ngaét beân ngoaøi seõ ñieàu khieån möùc cuûa
côø thay cho phaàn cöùng.
Söï löïa choïn ngaét tích cöïc möùc thaáp hay tích cöïc caïnh xuoáng
ñöôïc laäp trình qua caùc bit IT0 vaø IT1 trong TCON. Neáu IT1 = 0, ngaét
ngoaøi 1 ñöôïc taùc ñoäng baèng muùc thaáp ôû chaân IT1. Neáu IT1 = 1
ngaét ngoaøi 1 seõ ñöôïc taùc ñoäng baèng caïnh xuoáng. trong cheá ñoä
naøy, neáu caùc maãu lieân tieáp treân chaân INT1 chæ möùc cao trong
moät chu kyø vaø chæ möùc thaáp trong chu kyø keá, côø yeâu caàu ngaét
IE1 trong TCON ñöôïc ñaët leân 1, roài bit IEÙ yeâu caàu ngaét.
Neáu ngaét ngoaøi ñöôïc taùc ñoäng baèng caïnh xuoáng thì nguoàn
beân ngoaøi phaûi giöõ chaân taùc ñoäng ôû möùc cao toái thieåu moät chu
kyø vaø giöõ noù ôû möùc thaáp theâm moät chu kyø nöõa ñeå ñaûm baûo
phaùt hieän ñöôïc caïnh xuoáng. Neáu ngaét ngoaøi ñöôïc taùc ñoäng theo
möùc thì nguoàn beân ngoaøi phaûi giöõ tín hieäu yeâu caàu taùc ñoäng cho
ñeán khi ngaét ñöôïc yeâu caàu ñöôïc thaät söï taïo ra vaø khoâng taùc ñoäng
yeâu caàu ngaét tröôùc khi ISR ñöôïc hoaøn taát . Neáu khoâng moät ngaét
khaùc seõ ñöôïc laëp laïi.
10. Taäp leänh cuûa 8051/8031.
Taäp leänh 8051/8031 coù 255 leänh goàm 139 leänh 1 byte, 92 leänh
2 byte vaø 24 leänh 3 byte.
10.1. Caùc cheá ñoä ñaùnh ñòa chæ: trong taäp leänh coù 8 cheá
ñoä ñaùnh ñòa chæ:
a. Thanh ghi ñòa ghi:
8051/8031 coù 4 bank thanh ghi, moãi bank coù 8 thanh ghi ñ1nh soá
töø R0 ñeán R7. Taïi moãi thôøi ñieåm chæ coù moät bank thanh ghi ñöôïc
tích cöïc. Muoán choïn bank thanh ghi naøo ta chæ caàn gaùn caùc bit nhò
phaân thích hôïp vaøo RSI (PSW.4) vaø RS0(PSW.3) trong thanh ghi traïng
thaùi chöông trình (PSW).
M a õ l e än h n n n
Ñòa chæ thanh ghi.
Trang 57
58. Luaân vaên toát nghieäp
Ngoaøi ra, moät soá thanh ghi ñaëc bieät nhö thanh ghi tích luõy, con troû
döõ lieäu.. cuõng ñöôïc xaùc ñònh trong caùc leänh neân khoâng caàn caùc
bit ñòa chæ. Trong caùc leänh naøy thanh ghi tích luõy ñöôïc xaùc ñònh laø
“A”, con troû döõ lieäu laø “DPTR”, thanh ghi ñeám chöông trình laø “PC”, côø
nhôù laø “C”, caëp thanh ghi tích luõy B laø “AB”.
b. Ñòa chæ tröïc tieáp.
Trong cheá ñoä naøy, caùc thanh ghi beân trong 8051/8031 ñöôïc ñaùnh ñòa
chæ tröïc tieáp baèng 8 bit ñòa chæ naèm trong byte thöù hai cuûa maõ
leänh.
M a õ l e än h Ñ òa c h æ t r ö ïc t i e áp
Ñòa chæ tröïc tieáp.
Duø vaäy, trình hôïp dòch cho pheùp goïi teân caùc thanh ghi chöùc naêng
ñaëc bieät (coù ñòa chæ tröïc tieáp töø 80H ñeán FFH) ví duï :P0 cho port 0,
TMOD cho thanh ghi cheá ñoä timer...
c. Ñòa chæ giaùn tieáp.
R0 vaø R1 ñöôïc duøng ñeå chöùa ñòa chæ oâ nhôù maø leänh taùc ñoäng
ñeán. ngöôøi ta quy öôùc duøng daáu @ tröôùc R0 hoaëc R1.
M a õ l e än h i
Ñòa chæ giaùn tieáp.
d. Ñòa chæ töùc thôøi:
Ngöôøi ta duøng # tröôùc caùc toaùn haïng töùc thôøi. Caùc toaùn haïng ñoù
coù theå laø moät haèng soá, moät kyù soá hay moät bieåu thöùc toaùn
hoïc... Tröôøng hôïp dòch seõ töï ñoäng tính toaùn vaø thay theá döõ lieäu
tröïc tieáp vaøo maõ leänh.
M a õ l e än h D ö l i e äu t ö ùc t h ô øi
Trang 58
59. Luaân vaên toát nghieäp
Ñòa chæ töùc thôøi.
e. Ñòa chæ töông ñoái:
Ñòa chæ töông ñoái ñöôïc duøng trong caùc leänh nhaûy 8051/8031
duøng giaù trò 8 bit coù daáu ñeå coäng theâm vaøo thanh ghi ñeám chöông
trình (PC). Taàm nhaûy cuûa leänh naøy trong khoaûng töø –128 ñeán 127 oâ
nhôù. Tröôùc khi coäng , thanh ghi PC seõ taêng ñeán ñòa chæ theo sau
leänh nhaûy roài tính toaùn ñòa chæ offset caàn thieát ñeå nhaûy ñeán ñòa
chæ yeâu caàu. Nhö vaäy ñòa chæ môùi laø ñòa chæ töông ñoái so vôùi
leänh keá tieáp chöù khoâng phaûi laø baûn thaân leänh nhaûy. Thöôøng
leänh naøy coù lieân quan ñeán nhaõn ñöôïc ñònh nghóa tröôùc.
M a õ l e än h O f f s e t t ö ô n g ñ o ái
Ñòa chæ töông ñoái.
f. Ñòa chæ tuyeät ñoái:
Ñòa chæ tuyeät ñoái chæ duøng trong caùc leänh ACALL vaø JIMP. Caùc
leänh 2 byte naøy duøng ñeå reõ nhaùnh vaøo moät trang 2 Kbyte cuûa boä
nhôù tröông trình baèng caùch caáp 11 bit ñòa chæ thaáp (A0-A10) ñeå xaùc
ñònh ñòa chæ ñích trong trang maõ. Coøn 5 bit cao cuûa ñòa chæ ñích (A11-
A15) chính laø 5 bit cao hieän haønh trong thanh ghi ñeám chöông trình. Vì
vaäy ñòa chæ cuûa leänh theo sau leänh reõ nhaùnh vaø ñòa chæ ñích cuûa
leänh reõ nhaùnh vaø ñòa chæ ñích cuûa leänh reõ nhaùnh caàn phaûi cuøng
trang maõ 2 Kbyte (coù cuøng 5 bit ñòa chæ cao).
A15 A11 A10 A0
xaùc ñònh trang maõxaùc ñònh ñòa cchæ trong trang maõ
A 1 0 -A 8 M aõ O f f s e t t ö ô n g ñ o ái
Trang 59