Trang 1
Âäö aïn täút nghiãûp
CHÖÔNG 1:
TOÅNG QUAN.
1.1. GIÔÙI THIEÄU:
Ngaøy nay vôùi söï phaùt trieån cuûa khoa hoïc kyõ thuaät, ñaëc bieät trong ngaønh
ñieän töû vôùi nhöõng böôùc tieán vöôït baäc veà lónh vöïc vi xöû lyù vaø caùc vi maïch soá... ñaõ
thöïc söï mang laïi nhöõng hieäu quûa chính xaùc vaø goïn nheï trong quaù trình ñieàu
khieån, saûn xuaát. Do ñoù vieäc cheá taïo robot ñeå phuïc vuï cho con ngöôøi trong lónh
vöïc saûn xuaát ñoái vôùi chuùng ta khoâng coøn laø vaán ñeà quaù xa vôøi. Taäp ñoà aùn naøy
trình baøy nhöõng nghieân cöùu vaø thieát keá moät chieác xe ñöôïc ñieàu khieån bôûi chip vi
ñieàu khieån 8051 ñeå coù theå di chuyeån trong caùc nhaø xöôûng, xí nghieäp vaø thöïc
hieän moät coâng vieäc naøo ñoù thay cho con ngöôøi.
1.2. GIÔÙI HAÏN ÑEÀ TAØI :
Vôùi thôøi gian thöïc hieän ñeà taøi, cuõng nhö trình ñoä chuyeân moân coù haïn, 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 :
- Xe di chuyeån theo nhöõng loä trình ñònh tröôùc baèng caùch keõ saün nhöõng
ñöôøng vaïch saùng döôùi saøn coù maøu toái.
- Xe hoaït ñoäng trong khoaûng thôøi gian töø 0 ñeán 99 phuùt.
- Taïi moãi ñieåm döøng xe chæ baät ñeøn baùo hieäu thay vì phaûi laøm moät coâng
vieäc töông öùng.
1.3. 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, thieát bò tieân
tieán vaø ñaït hieäu quaû cao trong saûn xuaát.
Ngoaøi 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.
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
Trang 2
Âäö aïn täút nghiãûp
1.4. KHAÙI QUAÙT VEÀ ÑEÀ TAØI:
1.4.1. Baøn phím vaø boä phaän hieån thò:
LED 1
LED 2
1
Go/Stop
2
Hình 1.1: Moâ taû baøn phím vaø boä phaän hieån thò.
Boä phaän hieån thò goàm hai led 7 ñoaïn, hieån thò tín hieäu stop/saün saøng nhaän
döõ lieäu vaø thôøi gian maø xe phaûi vaän haønh trong suoát quaù trình vaän haønh cuûa noù.
Baøn phím goàm coù ba phím: phím 1 vaø 2 duøng ñeå nhaäp thôøi gian vaän haønh
cuûa xe, thôøi gian ñöôïc nhaäp baèng caùch aán phím 1 ñeå nhaäp chöõ soá haøng chuïc,
phím 2 ñeå nhaäp chöõ soá haøng ñôn vò, töông öùng vôùi moãi laàn aán phím 1 (hoaëc 2)
chöõ soá haøng chuïc (hoaëc haøng ñôn vò) seõ taêng leân 1; phím Go/Stop ñöôïc duøng ñeå
kích khôûi xe hoaït ñoäng hoaëc ngöøng hoaït ñoäng cuûa xe khi noù ñang chuyeån ñoäng.
1.4.2. Quaù trình vaän haønh cuûa xe:
Xe seõ di chuyeån theo loä trình ñònh saün trong khoaûng thôøi gian nhaát ñònh
baèng caùch doø nhöõng ñöôøng vaïch traéng ñöôïc keû saün treân saøn coù maøu toái nhôø boä
phaän caûm bieán ñaët döôùi xe, thôøi gian vaän haønh cuûa xe ñöôïc nhaäp vaøo töø baøn
phím vaø ñöôïc löu vaøo moät byte döõ lieäu. Quaù trình hoaït ñoäâng cuûa xe ñöôïc moâ taû
nhö hình sau:
2
1
4
3
5
6
1
2
3
4,5
6
7
:
:
:
:
:
:
7
Xe.
Baùnh xe ñöôïc keùo bôûi motor 2.
Baùnh xe ñöôïc keùo bôûi motor 3.
Boä phaän caûm bieán ñaët döôùi xe.
Vaïch maøu traéng ñöôïc keû saün döôùi saøn coù maøu toái.
Tín hieäu döøng xe treân ñöôøng di chuyeån.
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
Trang 3
Âäö aïn täút nghiãûp
Hình 1.2: Moâ taû quaù trình chuyeån ñoäng cuûa xe.
Nguyeân lyù hoaït ñoäng cuûa xe:
Sau khi thôøi gian vaän haønh (tính baèng phuùt) ñöôïc nhaäp vaøo töø baøn phím,
ñeå kích khôûi cho xe hoaït ñoäng ta aán phím Go/Stop. Luùc naøy , b it traïn g th aùi “R u n ”
ñöôïc thieát laäp, 8051 seõ ñoïc byte döõ lieäu coù chöùa thôøi gian vaän haønh ñeå bieát thôøi
gian hoaït ñoäng cuûa xe, sau ñoù ñieàu khieån hai motor keùo hai baùnh xe (2) vaø (3) ôû
hai beân thaønh xe quay, xe seõ di chuyeån veà phía tröôùc. Ñoàng thôøi boä phaän caûm
bieán (4) vaø (5) ôû döôùi xe cuõng hoaït ñoäng. Giaû söû xe chaïy leäch khoûi vaïch traéng vaø
boä phaän caûm bieán (4) ñang ôû phía treân vaïch traéng thì boä phaän caûm bieán naøy seõ
gôûi tín hieäu thoâng baùo veà cho chip 8051, ñeå töø ñoù ñieàu khieån cho motor keùo baùnh
xe (3) quay voùi toác ñoä nhanh hôn ñoàng thôøi giaûm toác ñoä quay cuûa baùnh xe (2)
nhaèm laøm cho xe tieáp tuïc chuyeån ñoäng ñuùng höôùng doïc theo vaïch traéng ñaõ keû
döôùi saøn. Nhôø ñaëc tính naøy maø ta coù theå cho xe chuyeån ñoäng thaúng, quay phaûi
hay traùi tuyø yù baèng caùch keû leân saøn nhöõng ñöôøng vaïch traéng theo loä trình ñònh
tröôùc.
Ñoàng thôøi trong quaù trình chuyeån ñoäng cuûa xe, boä hieån thò led 7 ñoaïn seõ
hieån thò thôøi gian coøn laïi maø xe phaûi hoaït ñoäng theo töøng phuùt cho ñeán khi heát
thôøi gian thì hieån thò tín hieäu stop vaø saün saøng ñeå nhaän döõ lieäu cho quaù trình vaân
haønh tieáp theo.
Trong quaù trình vaän haønh cuûa xe, neáu gaëp phaûi tín hieäu döøng treân ñöôøng
ñi, tín hieäu naøy laø moät vaïch traéng ñöôïc keõ döôùi saøn, thì xe seõ döøng laïi trong moät
khoaûng thôøi gian ñoàng thôøi baät ñeøn baùo hieäu, öùng vôùi coâng vieäc maø xe phaûi laøm
taïi moãi ñieåm döøng, sau ñoù vöôït qua tín hieäu döøng naøy vaø tieáp tuïc di chuyeån nhö
treân.
Ngoaøi ra, neáu xe ñang hoaït ñoäng maø ta aán nuùt Go/Stop thì xe seõ döøng laïi
vaø boä hieån thò tín hieäu stop.
Trong quaù trình thieát keá vaø thi coâng maïch coù söû duïng moät soá vi maïch nhö:
chip vi ñieàu khieån 8051, 8255A, EPROM 2764, RAM 6264, 74LS138, MAX232
... Caùc vi maïch naøy seõ ñöôïc khaûo saùt roõ trong caùc chöông keá tieáp.
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
Trang 4
Âäö aïn täút nghiãûp
CHÖÔNG 2: TOÅNG QUAN VEÀ HOÏ VI ÑIEÀU KHIEÅN MCS-51.
2.1. CAÁU TAÏO VI ÑIEÀU KHIEÅN 8051:
2.1.1. Giôùi thieäu hoï MSC-51:
MCS-51 laø hoï vi ñieàu khieån cuûa haõng Intel. Caùc IC tieâu bieåu cho hoï MSC51 laø chip 8051, 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 heä thoáng. Theo caùc 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ù.
Ñaëc ñieåm vaø chöùc naêng hoaït ñoäng cuûa caùc IC hoï MSC-51 hoaøn toaøn töông
töï nhö nhau. ÔÛ ñaây giôùi thieäu chip 8051 coù caùc ñaëc tröng ñöôïc toùm taét nhö sau:
- 4 kbyte ROM.
- 128 byte RAM.
- 4 port xuaát nhaäp (I/0 port) 8-bit.
- Hai boä ñònh thôøi 16 bit.
- Maïch giao tieáp noái tieáp.
- 64KB khoâng gian boä nhôù chöông trình môû roäng
- 64 KB khoâng gian boä nhôù döõ lieäu môû roäng
- Moät boä xöû lí bit (thao taùc treân caùc bit ñôn)
- 210 vò trí nhôù ñöôïc ñònh ñòa chæ, moãi vò trí 1 bit.
- Nhaân / chia trong 4s.
Cuøng hoï vôùi 8051 coù moät soá vi ñieàu khieån khaùc. Veà cô baûn chuùng ñeàu
gioáng nhau, chuùng chæ khaùc nhau ôû vuøng nhôù noäi bao goàm vuøng nhôù maõ leänh,
vuøng nhôù döõ lieäu vaø soá boä ñònh thôøi. Söï khaùc nhau ñoù ñöôïc moâ taû baèng baûng sau
ñaây:
Vi ñieàu khieån
Vuøng maõ leänh noäi Vuøng döõ lieäu noäi
Soá boä ñònh thôøi
8051
4K ROM
128 bytes
2
8031
0K
128 bytes
2
8751
4K EPROM
128 bytes
2
8052
8K ROM
256 bytes
3
8032
0K
256 bytes
3
8732
4K EPROM
256 bytes
3
8752
8K EPROM
256 bytes
3
Baûng 2.1: So saùnh caùc IC cuûa hoï Msc-51.
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
Trang 5
Âäö aïn täút nghiãûp
2.1.1. Caáu truùc beân trong vaø sô ñoà chaân cuûa 8051:
a. Caáu truùc beân trong:
INT1*
INT0*
TIMER 2
TIMER 1
TIMER 0
PORT noái tieáp
Ñieàu
khieån ngaét
T2E X*
ROM
128 bytes
RAM
0K-8031/8032
4K-8051
8032/ 8052
8K-8052
128 byte
RAM
Caùc thanh
ghi khaùc
Timer 2
T2*
8032/ 8052
Timer 1
T1*
Timer 0
T0*
CPU
Maïch dao
ñoäng
Ñieàu khieån
bus
EA
RST
Caùc port I/O
ALE
PSEN
P0 P1
P2
P3
Port noái tieáp
TXD* RXD*
}
Ñòa chæ/döõ lieäu
*Alternate pin assignmentsfor P1 and P3
Hình 2.1 : Sô ñoà khoái cuûa chip 8051.
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
Trang 6
Âäö aïn täút nghiãûp
b. Sô ñoà chaân 8051:
30p
40
19
12MHz
30p
RD\
WR\
T1
T0
INT1
INT0
TXD
RXD
18
Vcc
Po.7
Po.6
XTAL1
Po.5
XTAL2
Po.4
Po.3
Po.2
Po.1
8051 Po.0
29
PSEN
30
ALE
31
EA
9
RST
17
16
15
14
13
12
11
10
Vss
32
33
34
35
36
37
38
39
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
8
7
6
5
4
3
2
1
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
28
27
26
25
24
23
22
21
AD7
AD6
AD5
AD4
AD3
AD2
AD1
AD0
A15
A14
A13
A12
A11
A10
A9
A8
20
Hình 2.2 : Sô ñoà chaân cuûa 8051.
Chöùc naêng caùc chaân cuûa 8051:
8051 coù taát caû 40 chaân coù chöùc naêng nhö caùc ñöôøng xuaát nhaäp. Trong ñoù
coù 24 chaân coù taùc duïng keùp (coù nghóa 1 chaân coù 2 chöùc naên g), moãi ñöôøng coù theå
hoaït ñoäng nhö ñöôøng xuaát nhaäp hoaëc nhö ñöôøng ñieàu khieån hoaëc laø thaønh phaàn
cuûa caùc bus döõ lieäu vaø bus ñòa chæ.
- Port 0:
Port 0 laø port coù 2 chöùc naêng ôû caùc chaân töø 32 ñeán 39 treân 8051. Trong caùc
thieát keá côõ nhoû khoâng duøng boä nhôù môû roäng noù coù chöùc naêng nhö caùc ñöôøng I/O.
Ñoái vôùi caùc thieát keá côõ lôùn coù boä nhôù môû roäng, noù trôû thaønh bus ñòa chæ vaø bus döõ
lieäu ña hôïp (byte thaáp cuûa bus ñòa chæ neáu laø ñòa chæ).
- Port 1:
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
Âäö aïn täút nghiãûp
Trang 7
Port 1 laø port I/O treân caùc chaân töø 1 ñeán 8 treân 8051. Caùc chaân ñöôïc kyù
hieäu P1.0, P1.1, P1.2, ... P1.7 coù theå duøng cho giao tieáp vôùi caùc thieát bò ngoaøi
neáu caàn. Port 1 khoâng coù chöùc naêng khaùc, vì vaäy chuùng chæ ñöôïc duøng cho giao
tieáp vôùi caùc thieát bò beân ngoaøi.
- Port 2:
Port 2 laø 1 port coù taùc duïng keùp treân caùc chaân töø 21 ñeán 28 treân 8051,
ñöôïc duøng nhö caùc ñöôøng xuaát/nhaäp hoaëc laø byte cao cuûa bus ñòa chæ 16-bit ñoái
vôùi caùc thieát keá duøng boä nhôù chöông trình ngoaøi hoaëc caùc thieát keá coù nhieàu hôn
256 bytes boä nhôù döõ lieäu ngoaøi.
- Port 3:
Port 3 laø port coù taùc duïng keùp treân caùc chaân töø 10 ñeán 17 treân 8051. Khi
khoâng hoaït ñoäng xuaát/nhaäp, caùc chaân cuûa port naøy coù nhieàu chöùc naêng rieâng,
moãi chaân coù chöùc naêng rieâng lieân quan ñeán caùc ñaëc tröng cuï theå cuûa 8051 nhö ôû
baûng sau:
Bit
Teân
Chöùc naêng chuyeån ñoåi
P3.0
RxD
Ngoõ vaøo döõ lieäu noái tieáp.
P3.1
TxD
Ngoõ xuaát döõ lieäu noái tieáp.
P3.2
INT0\
Ngoõ vaøo ngaét cöùng thöù 0
P3.3
INT1\
Ngoõ vaøo ngaét cöùng thöù 1
P3.4
T0
Ngoõ vaøo cuûaTIMER/COUNTER thöù 0.
P3.5
T1
Ngoõ vaøo cuûaTIMER/COUNTER thöù 1.
P3.6
WR\
Tín hieäu ghi döõ lieäu leân boä nhôù ngoaøi
P3.7
RD\
Tín hieäu ñoïc boä nhôù döõ lieäu ngoaøi.
Baûng 1.2: Chöùc naêng cuûa caùc chaân cuûa port 3.
- Chaân cho pheùp boä nhôù chöông trình PSEN\ (Program store enable):
Tín hieäu PSEN\ laø tín hieäu ngoõ ra ôû chaân 29 coù taùc duïng cho pheùp truy
xuaát boä nhôù chöông trình môû roäng thöôøng ñöôïc noái ñeán chaân OE\ (output enable)
cuûa EPROM cho pheùp ñoïc caùc byte maõ leänh.
Tín hieäu PSEN\ ôû möùc thaáp trong thôøi gian Microcontroller 8051 tìm naïp
leänh. Caùc maõ leänh cuûa chöông trình ñöôïc ñoïc töø EPROM qua bus döõ lieäu vaø
ñöôïc choát vaøo thanh ghi leänh IR beân trong 8051 ñeå giaûi maõ leänh. Khi 8051 thi
haønh chöông trình trong EPROM noäi PSEN\ seõ ôû möùc logic 1.
- Chaân cho pheùp choát ñòa chæ ALE (Address Latch Enable):
Khi 8051 truy xuaát boä nhôù beân ngoaøi, port 0 coù chöùc naêng laø bus ñòa chæ
vaø bus döõ lieäu ña hôïp do ñoù phaûi taùch caùc ñöôøng döõ lieäu vaø ñòa chæ. Tín hieäu ra
ALE ôû chaân thöù 30 duøng laøm tín hieäu ñieàu khieån ñeå giaûi ña hôïp caùc ñöôøng ñòa
chæ vaø döõ lieäu. Khi port 0 ñöôïc söû duïng laøm bus ñòa chæ/döõ lieäu ña hôïp, chaân ALE
xuaát tín hieäu ñeå choát ñòa chæ vaøo moät thanh ghi ngoaøi trong suoát ½ ñaàu cuûa chu
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
Âäö aïn täút nghiãûp
Trang 8
kyø boä nhôù. Sau khi ñieàu naøy ñaõ ñöôïc thöïc hieän, caùc chaân cuûa port 0 seõ xuaát nhaäp
döõ lieäu hôïp leä trong suoát ½ thöù 2 cuûa chu kyø boä nhôù.
Tín hieäu ALE coù taàn soá baèng 1/6 laàn taàn soá dao ñoäng treân chip vaø coù theå
ñöôïc duøng laøm tín hieäu clock cho caùc phaàn khaùc cuûa heä thoáng. Ngoaïi leä duy nhaát
laø trong thôøi gian thöïc thi leänh MOVX, moät xung ALE seõ bò boû qua. Chaân ALE
ñöôïc duøng laøm ngoõ vaøo xung laäp trình cho EPROM treân chip ñoái vôùi caùc phieân
baûn cuûa 8051 coù EPROM naøy.
- Chaân truy xuaát ngoaøi EA\(External Access):
Tín hieäu vaøo EA\ ôû chaân 31 coù theå ôû möùc logic1 (5v) hoaëc möùc logic 0
(GND). Neáu ôû möùc 1, 8051 thi haønh chöông trình trong ROM noäi (chöông trình
nhoû hôn 4 K). Neáu ôû möùc 0 (vaø chaân PSEN\ cuõng ôû logic 0), 8051 seõ thi haønh
chöông trình töø boä nhôù môû roäng. Chaân EA\ ñöôïc laáy laøm chaân caáp nguoàn 21V
khi laäp trình cho EPROM trong 8051.
- Ngoõ tín hieäu RST (Reset) :
Ngoõ vaøo RST ôû chaân 9 laø ngoõ vaøo Reset cuûa 8051. Khi ngoõ vaøo tín hieäu
naøy ñöa leân cao ít nhaát laø 2 chu kyø maùy, caùc thanh ghi beân trong ñöôïc naïp
nhöõng giaù trò thích hôïp ñeå khôûi ñoäng heä thoáng. Khi caáp ñieän maïch töï ñoäng Reset.
- Caùc ngoõ vaøo boä dao ñoäng XTAL1, XTAL2:
Maïch dao ñoäng beân trong chip 8051 ñöôïc keát noái vôùi thaïch anh beân ngoaøi
ôû hai chaân XTAL1 vaø XTAL2 (chaân 18 vaø 19). Caùc tuï oån ñònh cuõng ñöôïc yeâu
caàu nhö treân hình veõ trong sô ñoà. Taàn soá thaïch anh thöôøng söû duïng cho 8051 laø
12Mhz.
- Nguoàn cung caáp
Chip 8051 vaän haønh vôùi nguoàn ñôn +5V. Chaân 40 cuûa chip 8051 ñöôïc noái
leân nguoàn 5V (VCC) vaø chaân 20 ñöôïc noái vôùi mass (VSS).
c. Caáu truùc coång xuaát nhaäp:
Maïch beân trong cuûa moät chaân port moâ taû ngaén goïn trong hình 1.3. Vieäc
ghi ñeán moät chaân cuûa coång seõ naïp döõ lieäu vaøo boä choát cuûa port. Ngoõ ra Q cuûa boä
choát ñieàu khieån moät transitor tröôøng vaø transistor naøy noái vôùi chaân cuûa coång.
Khaû naêng fanout cuûa caùc port 1, 2 vaø 3 laø 4 taûi vi maïchTTL loaïi Schottky coâng
suaát thaáp (LS), coøn cuûa port 0 laø 8 taûi loaïi LS. Löu yù laø ñieän trôû keùo leân seõ khoâng
coù ôû port 0 (tröø khi port naøy laøm nhieäm vuï cuûa bus ñòa chæ/döõ lieäu ña hôïp), do
vaäy moät ñieän trôû keùo leân beân ngoaøi phaûi ñöôïc caàn ñeán.
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
Trang 9
Âäö aïn täút nghiãûp
Bus noäi cuûa 8051
Ñoïc
choát
D
Ghi
choát
Q
Vcc
Ñoïc
chaân
Chaân
Port
Choát
Port
Hình 2.3 Sô ñoà maïch beân trong cuûa caùc port xuaát nhaäp.
Vieäc ñoïc choát ñöôïc phaân bieät laøm hai, ñoù laø ñoïc boä choát vaø ñoïc chaân port.
Söï phaân bieät naøy nhaèm choáng tröôøng hôïp chaäp maïch do quaù taûi gaây neân. Leänh
ñoïc moät bit coång seõ ñoïc chaân cuûa coång. Trong tröôøng hôïp naøy, choát phaûi ñöôïc
giöõ ôû möùc cao, neáu khoâng FET seõ ñöôïc kích baûo hoaø vaø ngoõ ra xuoáng möùc thaáp.
Taát caû caùc choát cuûa port ñeàu ñöôïc set khi reset heä thoáng. Nhö vaäy caùc chaân choát
ñeàu ñöôïc duøng nhö ngoõ vaøo maø khoâng caàn phaûi set choát. Tuy nhieân, neáu ñaõ xoùa
choát khoâng theå ñoïc döõ lieäu ñuùng töø chaân port tröø khi set choát trôû laïi.
d. Toå chöùc boä nhôù:
8051 coù nhöõng vuøng boä nhôù rieâng bieät cho chöông trình vaø döõ lieäu. Caû hai
boä nhôù chöông trình vaø döõ lieäu coù theå chöùa beân trong 8051,tuy nhieân ta coù theå
môû roäng boä nhôù chöông trình vaø boä nhôù döõ lieäu baèng caùch söû duïng caùc chip nhôù
beân ngoaøi vôùi dung löôïng toái ña laø 64K cho boä nhôù chöông trình vaø 64K cho boä
nhôù döõ lieäu.
Boä nhôù noäi trong chip 8051 bao goàm EPROM vaø RAM. RAM trong 8051 bao
goàm vuøng RAM ña chöùc naêng, vuøng RAM vôùi töøng bit ñöôïc ñònh ñòa chæ, caùc daõy
thanh ghi vaø caùc thanh ghi chöùc naêng ñaëc bieät SFR. 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 ñònh ñòa chæ theo kieåu aùnh
xaï boä nhôù vaø ñöôïc truy xuaát nhö moät vò trí nhôù trong boä nhôù.
- Ngaên xeáp thöôøng truù trong Ram treân chip thay vì ôû trong Ram ngoaøi nhö
ñoái vôùi caùc boä vi xöû lyù khaùc.
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
Trang 10
Âäö aïn täút nghiãûp
FFFF
FFFF
Boä nhôù
chöông trình
Boä nhôù
döõ lieäu
Ñöôïc cho
pheùp bôûi
PSEN
Ñöôïc cho
pheùp bôûi
RD & WR
FF
0000
00
0000
Boä nhôù
treân chip
Boä nhôù
ngoaøi
Hình 2.4: Toùm taét caùc vuøng nhôù cuûa chip 8031(khoâng coù ROM noäi).
Nhö ta ñaõ thaáy ôû hình veõ treân RAM beân trong 8051 ñöôïc phaân chia nhö
sau:
-
Caùc bank thanh ghi coù ñòa chæ töø 00H ñeán 1FH.
RAM ñòa chæ hoùa töøng bit coù ñòa chæ töø 20H ñeán 2FH.
RAM ña duïng töø 30H ñeán 7FH.
Caùc thanh ghi chöùc naêng ñaëc bieät töø 80H ñeán FFH.
d.1. Vuøng RAM ña muïc ñích:
Ñòa chæ
byte
ñòa chæ
byte
ñòa chæ bit
7F
FF
F0
ñòa chæ bit
F7 F6 F5 F4 F3 F2 F1 F0 B
RAM ña duïng
E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC
D0 D7 D6 D5 D4 D D2 D1 D0 PSW
3
30
2F
2E
2D
2C
2B
2A
29
28
B8
7F
77
6F
67
5F
57
4F
47
7E
76
6E
66
5E
56
4E
46
7D
75
6D
65
5D
55
4D
45
7C
74
6C
64
5C
54
4C
44
7B
73
6B
63
5B
53
4B
43
G.v.h.d : tháöy Lã Xæïng
7A
72
6A
62
5A
52
4A
42
79
71
69
61
59
51
49
41
78
70
68
60
58
50
48
40
B0
-
99
- BC BB BA B9 B8 IP
B7 B6 B5 B4 B3 B2 B1 B0 P.3
A8 AF
A0
-
AC AB AA A9 A8 IE
A7 A6 A5 A4 A3 A2 A1 A0 P2
khoâng ñöôïc ñòa chæ hoaù bit
SBUF
S.v.t.h : Tráön Âçnh Khoa
Trang 11
Âäö aïn täút nghiãûp
27
26
25
24
23
22
21
20
1F
18
17
10
0F
08
07
00
3F
37
2F
27
1F
17
0F
07
3E
36
2E
26
1E
16
0E
06
3D
35
2D
25
1D
15
0D
05
3C 3B
34 33
2C 2B
24 23
1C 1B
14 13
0C 0B
04 03
Bank 3
3A
32
2A
22
1A
12
0A
02
39
31
29
21
19
11
09
01
38
30
28
20
18
10
08
00
Bank 2
Bank 1
Bank thanh ghi 0
(maëc ñònh cho R0 -R7)
RAM
98
9F 9E 9D 9C 9B 9A 99 98 SCON
90
97 96 95 94 93 92 91 90 P1
8D
8C
8B
8A
89
88
87
khoâng ñöôïc ñòa chæ hoaù bit
khoâng ñöôïc ñòa chæ hoaù bit
khoâng ñöôïc ñòa chæ hoaù bit
khoâng ñöôïc ñòa chæ hoaù bit
khoâng ñöôïc ñòa chæ hoaù bit
8F 8E 8D 8C 8B 8A 89 88
khoâng ñöôïc ñòa chæ hoaù bit
TH1
TH0
TL1
TL0
TMOD
TCON
PCON
83
82
81
88
khoâng ñöôïc ñòa chæ hoaù bit
khoâng ñöôïc ñòa chæ hoaù bit
khoâng ñöôïc ñòa chæ hoaù bit
87 86 85 84 83 82 81 80
DPH
DPL
SP
P0
THANH GHI CHÖÙC NAÊNG ÑAËC BIEÄT
Hình 2.5: Boä nhôù döõ lieäu treân chip 8051.
Maëc duø treân hình veõ cho thaáy 80 byte ña duïng chieám caùc ñòa chæ töø 30H
ñeán 7FH, 32 byte döôùi töø 00H ñeán 2FH cuõng coù theå 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å truy xuaát töï do duøng
kieåu ñòa chæ tröïc tieáp hoaëc giaùn tieáp.
RAM noäi cuõng coù theå ñöôïc truy xuaát baèng ñòa chæ giaùn tieáp thoâng qua R0
vaø R1 (chæ hai thanh ghi naøy maø thoâi).
d.2. Vuøng RAM ñònh ñòa chæ bit :
8051 chöùa 210 bit ñöôïc ñònh ñòa chæ, trong ñoù 128 bit chöùa trong caùc byte ôû
ñòa chæ töø 20H ñeán 2FH vaø caùc bit coøn laïi chöùa trong nhoùm thanh ghi chöùc naêng
ñaëc bieät.
YÙ töôûng truy xuaát töøng bit baèng phaàn meàm laø caùc ñaêëc tính maïnh cuûa haàu
heát caùc boä vi ñieàu khieån. Caùc bit coù theå ñöôïc ñaët, xoùa , A N D , O R , … b aèn g m o ät
leänh ñôn. Ña soá caùc microcontroller xöû lyù ñoøi hoûi moät chuoãi leänh ñoïc -söûa- ghi
ñeå nhaän ñöôïc cuøng moät keát quaû. Ngoaøi ra caùc port cuõng coù theå truy xuaát ñöôïc
töøng bit.
8051 coù 128 bit ñöôïc ñònh ñòa chæ vaø coù nhieàu muïc ñích ôû caùc byte coù ñòa
chæ töø 20H -2FH. Caùc ñòa chæ naøy ñöôïc truy xuaát nhö laø caùc byte hay caùc bit tuyø
thuoäc vaøo leänh ñöôïc duøng.
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
Âäö aïn täút nghiãûp
Trang 12
d.3. Caùc daõy thanh ghi :
32 byte thaáp nhaát cuûa boä nhôù noäi chöùa caùc daõy thanh ghi. Caùc leänh cuûa
8051 hoå trôï 8 thanh ghi töø R0 ñeán R7 thuoäc daõy 0. Ñaây laø daõy maëc ñònh sau khi
reset heä thoáng caùc thanh ghi naøy ôû caùc ñòa chæ töø 00H ñeán 07H.
Caùc leänh duøng caùc thanh ghi töø 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. Daõy thanh ghi tích cöïc coù
theå chuyeån ñoåi baèng caùch thay ñoåi caùc bit choïn daõy thanh ghi trong töø traïng thaùi
chöông trình PSW.
Y Ù tö ô ûn g d u øn g “caùc d aõy th an h g h i” ch o ph e ùp “ch uy e ån ñ o åi ng ö õ caûn h ”
chöông trình nhanh vaø hieäu quûa ôû nhöõng nôi maø caùc phaàn rieâng reõõ cuûa phaàn
meàm söû duïng moät taäp thanh ghi rieâng, ñoäc laäp vôùi caùc phaà n khaùc cuûa phaàn meàm.
e. Caùc thanh ghi coù chöùc naêng ñaëc bieät (SFR: Special Function Register):
Caùc thanh ghi noäi cuûa 8051 ñöôïc truy xuaát roõ raøng bôûi moät taäp leänh. Caùc
thanh ghi trong 8051 ñöôïc caáu hình nhö moät phaàn cuûa RAM treân chip vì vaäy moãi
thanh ghi seõ coù moät ñòa chæ. Cuõng nhö R0 ñeán R7, 8051 coù 21 thanh ghi coù chöùc
naêng ñaëc bieät SFR ôû vuøng treân cuûa RAM noäi töø ñòa chæ 80H ñeán FFH. Döôùi ñaây
laø moät vaøi trong soá caùc thanh ghi ñaëc bieät noùi treân:
- Töø traïng thaùi chöông trình (PSW: Program Status Word)
- Thanh ghi B.
- Con troû stack (Stack Pointer).
- Con troû döõ lieäu DPTR (Data Pointer).
- Caùc thanh ghi Port (Port Register).
- Caùc thanh ghi ñònh thôøi (Timer Register).
- Caùc thanh ghi cuûa coång noái tieáp (Serial Port Register).
- Caùc thanh ghi ngaét (Interrupt Register).
- Thanh ghi ñieàu khieån nguoàn PCON (Power Control Register).
2.2. TAÄP LEÄNH CUÛA HOÏ 8051 :
Caùc chöông trình ñöôïc caáu taïo töø nhieàu leänh, chuùng ñöôïc xaây döïng logic,
söï noái tieáp cuûa caùc leänh ñöôïc nghó ra moät caùch hieäu quaû vaø nhanh, keát quaû cuûa
chöông trình khaû quan.
Taäp leänh hoï MSC-51 ñöôïc söï kieåm tra cuûa caùc kieåu ñònh ñòa chæ vaø caùc
leänh cuûa chuùng coù caùc Opcode 8 bit. Ñieàu naøy cung caáp khaû naêng 2 8= 256 leänh
ñöôïc thi haønh vaø moät leänh khoâng ñöôïc ñònh nghóa. Vaøi leänh coù 1 hoaëc 2 byte bôûi
döõ lieäu hoaëc ñòa chæ theâm vaøo Opcode. Trong toaøn boä caùc leänh coù 139 leänh 1
byte, 92 leänh 2 byte vaø 24 leänh 3 byte.
2.2.1. Caùc kieåu ñònh ñòa chæ (addressing mode):
Caùc kieåu ñònh ñòa chæ laø moät boä phaän thoáng nhaát cuûa taäp leänh. Chuùng cho
pheùp ñònh roõ nguoàn hoaëc nôi gôûi tôùi cuûa döõ lieäu ôû caùc ñöôøng khaùc nhau tuøy thuoäc
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
Âäö aïn täút nghiãûp
Trang 13
vaøo traïng thaùi cuûa ngöôøi laäp trình. 8051 coù 8 kieåu ñònh ñòa chæ ñöôïc duøng nhö
sau:
- Thanh ghi.
- Tröïc tieáp.
- Giaùn tieáp.
- Töùc thôøi.
- Töông ñoái.
- Tuyeät ñoái.
- Daøi.
- Chæ soá.
2.2.2. Caùc loaïi leänh cuûa 8051:
Caùc leänh cuûa 8051 ñöôïc chia laøm 5 nhoùm:
- Nhoùm leänh soá hoïc.
- Nhoùm leänh logic.
- Nhoùm leänh di chuyeån döõ lieäu.
- Nhoùm leänh xöû lyù bit.
- Nhoùm leänh reõ nhaùnh.
2.3. HOAÏT ÑOÄNG ÑÒNH THÔØI CUÛA 8051:
2.3.1. Giôùi Thieäu:
Moät boä ñònh thôøi laø moät chuoãi caùc flip flop vôùi moãi flip flop laø moät maïch
chia 2, noù nhaän tín hieäu vaøo laø moät nguoàn xung clock, xung clock ñöôïc ñöa vaøo
flip flop thöù nhaát, flip flop naøy chia ñoâi taàn soá xung clock. Ngoõ ra cuûa flip flop
thöù nhaát trôû thaønh nguoàn xung clock cho flip flop thöù hai, vaø noù cuõng chia taàn soá
xung clock naøy cho 2, cöù tieáp tuïc nhö vaäy . Vì moãi taàng keá tieáp nhau ñeàu chia
cho 2, neân boä ñònh thôøi coù n taàng phaûi chia taàn soá clock ngoõ vaøo cho 2 n.
Ngoõ ra cuûa taàng cuoái cuøng laø xung clock cuûa flip flop baùo traøn boä ñònh
thôøi, côø naøy ñöôïc kieåm tra bôûi phaàn meàm hoaëc taïo ra moät ngaét. Giaù trò nhò phaân
trong caùc flip flop cuûa boä ñònh thôøi laø soá ñeám cuûa caùc xung clock töø khi boä ñònh
thôøi baét ñaàu ñeám.
Caùc boä ñònh thôøi ñöôïc söû duïng trong haàu heát caùc öùng duïng höôùng ñieàu
khieån. 8051 coù 2 boä ñònh thôøi 16 bit, moãi boä coù 4 cheá ñoä hoaït ñoäng. Caùc boä ñònh
thôøi duøng ñeå ñònh thôøi trong moät khoaûng thôøi gian, ñeám söï kieän vaø taïo toác ñoä
Baud cho Port noái tieáp cuûa chip 8051.
Trong caùc öùng duïng ñònh thôøi, boä ñònh thôøi ñöôïc laäp trình ñeå traøn ôû moät
khoaûng thôøi gian ñeàu ñaën vaø ñöôïc set côø traøn cuûa boä ñònh thôøi. Côø ñöôïc duøng ñeå
ñoàng boä chöông trình ñeå thöïc hieän moät coâng vieäc nhö laø kieåm tra traïng thaùi cuûa
caùc ngoõ vaøo hoaëc gôûi döõ lieäu ñeán caùc ngoõ ra. Caùc öùng duïng khaùc coù söû duïng
vieäc ghi giôø ñeàu ñeàu cuûa boä ñònh thôøi ñeå ño thôøi gian ñaõ troâi qua hai traïng thaùi
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
Âäö aïn täút nghiãûp
Trang 14
(ví duï ño ñoä roäng xung).Vieäc ñeám moät söï kieän ñöôïc duøng ñeå xaùc ñònh soá laàn
xuaát hieän cuûa moät söï kieän hôn laø ño thôøi gian giöõa caùc söï kieän.
Caùc boä ñònh thôøi cuûa 8051 ñöôïc truy xuaát bôûi vieäc duøng 6 thanh ghi chöùc
naêng ñaëc bieät : TCON, TMOD, TL0, TL1, TH0, TH1.
2.3.2. Thanh ghi cheá ñoä ñònh thôøi TMOD:
Thanh ghi TMOD goàm hai nhoùm 4 bit laø: 4 bit thaáp ñaët cheá ñoä hoaït ñoäng
cho boä ñònh thôøi 0 vaø 4 bit cao ñaët cheá ñoä hoaït ñoäng cho boä ñònh thôøi 1
TMOD khoâng ñöôïc ñònh ñòa chæ töøng bit, noù ñöôïc naïp moät laàn bôûi phaàn
meàm ôû ñaàu chöông trình ñeå khôûi ñoäng cheá ñoä hoaït ñoäng cuûa boä ñònh thôøi. Sau ñoù
boä ñònh thôøi coù theå ñöôïc döøng, khôûi ñoäng laïi bôûi söï truy xuaát caùc thanh ghi chöùc
naêng ñaëc bieät khaùc cuûa boä ñònh thôøi.
2.3.3. Thanh ghi ñieàu khieån ñònh thôøi TCON:
Thanh ghi ñieàu khieån bao goàm caùc bit traïng thaùi vaø caùc bit ñieàu khieån bôûi
Timer 0 vaø Timer 1. Thanh ghi TCON coù ñöôïc ñònh ñòa chæ bit.
2.3.4. Caùc cheá ñoä ñònh thôøi vaø côø traøn:
8051 coù 2ø boä ñònh thôøi laø boä ñònh thôøi 0 vaø boä ñònh thôøi 1. Ta duøng kyù
hieäu TLx vaø Thx ñeå chæ 2 thanh ghi byte thaáp vaø byte cao cuûa boä ñònh thôøi 0
hoaëc boä ñònh thôøi 1.
a. Cheá ñoä ñònh thôøi 13-bit (cheá ñoä 0) :
Cheá ñoä 0 laø cheá ñoä ñònh thôøi 13-bit, trong ñoù byte cao cuûa boä ñònh thôøi
(Thx) ñöôïc gheùp cascade vôùi 5 bit thaáp cuûa byte thaáp cuûa boä ñònh thôøi (TLx) ñeå
taïo thaønh moät boä ñònh thôøi 13 bit. 3 bit cao cuûa TLx khoâng duøng.
b. Cheá ñoä ñònh thôøi 16-bit (cheá ñoä 1) :
Cheá ñoä 1 laø cheá ñoä ñònh thôøi 16 bit, töông töï nhö cheá ñoä 0 ngoaïi tröø boä
ñònh thôøi naøy hoaït ñoäng nhö moät boä ñònh thôøi ñaày ñuû 16 bit, xung clock ñöôïc
duøng vôùi söï keát hôïp caùc thanh ghi cao vaø thaáp (TLx, THx). Khi xung clock ñöôïc
nhaän vaøo, boä boä ñònh thôøi ñeám leân: 0000H, 0001H, 0002H, . . ., vaø moät söï traøn
seõ xuaát hieän khi coù söï chuyeån soá ñeám töø FFFH sang 0000H vaø seõ set côø traøn
baèng 1, sau ñoù boä ñònh thôøi ñeám tieáp. Côø traøn laø bit TFx trong thanh ghi TCON
maø noù seõ ñöôïc ñoïc hoaëc ghi bôûi phaàn meàm.
c. Cheá ñoä töï naïp laïi 8-bit (cheá ñoä 2):
Cheá ñoä 2 laø cheá ñoä töï naïp laïi 8 bit, byte thaáp TLx cuûa boä ñònh thôøi hoaït
ñoäng ñònh thôøi 8 bit trong khi byte cao THx cuûa boä ñònh thôøi giöõ giaù trò naïp laïi.
Khi boä ñeám traøn töø FFH sang 00H, khoâng chæ côø traøn ñöôïc set maø giaù trò trong
THx cuõng ñöôïc naïp vaøo TLx: boä ñeám ñöôïc tieáp tuïc töø giaù trò naøy leân ñeán söï
chuyeån traïng thaùi töø FFH sang 00H keá tieáp vaø cöù theá tieáp tuïc.
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
Âäö aïn täút nghiãûp
Trang 15
d. Cheá ñoä ñònh thôøi chia xeû (cheá ñoä 3):
Cheá ñoä 3 laø cheá ñoä ñònh thôøi chia xeû vaø coù hoaït ñoäng khaùc nhau cho töøng
boä ñònh thôøi. Cheá ñoä 3 cung caáp 1 boä ñònh thôøi 8-bit nöõa laø boä ñònh thôøi thöù ba
cuûa 8051. Khi boä ñònh thôøi 0 ôû cheá ñoä 3, boä ñònh thôøi 1 coù theå hoaït ñoäng hoaëc taét
baèng caùch chuyeån boä ñònh thôøi naøy ra khoûi cheá ñoä 3 hoaëc vaøo cheá ñoä 3.Boä ñònh
thôøi 1 coù theå ñöôïc duøng bôûi Port noái tieáp nhö laø moät maùy phaùt toác ñoä Baud, hoaëc
noù coù theå duøng trong höôùng naøo ñoù maø khoâng söû duïng ngaét.
2.3.5. Caùc nguoàn xung clock ñònh thôøi:
Coù hai nguoàn xung clock coù theå ñeám giôø laø söï ñònh giôø beân trong vaø söï
ñeám söï kieän beân ngoaøi. Bit C/T trong TMOD cho pheùp choïn 1 trong 2 khi Timer
ñöôïc khôûi ñoäng.
a. Ñònh thôøi moät khoaûng thôøi gian:
Neáu bit C/T = 0 thì hoaït ñoäng ñònh thôøi ñöôïc choïn vaø nguoàn xung clock
cuûa boä ñònh thôøi do maïch dao ñoäng beân trong chip taïo ra. Caùc thanh ghi TLx vaø
THx ñeám leân vôùi taàn soá xung clock baèng 1/12 laàn taàn soá dao ñoäng treân Chip.
Caùc söï traøn boä ñònh thôøi xaûy ra sau moät con soá coá ñònh cuûa nhöõng xung
clock, noù phuï thuoäc vaøo giaù trò khôûi taïo ñöôïc naïp vaøo caùc thanh ghi THx vaø TLx.
b. Söï ñeám caùc söï kieän (Event Counting):
Neáu bit C/T = 1 thì boä ñònh thôøi ñöôïc cung caáp xung clock töø nguoàn beân
ngoaøi. Trong nhieàu öùng duïng, nguoàn beân ngoaøi naøy cung caáp cho boä ñònh thôøi 1
xung döïa treân söï xaûy ra cuûa söï kieän. Boä ñònh thôøi baây giôø laø söï ñeám söï kieän.
Con soá söï kieän ñöôïc xaùc ñònh trong phaàn meàm bôûi vieäc ñoïc caùc thanh ghi ñònh
thôøi TLx/THx, bôûi vì giaù trò 16 bit trong caùc thanh naøy taêng leân cho moãi söï kieän.
2.3.6. Khôûi ñoäng döøng vaø ñieàu khieån caùc boä ñònh thôøi:
Bit TRx trong thanh ghi coù bit ñònh vò TCON ñöôïc ñieàu khieån bôûi phaàn
meàm ñeå baét ñaàu hoaëc keát thuùc caùc boä ñònh thôøi. Ñeå baéêt ñaàu caùc boä ñònh thôøi ta
set bit TRx vaø ñeå keát thuùc boä ñònh thôøi ta xoaù TRx.
Theâm phöông phaùp nöõa ñeå ñieàu khieån caùc boä ñònh thôøi laø duøng bit GATE
trong thanh ghi TMOD vaø ngoõ nhaäp beân ngoaøi INTx. Ñieàu naøy ñöôïc duøng ñeå ño
caùc ñoä roäng xung.
2.3.7. Khôûi ñoäng vaø truy xuaát caùc thanh ghi ñònh thôøi:
Caùc boä ñònh thôøi ñöôïc khôûi ñoäng 1 laàn ôû ñaàu chöông trình ñeå ñaët cheá ñoä
hoaït ñoäng cho chuùng. Sau ñoù trong chöông trình caùc boä ñònh thôøi ñöôïc baét ñaàu,
ñöôïc xoùa, caùc thanh ghi ñònh thôøi ñöôïc ñoïc vaø caäp nhaät... theo yeâu caàu cuûa töøng
öùng duïng cuï theå.
TMOD laø thanh ghi ñaàu tieân ñöôïc khôûi gaùn, bôûi vì ñaët cheá ñoä hoaït ñoäng
cho caùc boä ñònh thôøi.
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
Âäö aïn täút nghiãûp
Trang 16
Côø traøn TFx töï ñoäng ñöôïc set bôûi phaàn cöùng sau moãi söï traøn vaø seõ ñöôïc
xoùa bôûi phaàn meàm. Chính vì vaäy ta coù theå laäp trình chôø sau moãi laàn traøn ta seõ
xoùa côø TFx vaø quay voøng laëp khôûi gaùn cho TLx/THx ñeå boä ñònh thôøi luoân luoân
baét ñaàu ñeám töø giaù trò khôûi gaùn leân theo yù ta mong muoán.
2.4. HOAÏT ÑOÄNG CUÛA PORT NOÁI TIEÁP:
2.4.1. Giôùi thieäu:
8051 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õy taàn soá roäng. Chöùc naêng chuû yeáu 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.
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 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) ôû ñiaï chæ 99H nhaän döõ
lieäu ñeå thu hoaëc phaùt. Thanh ghi ñieàu khieån port noái tieáp (SCON) ôû ñiaï chæ 98H
laø thanh ghi coù ñiaï 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å laäp trình ñeå taïo ngaét.
2.4.2. Thanh ghi ñieàu khieån port noái tieáp:
Thanh ghi ñieàu khieån coång noái tieáp duøng ñeå thieát laäp cheá ñoä hoaït ñoäng
cuûa port noái tieáp. Vieäc thieát laäp cheá ñoä hoaït ñoäng cho port noái tieáp ñöôïc thöïc
hieän baèng caùch ghi vaøo thanh ghi cheá ñoä port noái tieáp SCON ôû ñòa chæ 98H .
2.4.3. Caùc cheá ñoä hoaït ñoäng:
Port noái tieáp cuûa 8051 coù 4 cheá ñoä hoaït ñoäng, caùc cheá ñoä ñöôïc choïn baèng
caùch ghi 1 hoaëc 0 cho caùc bit SM0 vaø SM1 trong thanh ghi SCON. Ba trong soá
caùc cheá ñoä hoaït ñoäng cho pheùp truyeàn khoâng ñoàng boä, trong ñoá moãi kyù töï ñöôïc
thu hoaëc phaùt seõ cuøng vôùi moät bit start vaø moät bit stop taïo thaønh moät khung. Moãi
cheá ñoä hoaït ñoäng seõ ñöôïc ñeà caäp toùm taét sau ñaây:
a. Cheá ñoä 0 (thanh ghi dòch 8 bit):
ÔÛ cheá ñoä 0 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 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ä (treân RXD) trong moät chu kyø maùy.
Vieäc thu ñöôïc khôûi ñoäng khi cho pheùp boä thu (REN) laø 1 vaø bit ngaét thu
(RI) laø 0. Quy taéc toång quaùt laø ñaët REN khi baét ñaàu chöông trình ñeå khôûi ñoäng
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
Âäö aïn täút nghiãûp
Trang 17
port noái tieáp, roài xoaù RI ñeå baét ñaàu nhaän döõ lieäu. Khi RI bò xoaù, caùc xung nhòp
ñöôïc ñöa ra ñöôøng TXD, baét ñaàu chu kyø maùy keá tieáp vaø döõ lieäu theo xung nhòp ôû
ñöôøng RXD. Laáy xung nhòp cho döõ lieäu vaøo port noái tieáp xaûy ra ôû caïnh ñöôøng
cuûa TXD.
b. Cheá ñoä 1 (UART 8 bit vôùi toác ñoä baud thay ñoåi):
ÔÛ cheá ñoä 1, port noái tieáp cuûa 8051 laøm vieäc nhö moät UART 8 bit vôùi toác
ñoä baud thay ñoåi ñöôïc. Moät UART (Boä thu phaùt ñoàng boä vaïn naêng) laø moät duïng
cuï thu phaùt döõ lieäu noái tieáp vôùi moãi kyù töï döõ lieäu ñi tröôù c laø bit start ôû möùc thaáp
vaø theo sau bit stop ôû möùc cao. Ñoâi khi xen theâm bit kieåm tra chaün leû giöõa bit döõ
lieäu cuoái cuøng vaø bit stop. Hoaït ñoäng chuû yeáu cuûa UART laø chuyeån ñoåi song
song sang noái tieáp vôùi döõ lieäu nhaäp.
ÔÛ cheá ñoä 1, 10 bit ñöôïc phaùt treân TXD hoaëc thu treân RXD. Nhöõng bit ñoù
laø: 1 bit start (luoân luoân laø 0), 8 bit döõ lieäu (LSB ñaàu tieân) vaø 1 bit stop (luoân
luoân laø 1). Vôùi hoaït ñoäng thu, bit stop ñöôïc ñöa vaøo RB8 trong SCON. Trong
8051 cheá ñoä baud ñöôïc ñaët baèng toác ñoä baùo traøn cuûa boä ñònh thôøi1.
c. Cheá ñoä 2 (UART 9 bit vôùi toác ñoä baud coá ñònh):
Khi SM1 = 1 vaø SM0 = 0, coång noái tieáp laøm vieäc ôû cheá ñoä 2, nhö moät
UART 9bit coù toác ñoä baud coá ñònh, 11 bit seõ ñöôïc phaùt hoaëc thu:1bit start, 8 bit
data, 1 bit data thöù 9 coù theå ñöôïc laäp trình vaø 1 bit stop. Khi phaùt bit thöù 9 laø baát
cöù gì ñaõ ñöôïc ñöa vaøo TB8 trong SCON (coù theå laø bit Parity) .Khi thu bit thöù 9
thu ñöôïc seõ ôû trong RB8. Toác ñoä baud ôû cheá ñoä 2 laø 1/32 hoaëc 1/16 taàn soá dao
ñoäng treân chip.
d. Cheá ñoä 3 (UART 9 bit vôùi toác ñoä baud thay ñoåi):
Cheá ñoä naøy gioáng nhö ôû cheá ñoä 2 ngoaïi tröø toác ñoä baud coù theå laäp trình
ñöôïc vaø ñöôïc cung caáp bôûi Timer.Thaät ra caùc cheá ñoä 1, 2, 3 raát gioáng nhau. Caùi
khaùc bieät laø ôû toác ñoä baud (coá ñònh trong cheá ñoä 2, thay ñoåi trong cheá ñoä 1 vaø 3)
vaø ôû soá bit data (8 bit trong cheá ñoä 1,9 trong cheá ñoä 2 vaø 3).
2.4.4. Khôûi ñoäng vaø truy xuaát caùc thanh ghi coång noái tieáp:
Cho Pheùp Thu:
Bit cho pheùp boä thu (REN = Receiver Enable) trong thanh ghi SCON phaûi
ñöôïc ñaët leân 1 baèng phaàn meàm ñeå cho pheùp thu caùc kyù töï 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 , b o äñ òn h th ô øi…
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 ôû RB8. 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 ñ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 troø quan troïng trong truyeàn
thoâng ña xöû lyù).
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
Âäö aïn täút nghiãûp
Trang 18
Theâm vaøo bit chaün leû:
Thöôøng söû duïng bit döõ lieäu thöù 9 ñeå laøm bit chaün leû cho moät kyù töï. Nhö ñaõ
nhaän xeùt ôû chöông tröôùc, bit P trong töø traïng thaùi chöông trình (PSW) ñöôïc ñaët
leân 1 hoaëc bò xoaù 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.
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 trong truyeàn thoâng noái tieáp duøng 8051. Caû hai bit ñöôïc ñaët leân 1 baèng phaàn
cöùng, nhöng phaûi ñöôïc xoaù baèng phaàn meàm.
2.4.5. Toác ñoä baud cuûa 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 nhöng cuõng coù theå söû duïng nguoàn xung nhòp
khaùc.
Maëc nhieân sau khi reset heä thoáng, toác ñoä baud cheá ñoä 2 laø taàn soá boä dao
ñoäng chia cho 64, toác ñoä baud cuõng bò 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
1 laøm gaáp ñoâi toác ñoä baud trong caùc 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)
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 boä ñònh thôøi 1. Vì boä ñònh thôøi hoaït ñoäng ôû taàn soá töông ñoái cao, traøn boä ñònh
thôøi ñöôïc chia theâm cho 32 (hoaëc 16 neáu SMOD =1 ) tröôùc khi cung caáp toác ñoä
xung nhòp cho port noái tieáp.
2.5. HOAÏT ÑOÄNG NGAÉT:
2.5.1. Giôùi thieäu:
Ngaét laø hoaït ñoäng ngöøng taïm thôøi moät chöông trình naøy ñeå thi 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áng ñ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 khoâng theå thöïc thi nhieàu hôn moät leänh ôû moät thôøi ñieåm
nhöng CPU coù theå ngöng taïm thôøi vieäc 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 xuû lyù moät ngaét ñöôïc goïi laø chöông trình phuïc vuï ngaét (ISR : Interrupt
Sevice Reutine).
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
Âäö aïn täút nghiãûp
Trang 19
2.5.2. Toå chöùc ngaét:
Coù 5 nguyeân nhaân taïo ra ngaét ñoái vôùi 8051: hai ngaét do beân ngoaøi, hai
ngaét do boä ñònh thôøi vaø moät ngaét do port noái tieáp, taát caû caùc nguoàn ngaét bò caám
sau khi reset heä thoáng vaø cho pheùp 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 ñònh ñòa chæ bit, thanh ghi cho pheùp ngaét IE
(Interrupt Enable) ôû ñòa chæ 0A8H. Cuõng nhö caùc bit 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.
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, thanh ghi öu tieân ngaét IP (Interrupt
priority) ôû ñòa chæ 0B8H.
Caùc ngaét öu tieân ñöôïc xoùa sau khi reset heä thoáng, thanh ghi IP seõ maëc
ñònh taát caû caùc ngaét ôû möùc öu tieân thaáp.
c. Chuoãi voøng:
Neáu coù hai ngaét coù cuøng möùc öu tieân xuaát hieän ñoàng thôøi, chuoãi voøng coá
ñònh seõ xaùc ñònh ngaét naøo ñöôïc phuïc vuï tröôùc. Chuoãi voøng naøy seõ laø: ngaét ngoaøi
0, ngaét do boä ñònh thôøi 0, ngaét ngoaøi 1, ngaét do boä ñònh thôøi 1, ngaét do port noái
tieáp.
2.5.3. Xöû lyù ngaét:
Khi coù moät ngaét xuaát hieän vaø ñöôïc CPU chaáp nhaän, chöông trình chính bò
ngaét. Nhöõng hoaït ñoäng sau xaûy ra:
- Hoaøn taát vieäc thöïc thi leänh hieän haønh.
- Boä ñeám chöông trình PC ñöôïc caát vaøo ngaên xeáp.
- Traïng thaùi cuûa ngaét hieän haønh ñöôïc löu giöõ laïi.
- Caùc ngaét ñöôïc chaën laïi ôû möùc ngaét.
- Boä ñeám chöông trình PC ñöôïc naïp ñòa chæ vector cuûa trình phuïc vuï
ngaét ISR.
- ISR ñöôïc 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.
a. 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:
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
Âäö aïn täút nghiãûp
Trang 20
Ngaét do
Reset heä thoáng
Ngaét ngoaøi 0
Boä ñònh thôøi 0
Ngaét ngoaøi 1
Boä ñònh thôøi 1
Port noái tieáp
Côø
Ñòa chæ vector
RST
0000H
IE0
0003H
TF0
000BH
IE1
0013H
TF1
001BH
TI hoaëc RI
0023H
Baûng 2.1: 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.
K h i ch æ ñ e án m o ät n g aét “cô øg aây n g aét tö ïñ o än g b ò x o ùa b ô ûi p h aàn cö ùn g , 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.
b. Caùc ngaét cuûa 8051:
Caùc ngaét do boä ñònh thôøi:
Caùc ngaét do boä ñònh thôøi xaûy ra khi caùc thanh ghi ñònh thôøi (TLx / THx)
traøn vaø set côø traøn TFx leân 1. Caùc côø traøn TFx khoâng bò xoùa baèng phaàn meàm do
khi caùc ngaét ñöôïc cho pheùp, TFx töï ñoäng ñöôïc xoùa baèng phaàn cöùng khi CPU troû
tôùi trình phuïc vuï ngaét.
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ôø ngaét phaùt TI hoaëc côø ngaét thu RI
ñöôï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 SBUF ñeå ñöôïc ñoïc.
Côø gaây ra ngaét coång noái tieáp khoâng bò xoùa baèn g phaàn cöùng khi CPU troû tôùi
trình phuïc vuï 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 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.
Caùc côø taïo ngaét naøy laø caùc bit IE0 vaø IE1 trong thanh ghi TCON. Khi
quyeàn ñieàu khieån ñaõ troû tôùi trình phuïc vuï ngaét, 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 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.
G.v.h.d : tháöy Lã Xæïng
S.v.t.h : Tráön Âçnh Khoa
- Xem thêm -