Tài liệu Đề tài Thiết kế và thi công hệ thống Kit Vi Điều Khiển 8951: PHẦN MỞ ĐẦU
I. KHÁI QUÁT VẤN ĐỀ
Ngày nay kỹ thuật vi điều khiển đã trở nên quen thuộc trong các ngành kỹ thuật và trong dân dụng. Từ các dây chuyền sản xuất lớn đến các thiết bị gia dụng, chúng ta đều thấy sự hiện diện của vi điều khiển. Các bộ vi điều khiển có khả năng xử lý nhiều hoạt động phức tạp mà chỉ cần một chip vi mạch nhỏ, nó đã thay thế các tủ điều khiển lớn và phức tạp bằng những mạch điện gọn nhẹ, dễ dàng thao tác sử dụng.
Vi điều khiển không những góp phần vào kỹ thuật điều khiển mà còn góp phần to lớn vào việc phát triển thông tin. Đó chính là sự ra đời của hàng loạt thiết bị tối tân trong ngành viễn thông, truyền hình, đặc biệt là sự ra đời của mạng Internet –siêu xa lộ thông tin, góp phần đưa con người đến đỉnh cao của nền văn minh nhân loại.
Chính vì các lý do trên, việc tìm hiểu, khảo sát vi điều khiển là điều mà ca...
112 trang |
Chia sẻ: hunglv | Lượt xem: 1240 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Thiết kế và thi công hệ thống Kit Vi Điều Khiển 8951, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
PHAÀN MÔÛ ÑAÀU
I. KHAÙI QUAÙT VAÁN ÑEÀ
Ngaøy nay kyõ thuaät vi ñieàu khieån ñaõ trôû neân quen thuoäc trong caùc ngaønh kyõ thuaät vaø trong daân duïng. Töø caùc daây chuyeàn saûn xuaát lôùn ñeán caùc thieát bò gia duïng, chuùng ta ñeàu thaáy söï hieän dieän cuûa vi ñieàu khieån. Caùc boä vi ñieàu khieån coù khaû naêng xöû lyù nhieàu hoaït ñoäng phöùc taïp maø chæ caàn moät chip vi maïch nhoû, noù ñaõ thay theá caùc tuû ñieàu khieån lôùn vaø phöùc taïp baèng nhöõng maïch ñieän goïn nheï, deã daøng thao taùc söû duïng.
Vi ñieàu khieån khoâng nhöõng goùp phaàn vaøo kyõ thuaät ñieàu khieån maø coøn goùp phaàn to lôùn vaøo vieäc phaùt trieån thoâng tin. Ñoù chính laø söï ra ñôøi cuûa haøng loaït thieát bò toái taân trong ngaønh vieãn thoâng, truyeàn hình, ñaëc bieät laø söï ra ñôøi cuûa maïng Internet –sieâu xa loä thoâng tin, goùp phaàn ñöa con ngöôøi ñeán ñænh cao cuûa neàn vaên minh nhaân loaïi.
Chính vì caùc lyù do treân, vieäc tìm hieåu, khaûo saùt vi ñieàu khieån laø ñieàu maø caùc sinh vieân ngaønh ñieän maø ñaëc bieät laø chuyeân ngaønh kyõ thuaät ñieän-ñieän töû phaûi heát söùc quan taâm. Ñoù chính laø moät nhu caàu caàn thieát vaø caáp baùch ñoái vôùi moãi sinh vieân, ñeà taøi naøy ñöôïc thöïc hieän chính laø ñaùp öùng nhu caàu ñoù.
Caùc boä ñieàu khieån söû duïng vi ñieàu khieån tuy ñôn giaûn nhöng ñeå vaän haønh vaø söû duïng ñöôc laïi laø moät ñieàu raát phöùc taïp. Phaàn coâng vieäc xöû lyù chính vaãn phuï thuoäc vaøo con ngöôøi, ñoù chånh laø chöông trình hay phaàn meàm. Tuy chuùng ta thaáy caùc maùy tính ngaøy nay cöïc kyø thoâng minh, giaûi quyeát caùc baøi toaùn phöùc taïp trong vaøi phaàn trieäu giaây, nhöng ñoù cuõng laø döïa treân söï hieåu bieát cuûa con ngöôøi. Neáu khoâng coù söï tham gia cuûa con ngöôøi thì heä thoáng vi ñieàu khieån cuõng chæ laø moät vaät voâ tri. Do vaäy khi noùi ñeán vi ñieàu khieån cuõng gioáng nhö maùy tính bao goàm 2 phaàân laø phaàn cöùng vaø phaàn meàm.
Caùc boä vi ñieàu khieån theo thôøi gian cuøng vôùi söï phaùt trieån cuûa coâng ngheä baùn daãn ñaõ tieán trieån raát nhanh, töø caùc boä vi ñieàu khieån 4 Bit ñôn giaûn ñeán caùc boä vi ñieàu khieån 32 Bit. Vôùi coâng ngheä tieân tieán ngaøy nay caùc maùy tính coù theå ñi ñeán vieäc suy nghó, tri thöùc caùc thoâng tin ñöa vaøo, ñoù laø caùc maùy tính thuoäc theá heä trí tueä nhaân taïo.
Maëc duø vi ñieàu khieån ñaõ ñi ñöôïc nhöõng böôùc daøi nhö vaäy nhöng ñeå tieáp caän ñöôïc vôùi kyõ thuaät naøy khoâng theå laø moät vieäc coù ñöôïc trong moät sôùm moät chieàu. Vieäc hieåu ñöôïc cô cheá hoaït ñoäng cuûa boä vi ñieàu khieån 8 Bit laø cô sôû ñeå chuùng ta tìm hieåu vaø söû duïng caùc boä vi ñieàu khieån toái taân hôn, ñaây chính laø böôùc ñi ñaàu tieân khi chuùng ta muoán xaâm nhaäp saâu hôn vaøo lónh vöïc naøy.
Ñeå tìm hieåu boä vi ñieàu khieån moät caùch khoa hoïc vaø mang laïi hieäu quaû cao laøm neàn taûn cho vieäc xaâm nhaäp vaøo nhöõng heä thoáng toái taân hôn. Vieäc trang bò nhöõng kieán thöùc veà vi ñieàu khieån cho sinh vieân laø heát söùc caàn thieát. Xuaát phaùt töø thöïc tieån naøy em ñaõ ñi ñeán quyeát ñònh Thieát keá vaø thi coâng heä thoáng Kit Vi Ñieàu Khieån 8951. Nhaèm ñaùp öùng nhu caàu ham muoán hoïc hoûi cuûa baûn thaân.
II.GIÔÙI HAÏN VAÁN ÑEÀ
Do thôøi gian nghieân cöùu vaø thöïc hieän ñeà taøi chæ giôùi haïn trong voøng 7 tuaàn leã, voán kieán thöùc vaø vieäc tìm hieåu saâu veà moät heä vi ñieàu khieån coøn haïn cheá, luaän aùn naøy chæ thöïc hieän trong phaïm vi sau:
* Phaàn I : Giôùi thieäu caùc linh kieän söû duïng trong maïch
* Phaàn II : Thieát keá vaø thi coâng phaàn cöùng .
* Phaàn III : Thieát keá phaàn meàm
* Phaàn IV : Phuï luïc
III. MUÏC TIEÂU NGHIEÂN CÖÙU
Döïa treân cô sôû cuûa caùc ñeà taøi vi xöû lyù vaø vi ñieàu khieån, ñaëc bieät laø caùc tính naêng cuûa chuùng cuõng nhö caùc hoï IC giao tieáp, hieån thò vaø giaûi maõ …, nhaèm thieát keá moät heä thoáng vi ñieàu khieån goùp phaàn laøm phong phuù theâm cho vieäc hieåu bieát veà lónh vöïc naøy ñoàng thôøi coù theå môû roäng vaø ñònh höôùng cho nhöõng ñeà taøi sau.
PHAÀN I : GIÔÙI THIEÄU CAÙC LINH KIEÄN SÖÛ DUÏNG
TRONG MAÏCH
CHÖÔNG I KHAÛO SAÙT VI ÑIEÀU KHIeån 8951
I. GIÔÙI THIEÄU CAÁU TRUÙC PHAÀN CÖÙNG HOÏ MCS-51 (8951):
1.Giôùi thieäu hoï MCS-51:
MCS-51 laø hoï IC vi ñieàu khieån do haõng Intel saûn xuaát. Caùc IC tieâu bieåu cho hoï laø 8051 vaø 8031. Caùc saûn phaåm MCS-51 thích hôïp cho nhöõng öùng duïng ñieàu khieån. Vieäc xöû lyù treân Byte vaø caùc toaùn soá hoïc ôû caáu truùc döõ lieäu nhoû ñöôïc thöïc hieän baèng nhieàu cheá ñoä truy xuaát döõ lieäu nhanh treân RAM noäi. Taäp leänh cung caáp moät baûng tieän duïng cuûa nhöõng leänh soá hoïc 8 Bit goàm caû leänh nhaân vaø leänh chia. Noù cung caáp nhöõng hoå trôï môû roäng treân Chip duøng cho nhöõng bieán moät Bit nhö laø kieåu döõ lieäu rieâng bieät cho pheùp quaûn lyù vaø kieåm tra Bit tröïc tieáp trong ñieàu khieån vaø nhöõng heä thoáng logic ñoøi hoûi xöû lyù luaän lyù.
8951 laø moät vi ñieàu khieån 8 Bit, cheá taïo theo coâng ngheä CMOS chaát löôïng cao, coâng suaát thaáp vôùi 4 KB PEROM (Flash Programeable and erasable read only memory). Thieát bò naøy ñöôïc cheá taïo baèng caùch söû duïng boä nhôù khoâng boác hôi maät ñoä cao cuûa ATMEL vaø töông thích vôùi chuaån coâng nghieäp MCS-51 veà taäp leänh vaø caùc chaân ra. PEROM ON-CHIP cho pheùp boä nhôù laäp trình ñöôïc laäp trình trong heä thoáng hoaëc bôûi moät laäp trình vieân bình thöôøng. Baèng caùch keát hôïp moät CPU 8 Bit vôùi moät PEROM treân moät Chip ñôn, ATMEL AT89C51 laø moät vi ñieàu khieån maïnh (coù coâng suaát lôùn) maø noù cung aáp moät söï linh ñoäng cao vaø giaûi phaùp veà giaù caû ñoái vôùi nhieàu öùng duïng vi ñieàu khieån.
AT89C51 cung caáp nhöõng ñaëc tính chuaån nhö sau: 4 KB boä nhôù chæ ñoïc coù theå xoùa vaø laäp trình nhanh (EPROM), 128 Byte RAM, 32 ñöôøng I/O, 2 TIMER/COUNTER 16 Bit, 5 vectô ngaét coù caáu truùc 2 möùc ngaét, moät Port noái tieáp baùn song coâng, 1 maïch dao ñoäng taïo xung Clock vaø boä dao ñoäng ON-CHIP. Theâm vaøo ñoù, AT89C51 ñöôïc thieát keá vôùi logic tónh cho hoaït ñoäng ñeán möùc khoâng taàn soá vaø hoã trôï hai phaàn meàm coù theå löïa choïn nhöõng cheá ñoä tieát kieäm coâng suaát, cheá ñoä chôø (IDLE MODE) seõ döøng CPU trong khi vaãn cho pheùp RAM, timer/counter, port noái tieáp vaø heä thoáng ngaét tieáp tuïc hoaït ñoäng. Cheá ñoä giaûm coâng suaát seõ löu noäi dung RAM nhöng seõ treo boä dao ñoäng laøm maát khaû naêng hoaït ñoäng cuûa taát caû nhöõng chöùc naêng khaùc cho ñeán khi Reset heä thoáng.
Caùc ñaëc ñieåm cuûa 8951 ñöôïc toùm taét nhö sau:
4 KB boä nhôù coù theå laäp trình laïi nhanh, coù khaû naêng tôùi 1000 chu kyø ghi xoaù
Taàn soá hoaït ñoäng töø: 0Hz ñeán 24 MHz
3 möùc khoùa boä nhôù laäp trình
2 boä Timer/counter 16 Bit
128 Byte RAM noäi.
4 Port xuaát /nhaäp I/O 8 bit.
Giao tieáp noái tieáp.
64 KB vuøng nhôù maõ ngoaøi
64 KB vuøng nhôù döõ lieäu ngoaïi.
Xöû lyù Boolean (hoaït ñoäng treân bit ñôn).
210 vò trí nhôù coù theå ñònh vò bit.
4 ms cho hoaït ñoäng nhaân hoaëc chia.
2.Sô ñoà khoái cuûa AT89C51 ñöôïc trình baøy ôû hình 1-1
OTHER REGISTER
128 byte RAM
128 byte RAM
8032\8052
ROM
0K:
8031\8032
4K:8951
8K:8052
INTERRUPT CONTROL
INT1\ INT0\
SERIAL PORT TEMER0
TEMER1
TEMER2 8032\8052
CPU
OSCILATOR
BUS CONTROL
I/O PORT
SERIAL PORT
EA\ RST
ALE\ PSEN\
P0 P1 P2 P3
Address\Data
TXD RXD
TEMER2 8032\8052
TEMER1
TEMER1
II. KHAÛO SAÙT SÔ ÑOÀ CHAÂN 8951, CHÖÙC NAÊNG TÖØNG CHAÂN:
1.Sô ñoà chaân 8951:
Vcc
XTAL.1
XTAL.2
PSEN\
ALE
EA\
RST
Vss
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
18
19
12 MHz
P3.7
P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
17
16
15
14
13
12
11
10
RD
WR
T1
T0
INT1
INT0
TXD
RXD
8951
29
30
31
9
20
32 AD7
33 AD6
34 AD5
35 AD4
36 AD3
37 AD2
38 AD1
39 AD0
8
7
6
5
4
3
2
1
28 A15
27 A14
26 A13
25 A12
24 A11
23 A10
22 A9
21 A8
40
30pF
30pF
Hình1-2 Sô ñoà chaân IC 8951
2.Chöùc naêng caùc chaân cuûa 8951
- 8951 coù taát caû 40 chaân coù chöùc naêng nhö caùc ñöôøng xuaát nhaäp. Trong ñoù coù 24 chaân coù taùc duïng keùp (coù nghóa 1 chaân coù 2 chöùc naêng), 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æ.
a.Caùc Port:
r Port 0:
- Port 0 laø port coù 2 chöùc naêng ôû caùc chaân 32 – 39 cuûa 8951. 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 IO. Ñoái vôùi caùc thieát keá côõ lôùn coù boä nhôù môû roäng, noù ñöôïc keát hôïp giöõa bus ñòa chæ vaø bus döõ lieäu.
r Port 1:
- Port 1 laø port IO 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 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.
r Port 2:
- Port 2 laø 1 port coù taùc 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 bò duøng boä nhôù môû roäng.
r Port 3:
- Port 3 laø port coù taùc 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ính ñaëc bieät cuûa 8951 nhö ôû baûng sau:
Bit
Teân
Chöùc naêng chuyeån ñoåi
P3.0
RXT
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
P3.3
P3.4
P3.5
P3.6
P3.7
INT0\
INT1\
T0
T1
WR\
RD\
Ngoõ vaøo ngaét cöùng thöù 0.
Ngoõ vaøo ngaét cöùng thö 1.
Ngoõ vaøo cuûaTIMER/COUNTER thöù 0.
Ngoõ vaøo cuûaTIMER/COUNTER thöù 1.
Tín hieäu ghi döõ lieäu leân boä nhôù ngoaøi.
Tín hieäu ñoïc boä nhôù döõ lieäu ngoaøi.
b.Caùc ngoõ tín hieäu ñieàu khieån:
r Ngoõ tín hieäu PSEN (Program store enable):
- PSEN laø tín hieäu ngoõ ra ôû chaân 29 coù taùc duïng cho pheùp ñoïc boä nhôù chöông trình môû roäng thöôøng ñöôïc noùi ñeán chaân 0E\ (output enable) cuûa Eprom cho pheùp ñoïc caùc byte maõ leänh.
- PSEN ôû möùc thaáp trong thôøi gian Microcontroller 8951 laáy 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 beân trong 8951 ñeå giaûi maõ leänh. Khi 8951 thi haønh chöông trình trong ROM noäi PSEN seõ ôû möùc logic 1.
r Ngoõ tín hieäu ñieàu khieån ALE (Address Latch Enable):
- Khi 8951 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 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 keát noái chuùng vôùi IC choát.
- Tín hieäu ra ôû chaân ALE laø moät xung trong khoaûng thôøi gian port 0 ñoùng vai troø laø ñòa chæ thaáp neân choát ñòa chæ hoaøn toaøn töï ñoäng.
Caùc xung tín hieäu ALE coù toác ñoä baèng 1/6 laàn taàn soá dao ñoäng treân chip vaø coù theå ñöôïc duøng laøm tín hieäu clock cho caùc phaàn khaùc cuûa heä thoáng. Chaân ALE ñöôïc duøng laøm ngoõ vaøo xung laäp trình cho Eprom trong 8951.
r Ngoõ tín hieäu EA\(External Access) :
- Tín hieäu vaøo EA\ ôû chaân 31 thöôøng ñöôïc maét leân möùc 1 hoaëc möùc 0. Neáu ôû möùc 1, 8951 thi haønh chöông trình töø ROM noäi trong khoaûng ñòa chæ thaáp 8 Kbyte. Neáu ôû möùc 0, 8951 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 8951.
r Ngoõ tín hieäu RST (Reset):
-Ngoõ vaøo RST ôû chaân 9 laø ngoõ vaøo Reset cuûa 8951. 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.
r Caùc ngoõ vaøo boä giao ñoäng X1,X2:
-Boä dao ñoäng ñöôïc ñöôïc tích hôïp beân trong 8951, khi söû duïng 8951 ngöôøi thieát keá chæ caàn keát noái theâm thaïch anh vaø caùc tuï nhö hình veõ trong sô ñoà. Taàn soá thaïch anh thöôøng söû duïng cho 8951 laø 12Mhz.
r Chaân 40 (Vcc) ñöôïc noái leân nguoàn 5V.
III.CAÁU TRUÙC BEÂN TRONG VI ÑIEÀU KHIEÅN
1. Toå chöùc boä nhôù:
CODE Memory
Enable
via
PSEN
DATA
Memory
Enable
via
RD & WR
ON-CHIP
Memory
FFFF FFFF
FF
00
0000 0000
Baûng toùm taét caùc vuøng nhôù 8951.
Hình 1.3 : External Momery
Baûn ñoà boä nhôù Data treân Chip nhö sau:
Ñòa chæ
byte
Ñòa chæ
byte
Ñòa chæ bit
Ñòa chæ bit
7F
FF
F0
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
D3
D2
D1
D0
PSW
30
B8
-
-
-
BC
BB
BA
B9
B8
IP
2F
7F
7E
7D
7C
7B
7A
79
78
2E
77
76
75
74
73
72
71
70
B0
B7
B6
B5
B4
B3
B2
B1
B0
P.3
2D
6F
6E
6D
6C
6B
6A
69
68
2C
67
66
65
64
63
62
61
60
A8
AF
AC
AB
AA
A9
A8
IE
2B
5F
5E
5D
5C
5B
5A
59
58
2A
57
56
55
54
53
52
51
50
A0
A7
A6
A5
A4
A3
A2
A1
A0
P2
29
4F
4E
4D
4C
4B
4A
49
48
28
47
46
45
44
43
42
41
40
99
khoâng ñöôïc ñòa chæ hoaù bit
SBUF
27
3F
3E
3D
3C
3B
3A
39
38
98
9F
9E
9D
9C
9B
9A
99
98
SCON
26
37
36
35
34
33
32
31
30
25
2F
2E
2D
2C
2B
2A
29
28
90
97
96
95
94
93
92
91
90
P1
24
27
26
25
24
23
22
21
20
23
1F
1E
1D
1C
1B
1A
19
18
8D
khoâng ñöôïc ñòa chæ hoaù bit
TH1
22
17
16
15
14
13
12
11
10
8C
khoâng ñöôïc ñòa chæ hoaù bit
TH0
21
0F
0E
0D
0C
0B
0A
09
08
8B
khoâng ñöôïc ñòa chæ hoaù bit
TL1
20
07
06
05
04
03
02
01
00
8A
khoâng ñöôïc ñòa chæ hoaù bit
TL0
1F
Bank 3
89
khoâng ñöôïc ñòa chæ hoaù bit
TMOD
18
88
8F
8E
8D
8C
8B
8A
89
88
TCON
17
Bank 2
87
khoâng ñöôïc ñòa chæ hoaù bit
PCON
10
0F
Bank 1
83
khoâng ñöôïc ñòa chæ hoaù bit
DPH
08
82
khoâng ñöôïc ñòa chæ hoaù bit
DPL
07
Bank thanh ghi 0
81
khoâng ñöôïc ñòa chæ hoaù bit
SP
00
(maëc ñònh cho R0 -R7)
88
87
86
85
84
83
82
81
80
P0
RAM CAÙC THANH GHI CHÖÙC NAÊNG ÑAËC BIEÄT
- Boä nhôù trong 8951 bao goàm ROM vaø RAM. RAM trong 8951 bao goàm nhieàu thaønh 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.
- 8951 coù bgä nhôù theo caáu truùc Harvard: coù nhöõng vuøng boä nhôù rieâng bieät cho chöông trình vaø döõ lieäu. Chöông trình vaø döõ lieäu coù theå chöùa beân trong 8951 nhöng 8951 vaãn coù theå keát noái vôùi 64K byte boä nhôù chöông trình vaø 64K byte döõ lieäu.
Hai ñaëc tính caàn chuù yù laø:
u Caùc thanh ghi vaø caùc port xuaát nhaäp ñaõ ñöôïc ñònh vò (xaùc ñònh) trong boä nhôù vaø coù theå truy xuaát tröïc tieáp gioáng nhö caùc ñòa chæ boä nhôù khaùc.
u Ngaên xeáp beân trong Ram noäi nhoû hôn so vôùi Ram ngoaïi nhö trong caùc boä Microprocontroller khaùc.
RAM beân trong 8951 ñöôïc phaân chia nhö sau:
u Caùc bank thanh ghi coù ñòa chæ töø 00H ñeán 1FH.
u RAM ñòa chæ hoùa töøng bit coù ñòa chæ töø 20H ñeán 2FH.
u RAM ña duïng töø 30H ñeán 7FH.
u Caùc thanh ghi chöùc naêng ñaëc bieät töø 80H ñeán FFH.
RAM ña duïng:
- 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 1FH 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 coù theå truy xuaát töøng bit:
- 8951 chöùa 210 bit ñöôïc ñòa chæ hoùa, trong ñoù coù 128 bit coù chöùa caùc byte coù chöùa caùc ñòa chæ töø 20F ñeán 2FH vaø caùc bit coøn laïi chöùa trong nhoùm thanh ghi coù 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 microcontroller xöû lyù chung. Caùc bít coù theå ñöôïc ñaët, xoùa, AND, OR, …, vôùi 1 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å ñaït ñöôïc muïc ñích töông töï. Ngoaøi ra caùc port cuõng coù theå truy xuaát ñöôïc töøng bít.
- 128 bit truy xuaát töøng bit naøy cuõng coù theå truy xuaát nhö caùc byte hoaëc nhö caùc bit phuï thuoäc vaøo leänh ñöôïc duøng.
Caùc bank thanh ghi:
- 32 byte thaáp cuûa boä nhôù noäi ñöôïc daønh cho caùc bank thanh ghi. Boä leänh 8951 hoã trôï 8 thanh ghi coù teân laø R0 ñeán R7 vaø theo maëc ñònh sau khi reset heä thoáng, caùc thanh ghi naøy coù caùc ñòa chæ töø 00H ñeán 07H.
- Caùc leänh duøng caùc thanh ghi RO ñeán R7 seõ ngaén hôn vaø nhanh hôn so vôùi caùc leänh coù chöùc naêng töông öùng duøng kieåu ñòa chæ tröïc tieáp. Caùc döõ lieäu ñöôïc duøng thöôøng xuyeân neân duøng moät trong caùc thanh ghi naøy.
- Do coù 4 bank thanh ghi neân taïi moät thôøi ñieåm chæ coù moät bank thanh ghi ñöôïc truy xuaát bôûi caùc thanh ghi RO ñeán R7 ñeà chuyeån ñoåi vieäc truy xuaát caùc bank thanh ghi ta phaûi thay ñoåi caùc bit choïn bank trong thanh ghi traïng thaùi.
2. Caùc thanh ghi coù chöùc naêng ñaëc bieät:
- Caùc thanh ghi noäi cuûa 8951 ñöôïc truy xuaát ngaàm ñònh bôûi boä leänh.
- Caùc thanh ghi trong 8951 ñöôïc ñònh daïng nhö moät phaàn cuûa RAM treân chip vì vaäy moãi thanh ghi seõ coù moät ñòa chæ (ngoaïi tröø thanh ghi boä ñieám chöông trình vaø thanh ghi leänh vì caùc thanh ghi naøy hieám khi bò taùc ñoäng tröïc tieáp). Cuõng nhö R0 ñeán R7, 8951 coù 21 thanh ghi coù chöùc naêng ñaëc bieät (SFR: Special Function Register) ôû vuøng treân cuûa RAM noäi töø ñòa chæ 80H ñeán FFH.
Chuù yù: taát caû 128 ñòa chæ töø 80H ñeán FFH khoâng ñöôïc ñònh nghóa, chæ coù 21 thanh ghi coù chöùc naêng ñaëc bieät ñöôïc ñònh nghóa saün caùc ñòa chæ.
- Ngoaïi tröø thanh ghi A coù theå ñöôïc truy xuaát ngaàm nhö ñaõ noùi, ña soá caùc thanh ghi coù chöùc naêng ñaëc bieät SFR coù theå ñòa chæ hoùa töøng bit hoaëc byte.
Thanh ghi traïng thaùi chöông trình (PSW: Program Status Word):
Töø traïng thaùi chöông trình ôû ñòa chæ D0H ñöôïc toùm taét nhö sau:
BIT
SYMBOL
ADDRESS
DESCRIPTION
PSW.7
CY
D7H
Cary Flag
PSW.6
AC
D6H
Auxiliary Cary Flag
PSW.5
F0
D5H
Flag 0
PSW4
RS1
D4H
Register Bank Select 1
PSW.3
RS0
D3H
Register Bank Select 0
00=Bank 0; address 00H¸07H
01=Bank 1; address 08H¸0FH
10=Bank 2; address 10H¸17H
11=Bank 3; address 18H¸1FH
PSW.2
OV
D2H
Overlow Flag
PSW.1
-
D1H
Reserved
PSW.0
P
DOH
Even Parity Flag
Chöùc naêng töøng bit traïng thaùi chöông trình
Côø Carry CY (Carry Flag):
- Côø nhôù coù taùc duïng keùp. Thoâng thöôøng noù ñöôïc duøng cho caùc leänh toaùn hoïc: C=1 neáu pheùp toaùn coäng coù söï traøn hoaëc pheùp tröø coù möôïn vaø ngöôïc laïi C= 0 neáu pheùp toaùn coäng khoâng traøn vaø pheùp tröø khoâng coù möôïn.
Côø Carry phuï AC (Auxiliary Carry Flag):
- Khi coäng nhöõng giaù trò BCD (Binary Code Decimal), côø nhôù phuï AC ñöôïc set neáu keát quaû 4 bit thaáp naèm trong phaïm vi ñieàu khieån 0AH¸ 0FH. Ngöôïc laïi AC= 0
Côø 0 (Flag 0):
Côø 0 (F0) laø 1 bit côø ña duïng duøng cho caùc öùng duïng cuûa ngöôøi duøng.
Nhöõng bit choïn bank thanh ghi truy xuaát:
- RS1 vaø RS0 quyeát ñònh daõy thanh ghi tích cöïc. Chuùng ñöôïc xoùa sau khi reset heä thoáng vaø ñöôïc thay ñoåi bôûi phaàn meàm khi caàn thieát.
- Tuøy theo RS1, RS0 = 00, 01, 10, 11 seõ ñöôïc choïn Bank tích cöïc töông öùng laø Bank 0, Bank1, Bank2, Bank3.
RS1
RS0
BANK
0
0
0
0
1
1
1
0
2
1
1
3
Côø traøn OV (Over Flag):
- Côø traøn ñöôïc set sau moät hoaït ñoäng coäng hoaëc tröø neáu coù söï traøn toaùn hoïc. Khi caùc soá coù daáu ñöôïc coäng hoaëc tröø vôùi nhau, phaàn meàm coù theå kieåm tra bit naøy ñeå xaùc ñònh xem keát quaû coù naèm trong taàm xaùc ñònh khoâng. Khi caùc soá khoâng coù daáu ñöôïc coäng bit OV ñöôïc boû qua. Caùc keát quaû lôùn hôn +127 hoaëc nhoû hôn –128 thì bit OV = 1.
Bit Parity (P):
- Bit töï ñoäng ñöôïc set hay Clear ôû moãi chu kyø maùy ñeå laäp Parity chaün vôùi thanh ghi A. Söï ñeám caùc bit 1 trong thanh ghi A coäng vôùi bit Parity luoân luoân chaün. Ví duï A chöùa 10101101B thì bit P set leân moät ñeå toång soá bit 1 trong A vaø P taïo thaønh soá chaün.
- Bit Parity thöôøng ñöôïc duøng trong söï keát hôïp vôùi nhöõng thuû tuïc cuûa Port noái tieáp ñeå taïo ra bit Parity tröôùc khi phañt ñi hoaëc kieåm tra bit Parity sau khi thu.
Thanh ghi B :
- Thanh ghi B ôû ñòa chæ F0H ñöôïc duøng cuøng vôùi thanh ghi A cho caùc pheùp toaùn nhaân chia. Leänh MUL AB Ü seõ nhaän nhöõng giaù trò khoâng daáu 8 bit trong hai thanh ghi A vaø B, roài traû veà keát quaû 16 bit trong A (byte cao) vaø B (byte thaáp). Leänh DIV AB Ü laáy A chia B, keát quaû nguyeân ñaët vaøo A, soá dö ñaët vaøo B.
- Thanh ghi B coù theå ñöôïc duøng nhö moät thanh ghi ñeäm trung gian ña muïc ñích. Noù laø nhöõng bit ñònh vò thoâng qua nhöõng ñòa chæ töø F0H¸F7H.
Con troû Ngaên xeáp SP (Stack Pointer):
- Con troû ngaên xeáp laø moät thanh ghi 8 bit ôû ñòa chæ 81H. Noù chöùa ñòa chæ cuûa cuûa byte döõ lieäu hieän haønh treân ñænh ngaên xeáp. Caùc leänh treân ngaên xeáp bao goàm caùc leänh caát döõ lieäu vaøo ngaên xeáp (PUSH) vaø laáy döõ lieäu ra khoûi ngaên xeáp (POP). 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 ra khoûi ngaên xeáp seõ laøm giaûm SP. Ngaên xeáp cuûa 8031/8051 ñöôïc giöõ trong RAM noäi vaø 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 8951.
- Ñeå khôûi ñoäng SP vôùi ngaên xeáp baét ñaàu taïi ñòa chæ 60H, caùc leänh sau ñaây ñöôïc duøng:
MOV SP, #5F
- Vôùi leänh treân thì ngaên xeáp cuûa 8951 chæ coù 32 byte vì ñòa chæ cao nhaát cuûa RAM treân chip laø 7FH. Sôõ dó giaù trò 5FH ñöôïc naïp vaøo SP vì SP taêng leân 60H tröôùc khi caát byte döõ lieäu.
- Khi Reset 8951, SP seõ mang giaù trò maëc ñònh laø 07H vaø döõ lieäu ñaàu tieân seõ ñöôïc caát vaøo oâ nhôù ngaên xeáp coù ñòa chæ 08H. Neáu phaàn meàm öùng duïng khoâng khôûi ñoäng SP moät giaù trò môùi thì bank thanh ghi 1 coù theå caû 2 vaø 3 seõ khoâng duøng ñöôïc vì vuøng RAM naøy ñaõ ñöôïc duøng laøm ngaên xeáp. Ngaên xeáp ñöôïc truy xuaát tröïc tieáp baèng caùc leänh PUSH vaø POP ñeå löu tröõ taïm thôøi vaø laáy laïi döõ lieäu, hoaëc truy xuaát ngaàm baèng leänh goïi chöông trình con (ACALL, LCALL) vaø caùc leänh trôû veà (RET, RETI) ñeå löu tröõ giaù trò cuûa boä ñeám chöông trình khi baét ñaàu thöïc hieän chöông trình con vaø laáy laïi khi keát thuùc chöông trình con …
Con troû döõ lieäu DPTR (Data Pointer) :
-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
MOV @DPTR, A
- Leänh ñaàu tieân duøng ñeå naïp 55H vaøo thanh ghi A. Leänh thöù hai duøng ñeå naïp ñòa chæ cuûa oâ nhôù caàn löu giaù trò 55H vaøo con troû döõ lieäu DPTR. Leänh thöù ba seõ di chuyeån noäi dung thanh ghi A (laø 55H) vaøo oâ nhôù RAM beân ngoaøi coù ñòa chæ chöùa trong DPTR (laø 1000H)
Caùc thanh ghi Port (Port Register):
- Caùc Port cuûa 8951 bao goàm Port0 ôû ñòa chæ 80H, Port1 ôû ñòa chæ 90H, Port2 ôû ñòa chæ A0H, vaø Port3 ôû ñòa chæ B0H. Taát caû caùc Port naøy ñeàu coù theå truy xuaát töøng bit neân raát thuaän tieän trong khaû naêng giao tieáp.
Caùc thanh ghi Timer (Timer Register):
- 8951 coù chöùa hai boä ñònh thôøi/boä ñeám16 bit ñöôïc duøng cho vieäc ñònh thôøi ñöôïc ñeám söï kieän. Timer0 ôû ñòa chæ 8AH (TL0: byte thaáp) vaø 8CH (TH0: byte cao). Timer1 ôû ñòa chæ 8BH (TL1: byte thaáp) vaø 8DH (TH1: byte cao). Vieäc khôûi ñoäng timer ñöôïc SET bôûi 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.
Caùc thanh ghi Port noái tieáp (Serial Port Register):
- 8951 chöùa moät Port noái tieáp 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 giao tieáp noái tieáp vôùi caùc IC khaùc. Moät thanh ghi ñeäm döû lieäu noái tieáp (SBUF) ôû ñòa chæ 99H seõdöõ caûõhai döõ lieäu truyeàn vaø döõ lieäu nhaäp. Khi truyeàn döõ lieäu ghi leân SBUF, khi nhaän döõ lieäu thì ñoïc SBUF. Caùc mode vaän khaùc nhau ñöôïc laäp trình qua thanh ghi ñieàu khieån Port noái tieáp (SCON) ñöôïc ñòa chæ hoùa töøng bit ôû ñòa chæ 98H.
Caùc thanh ghi ngaét (Interrupt Register):
- 8951 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 bò reset heä thoáng vaø seõ ñöôïc cho pheùp baèng vieät ghi thanh ghi cho pheùp ngaét (IE) ôû ñòa chæ A8H. Caû hai ñöôïc ñòa chæ hoùa töøng bit.
Thanh ghi ñieàu khieån nguoàn PCON (Power Control Register):
- Thanh ghi PCON khoâng coù bit ñònh vò. Noù ôû ñòa chæ 87H chöùa nhieàu bit ñieàu khieån. Thanh ghi PCON ñöôïc toùm taét nhö sau:
Bit 7 (SMOD): Bit coù toác ñoä Baud ôû mode 1, 2, 3 ôû Port noái tieáp khi set.
Bit 6, 5, 4: Khoâng coù ñòa chæ.
Bit 3 (GF1) : Bit côø ña naêng 1.
Bit 2 (GF0) : Bit côø ña naêng 2 .
Bit 1 * (PD) : Set ñeå khôûi ñoäng mode Power Down vaø thoaùt ñeå reset.
Bit 0 (IDL): Set ñeå khôûi ñoäng mode Idle vaø thoaùt khi ngaét maïch hoaëc reset.
Caùc bit ñieàu khieån Power Down vaø Idle coù taùc duïng chính trong taát caû caùc IC hoï MSC-51 nhöng chæ ñöôïc thi haønh trong söï bieân dòch cuûa CMOS.
3. Boä nhôù ngoaøi (external memory):
- 8951 coù khaû naêng môû roâng boä nhôù leân ñeán 64K byte boä nhôù chöông trình vaø 64k byte boä nhôù döõ lieäu ngoaøi. Do ñoù coù theå duøng theâm RAM vaø ROM neáu caàn.
- Khi duøng boä nhôù ngoaøi, Port0 khoâng coøn chöùc naêng I/O nöõa. Noù ñöôïc keát hôïp 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 cuûa bus ñòa chæ chæ khi baét ñaàu moãi chu kyø boä nhôù. Port ñöôïc cho laø byte cao cuûa bus ñòa chæ.
Truy xuaát boä nhôù maõ ngoaøi (Acessing External Code Memory):
Boä nhôù chöông trình beân ngoaøi laø boä nhôù ROM ñöôïc cho pheùp cuûa tín hieäu PSEN\. Söï keát noái phaàn cöùng cuûa boä nhôù EPROM nhö sau:
Port 0
EA
ALE
Port 2
PSEN
8951
D0 ¸ D7
A0 ¸ A7
A8 ¸ A15
OE
74HC373
O D
G
EPROM
Hình 1.4 : Accessing External Code Memory (Truy xuaát boä nhôù maõ ngoaøi)
- Trong moät chu kyø maùy tieâu bieåu, tín hieäu ALE tích cöïc 2 laàn. Laàn thöù nhaát cho pheùp 74HC373 môû coång choát ñòa chæ byte thaáp, khi ALE xuoáng 0 thì byte thaáp vaø byte cao cuûa boä ñeám chöông trình ñeàu coù nhöng EPROM chöa xuaát vì PSEN\ chöa tích cöïc, khi tín hieäu leân moät trôû laïi thì Port 0 ñaõ coù döõ lieäu laø Opcode. ALE tích cöïc laàn thöù hai ñöôïc giaûi thích töông töï vaø byte 2 ñöôïc ñoïc töø boä nhôù chöông trình. Neáu leänh ñang hieän haønh laø leänh 1 byte thì CPU chæ ñoïc Opcode, coøn byte thöù hai boû ñi.
Truy xuaát boä nhôù döõ lieäu ngoaøi (Accessing External Data Memory):
- Boä nhôù döõ lieäu ngoaøi laø moät boä nhôù RAM ñöôïc ñoïc hoaëc ghi khi ñöôïc cho pheùp cuûa tín hieäu RD\ vaø WR. Hai tín hieäu naøy naèm ôû chaân P3.7 (RD) vaø P3.6 (WR). Leänh MOVX ñöôïc duøng ñeå truy xuaát boä nhôù döõ lieäu ngoaøi vaø duøng moät boä ñeäm döõ lieäu 16 bit (DPTR), R0 hoaëc R1 nhö laø moät thanh ghi ñòa chæ.
- Caùc RAM coù theå giao tieáp vôùi 8951 töông töï caùch thöùc nhö EPROM ngoaïi tröø chaân RD\ cuûa 8951 noái vôùi chaân OE\ (Output Enable) cuûa RAM vaø chaân WR\ cuûa 8951 noái vôùi chaânWE \cuûa RAM. Söï noái caùc bus ñòa chæ vaø döõ lieäu töông töï nhö caùch noái cuûa EPROM.
Port 0
EA\
ALE
Port 2
RD\
WR\
8951
D0 ¸ D7
A0 ¸ A7
A8 ¸ A15
OE\
WE\
74HC373
O D
G
RAM
Söï giaûi maõ ñòa chæ (Address Decoding):
- Söï giaûi maõ ñòa chæ laø moät yeâu caàu taát yeáu ñeå choïn EPROM, RAM, 8279, … Söï giaûi maõ ñòa chæ ñoái vôùi 8951 ñeå choïn caùc vuøng nhôù ngoaøi nhö caùc vi ñieàu khieån. Neáu caùc con EPROM hoaëc RAM 8K ñöôïc duøng thì caùc bus ñòa chæ phaûi ñöôïc giaûi maõ ñeå choïn caùc IC nhôù naèm trong phaïm vi giôùi haïn 8K: 0000H¸1FFFH, 2000H¸3FFFH, …
- Moät caùch cuï theå, IC giaûi maõ 74HC138 ñöôïc duøng vôùi nhöõng ngoõ ra cuûa noù ñöôïc noái vôùi nhöõng ngoõ vaøo choïn Chip CS (Chip Select) treân nhöõng IC nhôù EPROM, RAM, … Hình sau ñaây cho pheùp keát noái nhieàu EPRGM vaø RAM.
CS
CS
D0 - D7
OE
EPROM
A0 ¸ A12
8K Bytes
CS
C
B
A
E
E0
E 1
0
1
2
3
4
5
6
7
CS
CS
OE D0 - D7
W
RAM
A0 ¸ A12
8K Bytes
CS
PSEN\
RD\
WR\
Address Bus (A0 ¸ A15)
Data Bus (D0 ¸ D7)
Select other
EPROM/RAM
74HC138
Hình 1.5 : Address Decoding (Giaûi maõ ñòa chæ)
Söï ñeø leân nhau cuûa caùc vuøng nhôù döõ lieäu ngoaøi:
- Vì boä nhôù chöông trình laø ROM, neân naåy sinh moät vaán ñeà baát tieän khi phaùt trieån phaàn meàm cho vi ñieàu khieån. Moät nhöôïc ñieåm chung cuûa 8951 laø caùc vuøng nhôù döõ lieäu ngoaøi naèm ñeø leân nhau, vì tín hieäu PSEN\ ñöôïc duøng ñeå ñoïc boä nhôù maõ ngoaøi vaø tín hieäu RD\ ñöôïc duøng ñeå ñoïc boä nhôù döõ lieäu, neân moät boä nhôù RAM coù theå chöùa caû chöông trình vaø döõ lieäu baèng caùch noái ñöôøng OE\ cuûa RAMù ñeán ngoõ ra moät coång AND coù hai ngoõ vaøo PSEN\ vaø RD\. Sô ñoà maïch nhö hình sau cho pheùp cho pheùp boä nhôù RAM coù hai chöùc naêng vöøa laø boä nhôù chöông trình vöøa laø boä nhôù döõ lieäu:
RAM
WR\
OE\
PSEN\
WR\
RD
Hình 1.6 : Overlapping the External code and data space
-Vaäy moät chöông trình coù theå ñöôïc taûi vaøo RAM baèng caùch xem noù nhö boä nhôù döõ lieäu vaø thi haønh chöông trình baêng caùch xem noù nhö boä nhôù chöông trình.
Hoaït ñoäng Reset:
Reset
10 mF
8.2 KW
100W
+5V
- 8951 coù ngoõ vaøo reset RST taùc ñoäng ôû möùc cao trong khoaûng thôøi gian 2 chu kyø xung maùy, sau ñoù xuoáng möùc thaáp ñeå 8951 baét ñaàu laøm vieäc. RST coù theå kích baèng tay baèng moät phím nhaán thöôøng hôû, sô ñoà maïch reset nhö sau:
Hình 1.7 : Manual Reset
Traïng thaùi cuûa taát caû caùc thanh ghi trong 8951 sau khi reset heä thoáng ñöôïc toùm taét nhö sau:
Thanh ghi
Noäi dung
Ñeám chöông trình PC
Thanh ghi tích luõyA
Thanh ghi B
Thanh ghi thaùi PSW
SP
DPRT
Port 0 ñeán port 3
IP
IE
Caùc thanh ghi ñònh thôøi
SCON SBUF
PCON (HMOS)
PCON (CMOS)
0000H
00H
00H
00H
07H
0000H
FFH
XXX0 0000 B
0X0X 0000 B
00H
00H
00H
0XXX XXXXH
0XXX 0000 B
-Thanh ghi quan troïng nhaát laø thanh ghi boä ñeám chöông trình PC ñöôïc reset taïi ñòa chæ 0000H. Khi ngoõ vaøo RST xuoáng möùc thaáp, chöông trình luoân baét ñaàu taïi ñòa chæ 0000H cuûa boä nhôù chöông trình. Noäi dung cuûa RAM treân chip khoâng bò thay ñoåi bôûi taùc ñoäng cuûa ngoõ vaøo reset.
II. HOAÏT ÑOÄNG TIMER CUÛA 8951:
1. Giôùi Thieäu:
- Boä ñònh thôøi cuûa Timer laø moät chuoãi caùc Flip Flop ñöôïc chia laøm 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 laø xung clock cuûa Flip Flop thöù hai maø noù cuõng chia taàn soá clock naøy cho 2 vaø cöù tieáp tuïc.
Vì moãi taàng keá tieáp chia cho 2, neân Timer n taàng phaûi chia taàn soá clock ngoõ vaøo cho 2n. Ngoõ ra cuûa taàng cuoái cuøng laø clock cuûa Flip Flop traøn Timer hoaëc côø maø noù kieåm tra bôûi phaàn meàm hoaëc sinh ra ngaét. Giaù trò nhò phaân trong caùc FF cuûa boä Timer coù theå ñöôïc nghæ nhö ñeám xung clock hoaëc caùc söï kieän quan troïng bôûi vì Timer ñöôïc khôûi ñoäng. Ví duï Timer 16 bit coù theå ñeám ñeán töø FFFFH sang 0000H.
(LSB) MSB FLAG
0 1 2 3 4 5 6 7
D Q
Q0
D Q
Q1
D Q
Q2
D Q
Q3
Flag FF
Clock
Q0 (LSB)
Q1
Q2 (MSB)
Count
Flag
Hình 1.8 : Timer Flip-Flops
- Hoaït ñoäng cuûa Timer ñôn giaûn 3 bit ñöôïc minh hoïa nhö sau:
Hình 1.9 : Bieåu Ñoà Thôøi Gian
- Trong hình treân moãi taàng laø moät FF loaïi D phuû ñònh taùc ñoäng caïnh xuoáng ñöôïc hoaït ñoäng ôû mode chia cho 2 (ngoõ ra Q\ ñöôïc noái vaøo D). FF côø laø moät boä choát ñôn giaûn loaïi D ñöôïc set bôûi taàng cuoái cuøng trong Timer. Trong bieåu ñoà thôøi gian, taàng ñaàu ñoåi traïng thaùi ôû ½ taàn soá clock, taàng thöù hai ñoåi traïng thaùi ôû taàn soá ¼ taàn soá clock … Soá ñeám ñöôïc bieát ôû daïng thaäp phaân vaø ñöôïc kieåm tra laïi deã daøng bôûi vieäc kieåm tra caùc taàng cuûa 3 FF. Ví duï soá ñeám “4” xuaát hieän khi Q2=1, Q1=0, Q0=0 (410=1002).
- Caùc Timer ñöôïc öùng duïng thöïc teá cho caùc hoaït ñoäng ñònh höôùng. 8951 coù 2 boä Timer 16 bit, moãi Timer coù 4 mode hoaït ñoäng. Caùc Timer duøng ñeå ñeám giôø, ñeám caùc söï kieän caàn thieát vaø söï sinh ra toác ñoä cuûa toác ñoä Baud bôûi söï gaén lieàn Port noái tieáp.
- Moãi söï ñònh thôøi laø moät Timer 16 bit, do ñoù taàng cuoái cuøng laø taàng thöù 16 seõ chia taàn soá clock vaøo cho 216 = 65.536.
- Trong caùc öùng duïng ñònh thôøi, 1 Timer ñöôï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 Timer. Côø ñöôïc duøng ñeå ñoàng boä chöông trình ñeå thöïc hieän moät hoaït ñoäng nhö vieäc ñöa tôùi 1 taàng caùc ngoõ vaøo hoaëc gôûi döõ lieäu ñeám ngoõ ra. Caùc öùng duïng khaùc coù söû duïng vieäc ghi giôø ñeàu ñeàu cuûa Timer ñeå ño thôøi gian ñaõ troâi qua hai traïng thaùi (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 söï kieän ñoù, töùc thôøi gian troâi qua giöõa caùc söï kieän.
- Caùc Timer cuûa 8951 ñöôïc truy xuaát bôûi vieäc duøng 6 thanh ghi chöùc naêng ñaëc bieät nhö sau:
Timer SFR
Purpose
Address
Bit-Addressable
TCON
Control
88H
YES
TMOD
Mode
89H
NO
TL0
Timer 0 low-byte
8AH
NO
TL1
Timer 1 low-byte
8BH
NO
TH0
Timer 0 high-byte
8CH
NO
TH1
Timer 1 high-byte
8DH
NO
2. Thanh ghi mode timer tmod (TIMER MODE REGITER):
- Than` ghi mode goàm hai nhoùm 4 bit laø: 4 bit thaáp ñaët mode hoaït ñoäng cho Timer 0 vaø 4 bit cao ñaët mode hoaït ñoäng cho Timer 1. 8 bit cuûa thanh ghi TMOD ñöôïc toùm taét nhö sau:
Bit
Name
Timer
Description
7
GATE
1
Khi GATE = 1, Timer chæ laøm vieäc khi INT1=1
6
C/T
1
Bit cho ñeám söï kieän hay ghi giôø
C/T = 1 : Ñeám söï kieän
C/T = 0 : Ghi giôø ñeàu ñaën
5
M1
1
Bit choïn mode cuûa Timer 1
4
M0
1
Bit choïn mode cuûa Timer 1
3
GATE
0
Bit coång cuûa Timer 0
2
C/T
0
Bit choïn Counter/Timer cuûa Timer 0
1
M1
0
Bit choïn mode cuûa Timer 0
0
M0
0
Bit choïn mode cuûa Timer 0
Hai bit M0 vaø M1 cuûa TMOD ñeå choïn mode cho Timer 0 hoaëc Timer 1.
M1
M0
MODE
DESCRIPTION
0
0
0
Mode Timer 13 bit (mode 8048)
0
1
1
Mode Timer 16 bit
1
0
2
Mode töï ñoäng naïp 8 bit
1
1
3
Mode Timer taùch ra :
Timer 0 : TL0 laø Timer 8 bit ñöôïc ñieàu khieån bôûi caùc bit cuûa Timer 0. TH0 töông töï nhöng ñöôïc ñieàu khieån bôûi caùc bit cuûa mode Timer 1.
Timer 1 : Ñöôïc ngöøng laïi.
- TMOD khoâng coù bit ñòn` vò, noù thöôøng ñöôïc LOAD moät laàn bôûi phaàn meàm ôû ñaàu chöông trình ñeå khôûi ñoäng mode Timer. Sau ñoù söï ñònh giôø coù theå döøng laïi, ñöôïc khôûi ñoäng laïi nhö theá bôûi söï truy xuaát caùc thanh ghi chöùc naêng ñaëc bieät cuûa Timer khaùc.
3. Thanh ghi ñieàu khieån timer tcon (TIMER CONTROL REGISTER) :
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ù bit ñònh vò. Hoaït ñoäng cuûa töøng bit ñöôïc toùm taét nhö sau:
Bit
Symbol
Bit Address
Description
TCON.7
TF1
8FH
Côø traøn Timer 1 ñöôïc set bôûi phaàn cöùng ôû söï traøn, ñöôïc xoùabôûi phaàn meàm hoaëc bôûi phaàn cöùng khi caùc vectôxöû lyù ñeán thuû tuïc phuïc vuï ngaét ISR
TCON.6
TR1
8EH
Bit ñieàu khieån chaïy Timer 1 ñöôïc set hoaëc xoùa bôûi phaàn meàm ñeå chaïy hoaëc ngöng chaïy Timer.
TCON.5
TF0
8DH
Côø traøn Timer 0(hoaït ñoäng töông töï TF1)
TCON.4
TR0
8CH
Bit ñieàu khieån chaïy Timer 0 (gioáng TR1)
TCON.3
IE1
8BH
Côø kieåu ngaét 1 ngoaøi. Khi caïnh xuoáng xuaát hieän treân INT1 thì IE1 ñöôïc xoùa bôûi phaàn meàm hoaëc phaàn cöùng khi CPU ñònh höôùng ñeán thuû tuïc phuïc vuï ngaét ngoaøi.
TCON.2
IT1
8AH
Côø kieåu ngaét 1 ngoaøi ñöôïc set hoaëc xoùa baèng phaán meàm bôûi caïnh kích hoaït bôûi söï ngaét nggaøi.
TCON.1
IE0
89H
Côø caïnh ngaét 0 ngoaøi
TCON
IT0
88H
Côø kieåu ngaét 0 ngoaøi.
4. Caùc mode vaø côø traøn (TIMER MODES AND OVERFLOW) :
- 8951 coù 2ø Timer laø Timer 0 vaø timer 1. Ta duøng kyù hieäu TLx vaø Thx ñeå chæ 2 thanh ghi byte thaáp vaø byte cao cuûa Timer 0 hoaëc Tmer 1.
TLx (5 bit)
THx (8 bit)
TFx
Timer Clock
4.1. Mode Timer 13 bit (MODE 0) :
Overflow
- Mode 0 laø mode Timer 13 bit, trong ñoù byte cao cuûa Timer (Thx) ñöôïc ñaët thaáp vaø 5 bit troïng soá thaáp nhaát cuûa byte thaáp Timer (TLx) ñaët cao ñeå hôïp thaønh Timer 13 bit. 3 bit cao cuûa TLx khoâng duøng.
TLx (8 bit)
THx (8 bit)
TFx
Timer Clock
4.2. Mode Timer 16 bit (MODE 1):
Overflow
- Mode 1 laø mode Timer 16 bit, töông töï nhö mode 0 ngoaïi tröø Timer naøy hoaït ñoäng nhö moät Timer ñ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ä ñeám Timer taêng leân 0000H, 0001H, 0002H, . . ., vaø moät söï traøn seõ xuaát hieän khi coù söï chuyeån treân boä ñeám Timer töø FFFH sang 0000H vaø seõ set côø traøn Time, sau ñoù Timer ñ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.
- Bit coù troïng soá lôùn nhaát (MSB) cuûa giaù trò trong thanh ghi Timer laø bit 7 cuûa THx vaø bit coù troïng soá thaáp nhaát (LSB) daø bit 0 cuûa TLx. Bit LSB ñoåi traïng thaùi ôû taàn soá clock vaøo ñöôïc chia 216 = 65.536.
- Caùc thanh ghi Timer TLx vaø Thx coù theå ñöôïc ñoïc hoaëc ghi taïi baát kyø thôøi ñieåm naøo bôûi phaàn meàm.
4..3. Mode töï ñoäng naïp 8 bit (MODE 2) :
TL x (8 bit)
TFx
TH x (8 bit)
Timer Clock
Overflow
Reload
Mode 2 laø mode töï ñoäng naïp 8 bit, byte thaáp TLx cuûa Timer hoaït ñoäng nhö moät Timer 8 bit trong khi byte cao THx cuûa Timer giöõ giaù trò Reload. 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. Mode naøy thì phuø hôïp bôûi vì caùc söï traøn xuaát hieän cuï theå maø moãi luùc nghæ thanh ghi TMOD vaø THx ñöôïc khôûi ñoäng.
4.4 Mode Timer taùch ra (MODE 3):
TL1 (8 bit)
TH1 (8 bit)
TL1 (8 bit)
TH0 (8 bit)
TF0
TF1
Timer Clock
Timer Clock
Timer Clock
Overflow
Overflow
Overflow
- Mode 3 laø mode Timer taùch ra vaø laø söï khaùc bieät cho moãi Timer.
- Timer 0 ôû mode 3 ñöôïc chia laø 2 timer 8 bit. TL0 vaø TH0 hoaït ñoäng nhö nhöõng Timer rieâng leû vôùi söï traøn seõ set caùc bit TL0 vaø TF1 töông öùng.
- Timer 1 bò döøng laïi ôû mode 3, nhöng coù theå ñöôïc khôûi ñoäng bôûi vieäc ngaét noù vaøo moät trong caùc mode khaùc. Chæ coù nhöôïc ñieåm laø côø traøn TF1 cuûa Timer 1 khoâng bò aûnh höôûng bôûi caùc söï traøn cuûa Timer 1 bôûi vì TF1 ñöôïc noái vôùi TH0.
- Mode 3 cung caáp 1 Timer ngoaïi 8 bit laø Timer thöù ba cuûa 8951. Khi vaøo Timer 0 ôû mode 3, Timer coù theå hoaït ñoäng hoaëc taét bôûi söï ngaét noù ra ngoaøi vaø vaøo trong mode cuûa chính noù hoaëc 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 Interrupt.
5. Caùc nguoàn xung clock (CLOCK SOURCES):
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.
On Chip
Osillator
¸12
C/T
T0 or T1
pin
Timer
Clock
0 = Up (internal Timing)
1 = Down (Event Counting)
Crystal
Hình 1.10 : Clock Source.
5.1 Söï baám giôø beân trong (Interval Timing):
- Neáu bit C/T = 0 thì hoaït ñoäng cuûa Timer lieân tuïc ñöôïc choïn vaøo boä Timer ñöôïc ghi giôø töø dao ñoäng treân Chip. Moät boä chia 12 ñöôïc theâm vaøo ñeå giaûm taàn soá clock ñeán 1 giaù trò phuø hôïp vôùi caùc öùng duïng. Caùc thanh ghi TLx vaø THx taêng ôû toác ñoä 1/12 laàn taàn soá dao ñoäng treân Chip. Neáu duøng thaïch anh 12MHz thì seõ ñöa ñeán toác ñoä clock 1MHz.
- Caùc söï traøn Timer sinh 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 LOAD vaøo caùc thanh ghi THx vaø TLx.
5.2 Söï ñeám caùc söï kieän (Event Counting):
- Neáu bit C/T = 1 thì boä Timer ñöôïc ghi giôø töø nguoàn beân ngoaøi trong nhieàu öùng duïng, nguoàn beân ngoaøi naøy cung caáp 1 söï ñònh giôø vôùi 1 xung treân söï xaûy ra cuûa söï kieän. Söï ñònh 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 Timer. 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.
- Nguoàn xung clock beân ngoaøi ñöa vaøo chaân P3.4 laø ngoõ nhaäp cuûa xung clock bôûi Timer 0 (T0) vaø P3.5 laø ngoõ nhaäp cuûa xung clock bôûi Timer 1 (T1).
- Trong caùc öùng duïng ñeám caùc thanh ghi Timer ñöôïc taêng trong ñaùp öùng cuûa söï chuyeån traïng thaùi töø 1 sang 0 ôû ngoõ nhaäp Tx. Ngoõ nhaäp beân ngoaøi ñöôïc thöû trong suoát S5P2 cuûa moïi chu kyø maùy: Do ñoù khi ngoõ nhaäp ñöa tôùi möùc cao trong moät chu kyø vaø möùc thaáp trong moät chu kyø keá tieáp thì boä ñeám taêng leân moät. Giaù trò môùi xuaát hieän trong caùc thanh ghi Timer trong suoát S5P1 cuûa chu kyø theo sau moät söï chuyeån ñoåi. Bôûi vì noù chieám 2 chu kyø maùy (2ms) ñeå nhaän ra söï chuyeån ñoåi töø 1 sang 0, neân taàn soá beân ngoaøi lôùn nhaát laø 500KHz neáu dao ñoäng thaïch anh 12 MHz.
6. Söï baét ñaàu, keát thuùc vaø söï ñieàu khieån caùc timer (STARTING, STOPPING AND CONTROLLING THE TIMER):
- 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 Timer. Ñeå baéêt ñaàu caùc Timer ta set bit TRx vaø ñeå keát thuùc Timer ta Clear TRx. Ví duï Timer 0 ñöôïc baét ñaàu bôûi leänh SETB TR0 vaø ñöôïc keát thuùc bôûi leänh CLR TR0 (bit Gate= 0). Bit TRx bò xoùa sau söï reset heä thoáng, do ñoù caùc Timer bò caám baèng söï maëc ñònh.
- Theâm phöông phaùp nöõa ñeå ñieàu khieån caùc Timer 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. Giaû söû xung ñöa vaøo chaân INT0 ta k`ôûi ñoäng Timer 0 cho mode 1 laø mode Timer 16 bit vôùi TL0/TH0 = 0000H, GATE = 1, TR0 = 1. Nhö vaäy khi INT0 = 1 thì Timer “ñöôïc môû coång” vaø ghi giôø vôùi toác ñoä cuûa taàn soá 1MHz. Khi INT0 xuoáng thaáp thì Timer “ñoùng coång” vaø khoaûng thôøi gian cuûa xung tính baèng ms laø söï ñeám ñöôïc trong thanh ghi TL0/TH0.
INTO (P3.2)
16 Bit
0 = Up 0 = Up
1 = Down 1 = Down
On Chip
Osillator
¸ 12
TL0
TH0
TF0
C/T
TR0
GATE
12 MHz
T0 (P3.4)
Hình 1.11 : Timer Operating Mode 1.
7. Söï khôûi ñoäng vaø truy xuaát caùc thanh ghi timer:
- Caùc Timer ñöôïc khôûi ñoäng 1 laàn ôû ñaàu chöông trình ñeå ñaët mode hoaït ñoäng cho chuùng. Sau ñoù trong chöông trình caùc Timer ñöôïc baét ñaàu, ñöôïc xoùa, caùc thanh ghi Timer ñöôïc ñoïc vaø caäp nhaät . . . theo yeâu caàu cuûa töøng öùng duïng cuï theå.
Mode Timer TMOD laø thanh ghi ñaàu tieân ñöôïc khôûi gaùn, bôûi vì ñaët mode hoaït ñoäng cho caùc Timer. Ví duï khôûi ñoäng cho Timer 1 hoaït ñoäng ôû mode 1 (mode Timer 16bit) vaø ñöôïc ghi giôø baèng dao ñoäng treân Chip ta duøng leänh: MOV TMOD,# 00001000B.
Trong leänh naøy M1 = 0, M0 = 1 ñeå vaøo mode 1 vaø C/T 5 0, GATE=0 ñeå cho pheùp ghi giôø beân trong ñoàng thôøi xoùa caùc bit mode cuûa Timer 0. Sau leänh treân Timer vaãn chöa ñeám giôø, noù chæ baét ñaàu ñeám giôø khi set bit ñieààu khieåân chaïy TR1 cuûa noù.
- Neáu ta khoâng khôûi gaùn giaù trò ñaàu cho caùc thanh ghi TLx/THx thì Timer seõ baét ñaàu ñeám töø 0000H leân vaø khi traøn töø FFFFH sang 0000H noù seõ baét ñaàu traøn TFx roài tieáp tuïc ñeám töø 0000H leân tieáp . . .
- Neáu ta khôûi gaùn giaù trò ñaàu cho TLx/THx, thì Timer seõ baét ñaàu ñeám töø giaù trò khôûi gaùn ñoù leân nhöng khi traøn töø FFFFH sang 0000H laïi ñeám töø 0000H leân.
- Chuù yù raèng 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å Timer 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.
- Ñaëc bieät nhöõng söï khôûi gaùn nhoû hôn 256 ms, ta seõ goïi mode Timer töï ñoäng naïp 8 bit cuûa mode 2. Sau khi khôûi gaùn giaù trò ñaàu vaøo THx, khi set bit TRx thì Timer seõ baét ñaàu ñeám giaù trò khôûi gaùn vaø khi traøn töø FFH sang 00H trong TLx, côø TFx töï ñoäng ñöôïc set ñoàng thôøi giaù trò khôûi gaùn maø ta khôûi gañn cho Thx ñöôïc naïp töï ñoäng vaøo TLx vaø Timer laïi ñöôïc ñeám töø giaù trò khôûi gaùn naøy leân. Noùi caùch khaùc, sau moãi traøn ta khoâng caàn khôûi gaùn laïi cho caùc thanh ghi Timer maø chuùng vaãn ñeám ñöôïc laïi töø giaù trò ban ñaàu.
8. Söï ñoïc thanh ghi timer treân tuyeán:
- Trong moät soá öùng duïng caàn thieát ñoïc giaù trò trong caùc thanh ghi Timer treân tuyeán, coù moät vaán ñeà tieàm naêng ñôn giaûn ñeå baûo veä laïi phaàn meàm. Bôûi vì 2 thanh ghi Timer phaûi ñöôïc ñoïc, neân “loãi giai ñoaïn” coù theå xuaát hieän neáu byte traøn vaø byte cao giöõa 2 hoaït ñoäng ñoïc. Moät giaûi phaùp ñeå khaéc phuïc laø ñoïc byte cao tröôùc, sau ñoù ñoïc byte thaáp, vaø ñoïc laïi byte cao: Neáu byte cao thay ñoåi thì laëp laïi caùc hoaït ñoäng ñoïc.
CHÖÔNG II
GIAO TIEÁP MAÙY TÍNH
I.CAÙC PHÖÔNG PHAÙP ÑIEÀU KHIEÅN VAØO RA
1.Vaøo ra ñieàu khieån baèng chöông trình
Thieát bò ngoaïi vi ñöôïc gheùp tôùi Bus cuûa heä thoáng vi ñieàu khieån thoâng qua caùc phaàn thích öùng veà coâng ngheä cheá taïo vaø logic. Thích öùng veà coâng ngheä cheá taïo laø ñieàu chænh coâng ngheä saûn xuaát thieát bò ngoaïi vi vaø coâng ngheä saûn xuaát cuûa maïch trong heä vi ñieàu khieån. Thích öùng veà logic laø nhieäm vuï taïo tín hieäu ñieàu khieån ngoaïi vi töû tín hieäu treâf Bus heä thoáng.
Trong heä vi ñieàu khieån moät vuøng nhôù duøng laøm nôi chöùa ñòa chæ coång vaøo/ra vaø CPU xuaát hoaëc nhaäp döõ lieäu töø caùc coång vaøo/ra naøy baèng caùc leänh xuaát/nhaäp IN/OUT. Luùc naøy coång vaøo ra ñöôïc xem nhö moät thanh ghi ngoaøi, chuùng ñöôïc vieát vaøo hoaëc ñoïc ra nhö oâ nhôù RAM qua hai leänh treân. Ñeå phaân bieät höôùng xuaát hoaëc nhaäp döõ lieäu töø coång vaøo ra CPU phaùt ra tín hieäu ñieàu khieån ñoïc hoaëc vieát. Deå phaân bieät vuøng nhôù vôùi thieát bò vaøo ra CPU phaùt ra tín hieäu ñieàu khieån IO/M. Khi coù caùc leänh naøy thì leänh IN/OUT môùi coù taùc duïng.
Ngoaøi ra caùc leänh qui cheá ñoä nhôù, cuõng nhö khaû naêng trao ñoåi döõ lieäu giöõa thieát bò ngoaøi vaø heä vi ñieàu khieån. Luùc ñoù coång vaøo ra ñöôïc gaùn nhö ñòa chæ oâ nhôù cuûa boä nhôù. Caùc thanh ghi lieân quan ñeán coång vaøo ra ñöôïc xem nhö ngaên nhôù. Khi boä vi ñieàu khieån goïi ñòa chæ vaø xung ñieàu khieån ñoïc hay vieát boä nhôù, noù khoâng caàn xaùc ñònh nôi gôûi laø boä nhôù hay thaeát bò vaøo ra. Noù chæ ñoøi hoûi nôi gôûi döõ lieäu vaøo trong khoaûng thôøi gian cho pheùp. Boä logic beân ngoaøi seõ giaûi maõ ñòa chæ keát hôïp vôùi xung MR, MW ñeå choïn thieát bò maø khoâng phaân bieät ngaên nhôù hay thieát bò vaøo ra.
2.Vaøo ra ñieàu khieån baèng ngaét:
Vôùi phöông phaùp ñieàu khieån vaøo ra baèng chöông trình CPU phaûi lieân tuïc kieåm tra traïng thaùi cuûa thieát bò ngoaïi vi ñeán khi saún saøng. Ñoù laø söï laõng phí thôøi gian cuûa CPU vaø laøm cho chöông trình daøi vaø phöùc taïp. Khi boä vi ñieàu khieån coù nhieàu thieát bò ngoaïi vi CPU khoâng ñaùp öùng ñöôïc nhu caàu cuûa chuùng. Coù theå ñaùp öùng ñöôïc yeâu caàu ngoaïi vi nhanh choùng vaø khoâng teo trình töï nhö ñònh trööôùc nhôø cô caáu ngaét cuûa CPU.
Nhôø tính chaát ñaùp öùng ngaét töùc thôøi cuûa caùc vi ñieàu khieån, khi coù yeâu caàu ngaét töø thieát bò ngoaïi vi. Do ñoù caùc ngaét thöôøng ñöôïc duøng ôû nhöõng tröôøng hôïp yeâu caàu ñaùp öùng nhanh, thôøi gian traû lôøi ngaén thöïc hieän ôû baát cöù thôøi ñieåm naøo. Khi ñoù CPU phaûi chuyeån ñeán chöông trình con phuïc vuï yeâu caàu ngaét ôû cuoái baát kyø leänh naøo trong chöông trình chính. Caùc chöông trình con phuïc vuï ngaét coù theå löu giöõ noäi dung caùc thanh ghi vaø khoâi phuïc laïi khi thöïc hieän xong chöông trình phuïc vuï ngaét vaø tröôùc khi trôû laïi chöông trình chính.
Phaàn cöùng naøy trôû neân phöùc taïp do phaûi giaûi quyeát öu tieân veà vaán ñeà maõ hoùa. Khi söû duïng heä ngaét ta xeùt ñeán caùc vaán ñeà sau:
Yeâu caàu ngaét: Kieåm tra ngaét ôû cuoái chu kyø leänh, moät chu kyø leänh coù theå keùo daøi neân tin hieäu yeâu caàu ngaét thöôøng ñöôïc choát laïi cho ñeán khi boä vi ñieàu khieån ghi nhaän. Ta coù theå duøng ñaàu vaøo ngaét cuûa vi ñieàu khieån cho nhieàu thieát bò ngoaïi vi nhöng CPU khoâng xaùc ñònh ñöôïc nguoàn yeâu caàu ngaét.
Chuyeån ñieàu kieän ngaét ñeán phuïc vuï ngaét : tuøy vaøo cheá ñoä ngaét, loaïi ñaàu vaøo ngaét, döõ lieäu vaøo vaø hoï vi ñieàu khieån ñöôïc chuyeån sang chöông trình phuïc vuï ngaét theo moãi caùch khaùc nhau.
Caát giöõ khoâi phuïc traïng thaùi: Taát caû caùc vi ñieàu khieån khi thöïc hieän ngaét phaûi töï ñoäng ngaét caát giöõ moät traïng thaùi ñieàu khieån, noù laø noäi dung thanh ghi boä ñeám chöông trình PC. Phaàn coøn laïi cuûa traïng thaùi ñöôïc caát giöõ tuøy theo yeâu caàu cuï theå cuûa phaàn meàm.
*Coù hai phöông phaùp caát giöõ traïng thaùi:
+ Duøng ngaên xeáp: Ñòa chæ ngaên xeáp ñöôïc ñieàu chænh vaø nhôù ôû thanh ghi con troû ngaên xeáp.
+ Trao ñoåi giöõa hai thanh ghi: chöông trình con phuïc vuï ngaét ñöôïc goïi ñeán baèng moät leänh. Khi ñoù CPU chuyeån sang laøm vieäc ôû thanh ghi thöù hai.
Xaùc ñònh nguoàn ngaét:
+ Phöông phaùp hoûi voøng: Thöù töï chính laø thöù töï öu tieân. Boä vi ñieàu khieån hoûi voøng khi chaéc chaén coù moät thieát bò yeâu caàu ngaét.
+ Phöông phaùp taïo vectô hoûi voøng: taát caû caùc nguoàn ngaét ñöôïc maõ hoùa ñeå taïo vectô ngaét. Vectô ngaét ñöôïc hieåu nhö moät phaàn cuûa ñòa chæ, phaân nhaùnh ñeán chöông trình con phuïc vuï ngaét hoaëc moät leänh maø vi ñieàu khieån phaûi thöïc hieän trong chu kyø leänh keá tieáp. Vectô ngaét ñöôïc ñöa vaøo Bus döõ lieäu baèng leänh ñieàu khieån cuûa CPU.
Öu tieân: vaán ñeà öu tieân trong thôøi ñieåm coù nhieàu yeâu caàu ngaét, ñeå döõ lieäu vaøo ra cuûa heä thoáng khoâng bò xaùo troän, thöôøng moãi thieát bi ngoaïi vi ñöôïc gaùn moät möùc öu tieân coá ñònh. CPU phuïc vuï theo möùc öu tieân giaûm daàn. Trong maïch ñieàu khieån ngaét, möùc öu tieân ngaét coù taùm möùc ñöôïc maõ hoùa töø 3 bit. Maõ ñoù ñöôïc so saùnh vôùi noäi dung öu tieân maø ngöôøi xöû duïng naïp vaøo chöông trình. Neáu möùc öu tieân cao hôn möùc qui ñònh thì yeâu caàu ngaét ñöôïc cho pheùp CPU ngaét.
Cho pheùp ngaét vaø caám ngaét: coù theå ñieàu khieån caùc ngaét vi ñieàu khieån baèng phaàn meàm. Nghóa laø ta coù theå thöïc hieän cho pheùp ngaét haëc caám ngaét vi ñieàu khieån baèng caùch thieát laäp cô ñieàu khieån baèng phaàn meàm.
Boä vi ñieàu khieån töï ñoäng caám ngaét trong caùc tröôøng hôïp sau:
+Khôûi ñoäng heä thoáng.
+Sau khi ngaét.
3.Vaøo ra ñieàu khieån baèng thaâm nhaäp tröïc tieáp (DMA).
Thaâm nhaäp tröïc tieáp laø phöông phaùp vaøo ra döõ lieäu nhanh nhaát baèng phaàn cöùng. Khi chueån döõ lieäu CPU khoâng caàn phaûi ñoïc, giaûi maõ vaø thöïc hieän caùc leänh chuyeån döõ lieäu maø noù chuyeån quyeàn ñieàu khieån caùc Bus cho DMAC. DMAC taïo ñòa chæ caùc tín hieäu caàn ñoïc.
Ñeå thöïc hieän moät pheùp chuyeån ñoåi DMAC moãi DMAC phaûi giaûi quyeát caùc vaán ñeà sau.
+ Thoâng baùo CPU yeâu caàu thöïc hieän DMAC.
+ Ñieàu khieån Bus vaø khoâng gaây aûnh höôûng ñeán hoaït ñoäng bình thöôøng cuûa CPU vaø khoâng gaây xung ñoät ôû Bus.
+ Xaùc ñònh ñòa chæ soá töø ñaõ chuyeån ñoåi
Ñeå thöïc hieän vieäc chuyeån ñoåi baèng caùch thaâm nhaäp tröïc tieáp, phöông phaùp thoâng duïng nhaát laø baét CPU töï treo thay vì yeâu caàu ngaét CPU. Thieát bò yeâu caàu ñeán DMAC khi nhaän ñöôïc tín hieäu yeâu caàu ngaét, DMAC taïo tín hieäu HOLD ñeán CPU. CPU döïa vaøo tín hieäu HOLD khi thöïc hieän chu kyø cuoái cuøng cuûa leänh hieän taïi sau ñoù töï treo vaø thoâng baùo ñeán DMAC baèng tín hieäu HALT. Khi nhaän ñöôïc tín hieäu traû lôøi HALT cuûa CPU, DMAC laáy quyeàn ñieàu khieån Bus, taïo ñòa chæ, ghi nhaän soá lieäu cuûa thieát bò ngoaïi vi baèng DACK. Soá lieäu ñöôïc chuyeån tröïc tieáp giöõa thieát bò ngoaïi vi vaø boä nhôù.
II.SÔ LÖÔÏC VEÀ CAÙCH GIAO TIEÁP GIÖÕA MAÙY TÍNH VAØ THEÁT BÒ NGOAÏI VI
Coù ba caùch giao tieáp giöõa maùy tính vaø thieát bò ngoaïi vi. Tuyø theo tröôøng hôïp öùng duïng cuï theå maø choïn caùch giao tieáp thích hôïp.
1.Giao tieáp baèng SLOT-CARD.
Trong maùy tính treân board maïch heä thoáng thöôøng cheá taïo saún caùc Slot chaèm muïc ñích môû roäng boä nhôù, cuõng nhö môû roäng phaïm vi öùng duïng cuûa maùy vi tính baèng caùch gaén theâm treân caùc board môû roäng vaøo caùc Slot naøy.
Moãi Sdot ñeàu coù caùc Bus döõ lieäu, Bus ñòa chæ vaø caùc ñöôøng tín hieäu ñieàu khieån nhö: CLK, IOW, IOR,… Do ñoù vieäc thieát keá caùc SLOT-CARD töø caùc ñaàu caám Slot seõ ñôn giaûn soá linh kieän ít vaø taän duïng ñöôïc caùc nguoàn ñieän cuûa maùy vi tính (±5V, ±12V) neân giaù thaønh reû, deã daøng ñöa tín hieäu ñieàu khieån ra ngoaøi vaø toác ñoä truyeàn nhanh.
Beân caïnh nhöõng öu ñieåm noù coù moät soá nhöôïc ñieåm sau:
+ SLOT-CARD phaûi caém vaøo caùc Slot treân Board maïch heä thoáng neân phaûi gôõ naép maùy ra.
+ Phaïm vi truyeàn tín hieäu gaàn vaø caùc daïng phöùc taïp. Trong moät soá tröôøng hôïp khoâng thöïc hieän ñöôïc.
Vì vaäy khi söû duïng SLOT-CARD ñeå giao tieáp vôùi thieát bò ngoaïi vi phaûi caân nhaéc kyõ göa öu vaø khuyeát ñieåm. Tuyø theo muïc ñích söû duïng maø choïn caùch thích hôïp.
2.Giao tieáp baèng coång maùy in (Giao tieáp song song)
Port giao tieáp maùy in duøng ñeå giao tieáp vôùi maùy in. Trong caùch giao tieáp naøy döõ lieäu ñôïc truyeàn song song goàm 8 Bit vaø moät soá tín hieäu baét tay. Ñaàu noái (conecter) goàm 25 chaân trong ñoù coù 8 chaân ñöôïc noái vôùi 8 ñöôøng döõ lieäu, moät soá chaân coøn laïi ñöôïc noái vôùi tín hieäu baét tay (Hand-Shaking). Taát caû caùc ñöôøng döõ lieäu vaø tín hieäu ñieàu khieån ñeàu ôû möùc logic töông thích vôùi möùc TTL. Hôn nöõa ngöôøi laäp trình coù theå cho pheùp hay khoâng cho pheùp söû duïng caùc ngaét ôû ngoõ vaøo, neân vieäc giao tieáp ñöôïc deã daøng. Tuy nhieân vôùi möùc logic TTL thì khoâng theå truyeàn ñi xa döôïc maø chæ truyeàn döôïc khoaûng ngaén, caùp truyeàn cuõng phöùc taïp hôn coång COM. Ñaây laø nhöôïc ñieåm cuûa coång maùy in.
3.Giao tieáp baèng coång COM (Giao tieáp noái tieáp)
Khaùc vôùi coång maùy in, coång COM laø coång truyeàn döõ lieäu noái tieáp. Noù thöôøng ñöôïc duøng ñeå giao tieáp vôùi thieát bò ngoaïi vi coù toác ñoä xöû lyù döõ lieäu chaäm nhö: chuoät hoaëc moderm … coång naøy giao tieáp theo tieâu chuaån RS232.
Döõ lieäu ñöôïc truyeàn döôùi daïng noái tieáp theo töøng Bit moät. Toác ñoä truyeàn Bit do ngöôøi laäp trình quyeát ñònh (thöôøng laø 1200 bps, 2400bps, 4800bps, 9600bps, …) chieàu daøi döõ lieäu coù theå laø 5, 6, 7, hoaëc 8 Bit keøm theo caùc Bit Start, Stop, parity taïo thaønh moät khung goïi la Frame. Coång naøy goà caùc ñöôøng phaùt, ñöôøng thu vaø ñöôøng mass chung. Vì giao tieáp vôùi tieâu chuaån RS232 neân khoaûng truyeàn xa hôn so vôùi caùc truyeàn song song nhö coång maùy in nhöng noù coù toác ñoä truyeàn raát chaäm.
CHÖÔNG III
KHAÛO SAÙT VI MAÏCH 8279 QUEÙT BAØN PHÍM VAØ HIEÅN THÒ
I. CAÁU TRUÙC IC 8279
1 40
5
35
8279
10
30
15
25
20 21
RL7-RL0
DATA
SHIFT
CNTR/STB
RD\
WR\
CS\
A0
RESET
CLK
Û
SLO-SL3
OUT A3-A0
OUT B3-B0
BD\
Ü
Þ
Þ
Þ
Key data
display data
Scan
Sô Ñoà Chaân
Sô Ñoà Logic
RL2 VCCs
RL3 RL1 CPU interface
CLK RL0
IRQ CNTL/STB
RL4 SHIFT
RL5 SL3
RL6 SL2
RL7 SL1
RESET SL0
RD/ OUT B0
WR/ OUT B1
D0 OUT B2
D1 OUT B3
D2 OUT A0
D3 OUT A1
D4 OUT A2
D5 OUT A3
D6 BD/
D7 CS/
GND A0
Hình 1.12 : Sô Ñoà Chaân Vaø Sô Ñoà Logic
Teân caùc chaân 8279:
Teân I/O Chöùc naêng
DB7 - DB0 I/O Data bus (Bi-Direction)
CLK I Clock input
RESET I Reset input
CS\ I Chip select
RD\ I Read input
WR\ I Write input
A0 I Address
IRQ 0 Interrupt Request input
SL0 - SL3 0 Scan Lines
RL0 - RL7 I Return Lines
SHIFT I Shift input
CNTL/STB I Control/Strobe input
OUT A3-0 0 Display (A) output
OUT B3-0 0 Display (B) output
BD\ 0 Blank Display Output
- 8279 keát noái vôùi vi ñieàu khieån thoâng qua 3 bus goàm bus döõ lieäu D7-D0, bus ñòa chæ coù moät ñöôøng A0, bus ñieàu khieån RD\, WR\, CS\, Resert, CLK.
- Tín hieäu choïn CS\ ñöôïc keát noái ñeán moät ngoõ ra cuûa IC giaûi maõ ñòa chæ. Neáu xem boä nhôù thì boä nhôù naøy coù 2 oâ nhôù.
II. CAÁU TRUÙC PHAÀN MEÀM CUÛA 8279
IC 8279 coù 1 ñöôøng ñòa chæ Ao coù chöùc naêng löïa choïn nhö sau:
Ao = O2 : 8279 xem döõ lieäu töø vi ñieàu khieån gôûi ñeán laø döõ lieäu ñeå hieån thò.
Ao =12 : 8279 xem döõ lieäu töø vi ñieàu khieån gôûi ñeán laø döõ lieäu cuûa leänh ñieàu khieån 8279.
Caùc leänh ñieàu khieån cuûa 8279:
1. Keyboard/ Display Mode Set:
+ Maõ:
O
O
O
D
D
K
K
K
+ Trong ñoù 2 bit DD duøng ñeå thieát laäp mode hieån thò, 3 bit KKK duøng ñeå thieát laäp mode queùt baøn phím.
+ Hai bit DD:
DD = 00 : hieån thò 8 kyù töï - loái vaøo traùi.
DD = 01 : hieån thò 16 kyù töï - loái vaøo traùi.
DD = 10 : hieån thò 8 kyù töï - loái vaøo phaûi.
DD = 11 : hieån thò 16 kyù töï - loái vaøo phaûi.
+ Ba bit KKK:
000 encode scan keyboard - 2 key lockout.
001 decode scan keyboard - 2 key lockout.
010 encode scan keyboard - N key rollover.
011 decode scan keyboard - N key rollover.
100 encode scan sensor matrix.
101 decode scan sensor matrix.
110 strobe input, encode display scan.
111 strobe input, decode display scan &
2. Program Clock:
+ Maõ:
O
O
1
P
P
P
P
P
+ Leänh naøy coù chöùc naêng chia taàn soá xung clock ôû ngoõ vaøo clk ôû chaân soá 3, caùc bit PPPPP duøng ñeå xaùc ñònh soá chia naèm trong khoaûng töø 2 ñeán 30, taàn soá hoaït ñoäng cuûa maïch queùt hieån thò vaø choùng doäi cuûa 8279 thöôøng laø 100 Khz, neáu taàn soá ôû ngoõ vaøo laø 2Mhz thì phaûi chia cho 20 ñeå ñöôïc 100 Khz, khi ñoù caùc bit PPPPP coù giaù trò laø 10100.
3. Read FIFO/ sensor RAM:
+Maõ
O
1
1
AI
X
A
A
A
8279 coù 8 byte RAM beân trong ñeå chöùa maõ cuûa phím aán hay maõ cuûa caùc sensor, ñeå truy xuaát ñeán töøng byte döõ lieäu maõ cuûa phím aán hay cuûa sensor ta coù theå ñieàu chænh caùc bit AAA töông öùng. Boä nhôù naøy thuoäc kieåu FIFO.
+ AI (automatically increment): ôû möùc moät coù chöùc naêng laøm con troû töï ñoäng taêng leân byte keá ñeå saün saøng cho vieäc ñoïc döõ lieäu. Neáu AI= 0 con troû seõ khoâng thay ñoåi.
4. Read Display RAM:
+ Maõ:
O
1
1
Al
A
A
A
A
+ 8279 coù 16 byte RAM beân trong do con troû 4 bit AAAA quaûn lyù, 16 byte RAM naøy duøng ñeå chöùa döõ lieäu caàn hieån thò do vi ñieàu khieån gôûi ñeán, ñeå ñoïc döõ lieäu oâ nhôù naøo trong vuøng nhôù RAM naøy ta coù theå ñieàu chænh caùc bit AAA töông öùng. Boä nhôù hieån thò naøy thuoäc kieåu FIFO.
+ AI (automatically increment): ôû möùc moät chöùc naêng laøm con troû töï ñoäng taêng leân byte keá ñeå saün saøng cho vieäc ñoïc byte döõ lieäu. Neáu AI=0 con troû seõ khoâng thay ñoåi.
5. End Interrupt:
+ Maõ:
1
1
1
E
0
0
0
0
+ Bit E baèng 1 seõ xoùa ngaét IRQ veà möùc logic 0.
6. Leänh Write Display Ram:
+ Maõ:
1
0
0
Al
A
A
A
A
+ 8279 coù 16 byte RAM beân trong con troû 4 bit AAAA quaûn lyù, 16 oâ nhôù RAM naøy duøng ñeå chöùa döõ lieäu caàn hieån thò do vi ñieàu khieån gôûi ñeán, ñeå gôûi döõ lieäu ñeán 8279 taïi byte Ram thöù maáy trong 16 byte RAM ta coù theå ñieàu chænh caùc bit AAAA töông öùng.
+ AI (automatically increment): ôû möùc moät chöùc naêng laøm con troû töï ñoäng taêng leân byte keá ñeå saün saøng nhaän döõ lieäu. Neáu AI=0 con troû seõ khoâng thay ñoåi do ñoù byte döõ lieäu sau seõ ghi ñeø leân byte döõ lieäu tröôùc ñoù.
7. Leänh Clear:
+ Maõ
1
1
0
CD
CD
CD
CF
CA
+ Nhöõng bit CD trong leänh naøy duøng ñeå xoùa taát caû caùc haøng cuûa Ram hieån thò ñeán moät maõ xoùa ñöôïc choïn doïc nhö sau:
CD CD CD
0 X Taát caû laø 0 (X : khoâng quan taâm)
1 0 AB = Hex 20 (0010 0000)
1 1 Taát caû laø 1
Cho pheùp xoùa hieån thò khi =1 (hoaëc bôûi CA=1)
+ Trong suoát thôøi gian Ram hieån thò ñang xoùa (» 160 ms) noù klhoâng ñöôïc vieát vaøo, bit lôùn nhaát cuûa töø traïng thaùi FIFO ñöôïc ñaët leân 1 trong suoát thôøi gian naøy. Khi Ram hieån thò ñöôïc söû duïng laïi thì bit naøy ñöôïc reset veà 0.
+ Neáu nhö bit CF tích cöïc (CF =1), töø traïng thaùi FIFO seõ bò xoùa vaø ngoõ ra Interrup bò reset.
+ Bit CA coù chöùc naêng xoùa taát caû caùc bit, noù coøn aûnh höôûng bôûi bit CD vaø CF. Noù duøng bit CD ñeå xoùa maõ treân Ram hieån thò vaø noù cuõng xoùa luoân traïng thaùi FIFO.
8279 laø IC chuyeân veà giaûi maõ hieån thò LED ñoaïn vaø queùt theo nhieàu phöông phaùp khaùc nhau .
Döõ lieäu hieån thò töø vi xöû lyù gôûi ñeán seõ chöùa trong 16 Byte RAM beân trong ñöôïc goïi laø boä nhôù hieån thò. Caùc döõ lieäu naøy laàn löôïc ñöôïc gôûi ra 8279 ñöôøng tín hieäu töø A3-0 ,B3-0.
Caùc ñöôøng tín hieäu SL3-0 duøng ñeå queùt, ñeå döõ lieäu treân caùc ñöôøng naøy coù theå ñöôïc thieát laäp theo hai kieåu Encode vaø Decode tuøy thuoäc vaøo kieåu thieát keá phaàn cöùng. Caùc ñöôøng naøy coù hai chöùc naêng vöøa quet hieån thò vöøa quet giaûi maõ baøn phím.
Caùc ñöôøng tín hieäu RL7-0 laø caùc ñöôøng tín hieäu Input keát hôï p vôùi caùc ñöôøng tín hieäu queùt SL3-0 taïo thaønh ma traän phím , phím ñöôïc aán seõ laøm cho moät hoaëc nhieàu ngoõ vaøo RL xuoáng 0, keát hôïp vôùi caùc ñöôøng tín hieäu queùt seõ cho maõ cuûa phím ñöôïc aán. Chuù yù caùc ñöôøng SL3-0 ôû cheá ñoä Decode.
Caùc ngoõ vaøo Shift vaø CNTL ñöôïc duøng ñeå môû roäng caùc phím toå hôïp.
Soá löôïng phím coù theå leân ñeán 64 phím rôøi.
8279 gôûi döõ lieäu treân vuøng nhôù RAM hieån thò ra Led 7 ñoaïn vaø töï ñoäng queùt baøn phím ñeå tìm phím bò taùc ñoäng vaø töï ñoäng choáng doäi sau khoaûng 10.3 ms vaø kieåm tra laïi moät laàn nöõa ñeå xem phím ñoù coøn bò aán nöõa hay khoâng, neáu coøn thì 8259 seõ thieát laäp maõ cho phím aán naøy vaø löu tröõ maõ cuûa phím vaøo boä nhôù RAM beân trong. Sau ñoù seõ baùo cho CPU bieát ñaõ coù moät phím taùc ñoäng vaø yeâu caàu CPU haõy nhaän maõ cuûa phím naøy baèng caùch taùc ñoäng ñeán tín hieäu ngaét IRQ .Tån hieäu IRQ ñöôïc keát noái ñeán moät ngoõ vaøo ngaét cuûa vi ñieàu khieån vaø chöông trình phuïc vuï cho ngaét naøy laø chöông trình xöû lyù phím. Nhieäm vuï cuûa vi ñieàu khieån laø ñoïc maõ cuûa phím bòaán vaøo ñeå xöû lyù vaø Reset ngaét cuûa 8279 trôó veà möùc logic 0 chuaån bò cho phím tieáp theo.
Khung döõ lieäu cuûa phím bò aán nhö sau:
CNTL
CNTL
SCAN
RETURN
CHÖÔNG IV
VI MAÏCH GIAO TIEÁP NGOAÏI VI 8255A
___ oOo ___
I. CAÁU TRUÙC PHAÀN CÖÙNG 8255A:
8255A laø IC ngoaïi vi ñöôïc cheá taïo theo coâng ngheä LSI duøng ñeå giao tieáp song song giöõa vi xöû lyù vaø thieát bò beân ngoaøi.
Maïch 8255A thöôøng ñöôïc goïi laø maïch phoái gheùp vaøo/ra laäp trình ñöôïc (Programmable Peripheral Interface – PPI). Do khaû naêng meàm deûo trong trong caùc öùng duïng thöïc teá noù laø maïch phoái gheùp ñöôïc duøng raát phoå bieán cho caùc heä vi xöû lyù 8 bit – 16 bit.
1). Sô ñoà khoái cuûa 8255A:
DATA
BUS
BUFFER
READ
WRITE
CONTROL
LOGIC
GROUP
A CONTROL
GROUP
B
CONTROL
GROUP
A
PORT C
UPPER
GROUP
B
PORT C
LOWER
GROUP
A
PORT A
GROUP
B
PORT B
+5V
GND
IO
PA7 – PA0
IO
PC7 – PC4
IO
PC3 – PC0
IO
PB7 – PB0
WR\
RD\
A1
A0
RESET
CS\
Hình 1.13: Sô ñoà khoái 8255A
POWER
SUPPLIES
2). Sô ñoà chaân vaø sô ñoà Logic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
PA4
PA5
PA6
PA7
WR\
RESET
D0
D1
D2
D3
D4
D5
D6
D7
VCC
PB7
PB6
PB5
PB4
PB3
PA3
PA2
PA1
PA0
RD\
CS\
GND
A1
A0
PC7
PC6
PC5
PC4
PC0
PC1
PC2
PC3
PB0
PB1
PB2
8255A
Hình 1.14 : Sô ñoà chaân 8255A
PA7-PA0
PC7-PC4
PC3-PC0
PB7-PB0
D7-D0
Hình 1.15 : Sô ñoà Logic 8255A
RESET
A0
A1
3). Teân caùc chaân:
D7 - D0 Data bus (Bi-Direction)
RESET Reset input (noái vôùi tín hieäu Reset toaøn boä heä)
CS\ Chip Select
WR\ Write input
RD\ Read input
A0, A1 Port Address
PA7 – PA0 Port A
PB7 – PB0 Port B
PC7 – PC0 Port C
8255A giao tieáp vôùi vi xöû lyù thoâng qua 3 bus: bus döõ lieäu 8 bit D7-D0, bus ñòa chæ, bus ñieàu khieån RD\; WR\; CS\; Reset.
· Maõ leänh, thoâng qua traïng thaùi vaø vaø döõ lieäu ñeàu ñöôïc truyeàn treân 8 ñöôøng döõ lieäu D7-D0. Vi xöû lyù gôûi döõ lieäu ñeán 8255A hoaëc vi xöû lyù ñoïc döõ lieäu töø 8255A tuøy thuoäc vaøo leänh ñieàu khieån. Caùc ñöôøng tín hieäu RD\, WR\ cuûa 8255A ñöôïc keát noái vôùi caùc ñöôøng RD\, WR\ cuûa vi xöû lyù.
· Tín hieäu Reset duøng ñeå khôûi ñoäng 8255A khi caáp ñòeän, khi bò Reset caùc thanh ghi caùc thanh ghi beân trong 8255A ñeàu bò xoùa vaø 8255A ôû traïng thaùi saün saøng laøm vieäc. Khi giao tieáp vôùi vi xöû lyù ngoû vaøo tín hieäu Reset naøy ñöôïc keát noái vôùi tín hieäu Reset Out cuûa vi xöû lyù.
· Tín hieäu Chip Select (CS\) duøng ñeå löïa choïn 8255A khi vi xöû lyù giao tieáp vôùi nhieàu 8255A.
8255A coù 3 port xuaát nhaäp (I/O) coù teân port A, port B, port C, moãi port 8 bit. Port A goàm caùc bit PA0-PA7, port B goàm caùc bit PB0-PB7 vaø port C goàm PC0-PC7. Caùc port naøy coù theå laø caùc port input hoaëc output tuøy thuoäc vaøo leänh ñieàu khieån, leänh ñieàu khieån do vi xöû lyù gôûi tôùi chöùa trong thanh ghi (coøn goïi laø thanh ghi ñieàu khieån) ñeå ñieàu khieån 8255A.
Caùc ñòa chæ A1-A0 cuûa 8255A duøng ñeå löïa choïn caùc port vaø thanh ghi, A1A0=002 duøng ñeå choïn Port A, A1A0 = 012 duøng ñeå choïn Port B, A1A0 = 102 duøng ñeå choïn Port C, A1A0 = 112 duøng ñeå choïn thanh ghi ñieàu khieån. Trong sô ñoà khoái 8255A, caùc port I/O chia laøm hai nhoùm: nhoùm A goàm port A vaø 4 bit cao cuûa port C, nhoùm B goàm port B vaø 4 bit thaáp cuûa port C. Ñeå söû duïng caùc port cuûa 8255A ngöôøi laäp trình phaûi gôûi töø ñieàu khieån ra thanh ghi ñieàu khieån ñeå 8255A ñònh caáu hình cho caùc port ñuùng theo yeâu caàu maø ngöôøi laäp trình mong muoán.
4). Caáu truùc töø ñieàu khieån cuûa 8255A:
D7
D6
D5
D4
D3
D2
D1
D0
PORT C (LOWER)
1 = INPUT
0 = OUTPUT
PORT B
1 = INPUT
0 = OUTPUT
MODE SELECTION
0 = MODE 0
1 = MODE 1
GROUP B
PORT C (UPPER)
1 = INPUT
0 = OUTPUT
PORT A
1 = INPUT
0 = OUTPUT
MODE SELECTION
00 = MODE 0
01 = MODE 1
1X = MODE 2
GROUP A
MODE SET FLAG
1 = ACTIVE
II. CAÁU TRUÙC PHAÀN MEÀM CUÛA 8255A:
Do caùc port cuûa 8255A ñöôïc chia laøm hai nhoùm nhoùm A vaø nhoùm B taùch rôøi neân töø ñieàu khieån cuûa 8255A cuõng ñöôïc chia laøm hai nhoùm.
r Caùc bit D2D1D0 duøng ñeå ñònh caáu hình cho nhoùm B:
¨ Bit D0 duøng ñeå thieát laäp 4 bit thaáp cuûa port C, D0 = 0 port C thaáp laø port xuaát döõ lieäu (output), D0 = 1 port C thaáp laø port nhaäp döõ lieäu (input).
¨ Bit D1 duøng thieát laäp port B, D1 = 0 port B laø port xuaát döõ lieäu (output), D1 = 1 port B laø port nhaäp döõ lieäu (input).
¨ Bit D2 duøng thieát laäp Mode ñieàu khieån cuûa nhoùm B:
· D2 = 0: nhoùm B hoaït ñoäng ôû Mode 0.
· D2 =1: nhoùm B hoaït ñoäng ôû Mode 1.
r Caùc bit D6, D5, D4, D3 duøng ñeå ñònh caáu hình cho nhoùm A:
¨ Bit D3 duøng ñeå thieát laäp 4 bit cao cuûa port C, D3 = 0 port C laø port xuaát döõ lieäu (output), D3 = 1 port C laø port nhaäp döõ lieäu (input).
¨ Bit D4 duøng ñeå thieát laäp port A, D4 = 0 port A laø port xuaát döõ lieäu (output), D4 = 1 port A laø port nhaäp döõ lieäu (input).
¨ Bit D6D5 duøng thieát laäp Mode ñieàu khieån cuûa nhoùm A:
· D6D5 = 00: nhoùm A hoaït ñoäng ôû Mode 0.
· D6D5 = 01: nhoùm A hoaït ñoäng ôû Mode 1.
· D6D5 = 1X: nhoùm A hoaït ñoäng ôû Mode 2.
1). Caùc nhoùm A, B ñöôïc caáu hình ôû Mode 0:
Töø ñieàu khieån nhoùm A & B hoaït ñoäng ôû Mode 0:
1
0
0
D4
D3
0
D1
D0
ÔÛ Mode 0 caùc port A, port B, port C thaáp vaø port C cao laø caùc port xuaát hoaëc nhaäp döõ lieäu ñoäc laäp. Do coù 4 bit ñeå löïa choïn neân coù 16 töø ñieàu khieån khaùc nhau cho 16 traïng thaùi xuaát nhaäp cuûa 4 port.
2). Caùc nhoùm A & B ñöôïc caáu thình ôû Mode 1:
Töø ñieàu khieån nhoùm A B hoaït ñoäng ôû Mode 1:
1
0
1
D4
D3
1
D1
D0
ÔÛ Mode 1 caùc port A & B laøm vieäc xuaát nhaäp coù choát (Strobe I/O). ÔÛ Mode naøy hai port A & B hoaït ñoäng ñoäc laäp vôùi nhau vaø moãi port coù 1 port 4 bit ñieàu khieån/döõ lieäu. Caùc port 4 bit ñieàu khieån/döõ lieäu ñöôïc hình thaønh töø 4 bit thaáp vaø 4 bit cao cuûa port C.
Khi 8255A ñöôïc caáu hình ôû Mode 1, thieát bò giao tieáo muoán 8255A nhaän döõ lieäu, thieát bò ñoù phaûi taïo ra tín hieäu yeâu caàu 8255A nhaän döõ lieäu, ngöôïc laïi 8255A muoán gôûi tín hieäu ñeán thieát bò khaùc, 8255A phaûi taïo ra tín hieäu yeâu caàu thieát bò ñoù nhaän döõ lieäu, tín hieäu yeâu caàu ñoù goïi laø tín hieäu Strobe.
r Nhoùm A laøm vieäc ôû caáu hình Mode 1:
¨ Port A ñöôïc caáu hình laø port nhaäp döõ lieäu.
Chöùc naêng cuûa caùc ñöôøng tín hieäu ñöôïc trình baøy ôû hình veõ sau ñaây:
INTE
A
PA7-PA0
STBA
IBFA
PC4
PC5
PC3
PC6,7
RD
INTRA
I/O
Töø ñieàu khieån :
1
0
1
1
D3
X
X
X
Hình 1.16 : Mode 1 Port A
Caùc ñöôøng tín hieäu cuûa port C trôû thaønh caùc ñöôøng ñieàu khieån/döõ lieäu cuûa port A.
Bit PC4 trôû thaønh bit STBA (Strobe Input, taùc ñoäng möùc thaáp), ñöôïc duðng ñeå choát döõ lieäu ôû caùc ngoû vaøo PA7 – PA0 vaøo maïch choát beân trong 8255A.
Bit PC5 trôû thaønh bit IBTA (Input Bufer Full, taùc ñoäng möùc cao), duøng ñeå baùo cho thieát bò beân ngoaøi bieát döõ lieäu ñaõ ñöôïc choát beân trong.
Bit PC3 trôû thaønh bit INTRA (Interrupt Request, taùc ñoäng ôû möùc cao), bit naøy coù möùc Logic 1 khi hai bit STBa = 1, IBF = 1 vaø bit INTEa (Interrupt Enable) ôû beân trong 8255A baèng 1. Bit INTEa ñöôïc thieát laäp möùc Logic 1 hay 0 döôùi söï ñieàu khieån cuûa phaàn meàm duøng caáu truùc Set/Reset cuûa 8255A. ÔÛ hình veõ treân, bit INTEa = 1 duøng ñeå cho pheùp tín hieäu IBF xuaát hieän taïi ngoõ ra INTRA cuûa coång AND. Tín hieäu INTA taùc ñoäng ñeán ngoõ vaøo cuûa ngaét vi xöû lyù ñeå bao cho vi xöû lyù bieát: döõ lieäu môùi ñaõ xuaát hieän ôû port A chöông trình phuïc vuï ngaét seõ ñoïc döõ lieäu vaøo xoùa yeâu caàu ngaét.
Caùc bit coøn laïi cuûa port C: PC6, PC7 laø caùc bit xuaát/nhaäp bình thöôøng tuøy thuoäc vaøo bit D3 trong töø ñieàu khieån hình treân. Caùc bit XXX ñöôïc duøng ñeå thieát laäp cho nhoùm B.
¨ Port A ñöôïc caáu hình laø port xuaát döõ lieäu:
Chöùc naêng cuûa ñöôøng tín hieäu ñöôïc trình baøy ôû hình sau:
INTE
A
PA7-PA0
OBFA
ACKA
PC7
PC6
PC3
PC4,5
WR
INTRA
I/O
Töø ñieàu khieån:
1
0
1
0
D3
X
X
X
Hình 1.17 : Port A Xuaát
Bit PC7 trôû thaøfh bit OBFa (Output Buffer Full, taùc ñoäng möùc thaáp), khi coù döõ lieäu töø vi xöû lyù gôûi ra port A, tín hieäu OBFa seõ yeâu caàu thieát bò beân ngoaøi nhaän döõ lieäu.
Bit PC6 trôû thaønh bit ACKa (Acknowledge Input, taùc ñoäng möùc thaáp) thieát bò nhaän döõ lieäu duøng tín hieäu naøy ñeå baùo cho 8255A bieát tín hieäu ñaõ ñöôïc nhaän vaø saún saøng nhaän döõ lieäu tieáp theo.
Bit PC3 trôû thaønh bit INTRa (Interrupt Request, taùc ñoäng möùc cao), bit naøy coù möùc Logic khi hai bit OBF a = 1, ACKa = 1 vaø bit INTEa (Interrupt Enable) ôû beân trong 8255A ôû möùc 1. Tín hieäu INTRa taùc ñoäng ñeán ngoõ vaøo ngaét cuûa vi xöû lyù ñeã baùo cho vi xöû lyù bieát: thieát bò beân ngoaøi ñaõ nhaän döõ lieäu ôû port A.
Caùc bit coøn laïi cuûa port C: PC4, PC5 laø caùc bit xuaát/nhaäp bình thöôøng tuøy thuoäc vaøo bit D3 trong töø ñieàu khieån hình treân. Caùc bit XXX duøng ñeã thieát laäp cho nhoùm B.
r Nhoùm B laøm vieäc ôû Mode 1:
¨ Port B ñöôïc caáu hình laø port nhaäp döõ lieäu :
Chöùc naêng cuûa caùc ñöôøfg tín hieäu ñöôïc trình baøy ôû hình sau:
INTE
B
PB7-PB0
STBB
IBFB
PC2
PC1
PC0
RD
INTRB
Töø ñieàu khieån:
1
X
X
X
X
1
1
X
Hình 1.18 : Port B Nhaäp
Chöùc naêng cuûa caùc bit ñieàu khieån gioáng nhö nhoùm A hoaït ñoäng ôû Mode 1.
¨ Port B ñöôïc caáu hình laø port xuaát döõ lieäu:
Chöùc naêng cuûa caùc ñöôøng tín hieäu ñöôïc trình baøy ôû hình sau:
INTE
B
PB7-PB0
OBFB
ACKB
PC1
PC2
PC0
WR
INTRB
Töø ñieàu khieån :
1
X
X
X
X
1
0
X
Hình 1.19 : Port B Xuaát
Chöùc naêng cuûa caùc bit ñieàu khieån gioáng nhö nhoùm A hoaït ñoäng ôû Mode 1.
Caùc bit XXX ñöôïc duøng thieát laäp cho nhoùm A, bit D0 khoâng coù taùc duïng trong tröôøng hôïp caû hai nhoùm cuøng laøm vieäc ôû Mode 1.
3). Nhoùm A cuûa 8255A laøm vieäc ôû Mode 2:
Mode 2 laø kieåu hoaït ñoäng Strobe Bi-directional IO, söï khaùc bieät vôùi Mode 1 laø port coù hai chöùc naêng xuaát – nhaäp döõ lieäu.
Töø ñieàu khieån khi hai nhoùm A vaø B hoaït ñoäng ôû Mode 2:
1
1
X
X
X
X
X
X
Chöùc naêng cuûa caùc ñöôøng tín hieäu ñöôïc trình baøy ôû hình sau:
INTE
1
INTE
2
PC3
PC7
PC6
PC4
PC5
PA7-PA0
PC2,1,0
RD
WR
I/O
IBFA
STBA
ACKA
OBFA
INTRA
Töø ñieàu khieån:
1
0
1
1
D3
X
X
X
Hình 1.20 : Port A Vaø B ôû Mode 2
Caùc ñöôøng tín hieäu cuûa port C trôû thaønh caùc ñöôøng ñieàu khieån/döõ lieäu cuûa port A.
Bit PC7 trôû thaønh bit OBFa, PC6 trôû thaønh bit ACKa, PC4 trôû thaønh bit STBa, PC5 trôû thaønh IBFa vaø bit PC3 trôû thaønh bit INTRa. Chöùc naêng cuûa caùc ñöôøng tín hieäu gioáng nhö Mode 1, chæ khaùc laø tín hieäu ngoû ra INTRa =1, INTE1 = 1 hoaëc IBFa = 1, INTE2 = 1.
Caùc bit PC 2,1,0 coøn laïi coù theå laø caùc bit I/O tuøy thuoäc vaøo bit ñieàu khieån c3 nhoùm B.
Chuù yù khi nhoùm A laøm vieäc ôû Mode 2, nhoùm B chæ ñöôïc pheùp hoaït ñoäng ôû Mode 0.
Caáu hình cuûa töø ñieàu khieån Set/Reset bit INTE khi 8255A hoaït ñoäng ôû Mode 1 hoaëc
Mode 2 ñöôïc trình baøy ôû hình sau:
0
1
2
3
4
5
6
7
0
1
0
1
0
1
0
1
B0
0
0
1
1
0
0
1
1
B1
0
0
0
0
1
1
1
1
B2
BIT SELECT
BIT SET / RESET
1 = SET
0 = RESET
BIT SET / RESET FLAG
0 = ACTIVE
D7
D6
D5
D4
D3
D2
D1
D0
X X X
Don’t care
Caáu hình naøy coøn cho pheùp Set/Reset töøng bit cuûa port C. Töø ñieàu khieån naøy khaùc vôùi töø ñieàu khieån caáu hình laø bit D7 = 0.
Bit D0 duøng ñeã Set/Reset bit INTE, khi D0 = 1 thì INTE = 1 (cho pheùp ngaét), khi D0 = 0 thì INTE = 0 (khoâng cho pheùp ngaét). Ba bit D1, D2, D3 duøng ñeå choïn moät bit cuûa port C, gaùn möùc Logic cuûa bit D0 cho bit cuûa port ñaõ choïn.
Trong thöïc teá port A vaø port B thöôøng ñöôïc caáu hình vôùi nhieàu Mode khaùc nhau. Ví duï nhoùm A hoaït ñoäng ôû Mode 2 nhoùm B laøm vieäc ôû Mode 0.
Phaàn II
THIEÁT KEÁ VAØ THI COÂNG PHAÀN CÖÙNG
Chöông I:
THIEÁT KEÁ PHAÀN CÖÙNG VAØ TÍNH TOAÙN
I.)Toùm taét thieát keá:
Yeâu caàu cuûa ñeà taøi laø thieát keá heä thoáng kít vi ñieàu khieån 8951 ñeå aùp duïng vaøo phöông phaùp giaûng daïy vaø thöïc taäp cho boä moân vi xöõ lyù. Caùc leänh ñaeàu khieån vaø chöông trình ñuôïc nhaäp töø baøn phím do ñoù vieäc thieát keá caùc phaàn cöùng phaûi ñaûm baûo caùc yeâu caàu sau:
Hoaït ñoäng cuaû maùy phaûi chính xaùc, deã söû duïng.
Keát caáu phaàn cöùng khoâng quaù phöùc taïp, linh kieän thi coâng phaûi coù treân thò tröôøng Vieät Nam vaø giaù thaønh hôïp lyù.
Sô ñoà khoái cuaû heä thoáng:
Giao tieáp ngoaïi vi
Boä nhôù
Baøn phím vaø hieån thò
CPU
Hình 2.1 : Sô ñoà khoái heä thoáng
Heä thoáng vi ñieàu khieån goàm boán phaàn chuû yeáu sau:
+ Ñôn vò xöõ lyù trung taâm CPU.
+ Boä nhôù.
+ Giao tieáp ngoaïi vi.
+ Khoái queùt phím – Hieån thò.
II.)Chöùc naêng cuaû töøng khoái:
1/. Ñôn vò xöõ lyù trung taâm CPU(Center Processing Unit)
Ñaây laø khoái quan troïng nhaát cuaû heä thoáng. CPU giöõ nhieäm vuï tieáp nhaän vaø xöû lyù trung taâm, khaû naêng tieáp nhaän vaø phaân tích caùc yeâu caàu taùc ñoäng, töø ñoù coù ñaùp öùng thích hôïp. Ñieàu naøy ñöôïc theå hieän qua khaùi nieäm taäp leänh cuaû vi ñieàu khieån, chaün haïn taäp leänh cuûa 8951. Taäp leänh naøy cho ta khaõ naêng hoaït ñoäng coù möùc ñoä cuaû ñôn vò xöû lyù trung taâm, khaéc phuïc vaø haïn cheá caùc ñieàu ñoù caùc nhaø saûn xuaát ñaõ coá gaéng thieát laäp taäp leänh sao cho khi keát hôïp chuùng laïi vôùi nhau ñôn vò xöõ lyù trung taâm xöû lyù theâm nhieàu tình huoáng khaùc maø töøng leänh rieâng bieät khoâng theå giaõi quyeát ñöôïc. Ñaây chính laø cô sôû cuaû chöông trình heä thoáng.
2) Khoái boä nhôù: (Memory)
Ñaây laø nôi löu tröû chöông trình cuõng nhö caùc soá lieäu thu nhaän vaø caùc keát quaû sau quaù trình laøm vieäc naøo ñoù khoái naøy khoâng theå thieáu ñöôïc trong heä thoáng vi ñieàu khieån vaø ñoù laø nôi caát giöõ khaû naêng maø ngöôøi laäp trình taïo ra cho heä thoáng
3)Khoái giao tieáp ngoaïi vi:
Ñaây laø phaàn keát noái giöõa CPU vaø beân ngoaøi. Do yeáu toá khaùch quan laø CPU chæ coù moät tuyeán döõ lieäu trong khi yeâu caàu giao tieáp beân ngoaøi nhieàu, vì vaäy phaàn giao tieáp laø ñôn vò chòu traùch nhieäm thieát laäp caùc moái quan heä töø beân ngoaøi vôùi heä thoáng taïi thôøi ñieåm coù yeâu caàu.
Ñeå ñaûm nhieäm vieäc naøy thieát bò ngoaïi vi cuõng ñöôïc gaùn cho 1 ñòa chæ ñeå tieän cho vieäc truy xuaát vaø dó nhieân keøm theo nhöõng tính hieäu ñieàu khieån thích hôïp töø CPU vaø tuyeán döõ lieäu ñeå trao ñoåi thoâng tin
4) Khoái hieån thò vaø baøn phím:
Ñaây laø khoái phuïc vuï ñaéc löïc cuaû heä thoáng vi ñieàu khieån, baøn phím laø nôi ngöôøi laäp trình nhaäp soá lieäu cuõng nhö chöông trình vaøo boä nhôù, boä hieån thò giuùp ngöôøi laäp trình kieåm soaùt ñöôïc vieäc nhaäp soá lieäu cuõng nhö 1 keát quaû trong quaù trình laøm vieäc. Trong moät soá tröôøng hôïp ñoâi khi chuùng ta phaûi coâng nhaän chuùng laø hai thieát bò ngoaïi vi luoân ñi keøm vôùi moät heä thoáng ñieàu khieån. Maët khaùc vì ñaây laø nhöõng thieât bò ngoaïi vi boä hieån thò vaø baøn phím khoâng laøm vieäc tröïc tieáp vôí CPU maø phaûi thoâng qua giao tieáp ngoaïi vi. Vieäc ñònh vò chuùng döïa treân boä phaän cuaû khoái giao tieáp maø moåi thieát bò tröïc tieáp laøm vieäc.
III.)THIEÁT KEÁ VAØ PHAÂN TÍCH NGUYEÂN LYÙ HOAÏT ÑOÄNG THEO TÖØNG KHOÁI:
1.Khoái xöõ lyù trung taâm CPU:
Ñaây laø khoái tieáp nhaän vaø xöû lyù moïi thoâng tin lieân quan ñeán hoaït ñoäng cuaû maùy. Khoái xöû lyù trung taâm hoaït ñoäng khoâng ngöøng trong suoát thôøi gian laøm vieäc do ñoù ñoä beàn bæ vaø khaû naêng xöû lyù nhanh choùfg linh hoaït vôùi moïi tình huoáng phuï thuoäc vaøo phaåm chaát linh kieän maø chuùng ta söû duïng cuõng nhö nguoàn cung caáp cho heä thoáng. Chính vì vaäy choïn boä xöû lyù trung taâm laø ñoái töôïng ñaàu tieân cho thieát keá heä thoáng khoâng ngoaøi lyù do treân, noù seõ quyeát ñònh khaû naêng hoaït ñoäng cho heä thoáng cuaû chuùng ta.
a) Phaân tích yeâu caàu choïn linh kieän:
Chuùng ta seõ caên cöù vaøo caùc yeâu caàu sau ñeå choïn linh kieän:
Coù neàn taûng cô baûn cuaû moät heä thoáng vi ñieàu khieån.
Khaû naêng öu vieät so vôùi heä thoáng soá.
Deå söõ duïng cuõng nhö thieát keá caùc öùng duïng.
Coù taøi lieäu lieân quan.
Khoâng yeâu caàu cao trong thieát keá phaàn cöùng.
Mua ñöôïc treân thò tröôøng Vieät Nam.
Cho ñeán nay lónh vöïc vi xöû lyù ñaõ phaùt trieån raát xa so vôùi thôøi kyø ñaàu cuaû noù töø heä thoáng 8 bít ñaõ ñuôïc naâng leân 16 bit, 32 bit, 64 bit coù khaû naêng quaûn lyù tôùi 128 kbytes. Cuøng vôùi söï phaùt trieån cuaû coâng ngheä phaàn meàm ñaõ cho ngöôøi laäp trình caùch trieät ñeå nhaát caùc thoâng tin ñuôïc caäp nhaät hoaù ngaøy nay nhö vaäy seõ khoù khaên cho vieäc löïa choïn boä vi xöû lyù ñeå ñaùp öùng yeâu caàu treân.
Tuy nhieân chuùng ta döïa vaøo nhöõng loaïi hieän ñaõ coù treân thò tröôøng Vieät Nam maø chuùng ta thuôøng gaëp nhö: INTEL8085, INTEL8080, INTEL 8951, ZILOG Z80, MOTOROLA 6802 ñaây laø nhöõng heä thoáng 8 bit caùch ñaây khaù laâu nhöng vaãn coøn choã ñöùng trong moät soá thieát bò maùy moùc.
Caùc hoï treân ñieàu thoûa maõn hai ñieàu kieän ñaàu tieân vì chuùng laø caùc hoï xöû lyù ñaàu tieân ñaïi dieän cho heä thoáng maùy tính hieän nay vaø chöông trình phaàn meàm öùng duïng linh hoaït . Ñaây cuõng chính laø ñieåm yeáu nhaát cuaû heä thoáng soá.
Veà taøi lieäu do vieäc caäp nhaät taøi lieäu haøng ngaøy neân taøi lieäu raát phong phuù veà hoï vi xöû lyù naøy vaø giaù thaønh cuaû noù cuõng khoâng cheânh leäch nhieàu neân cuõng raát khoù khaên cho vieäc löïa choïn vi xöû lyù thích hôïp, chæ coøn döïa treân ñoä phöùc taïp cuaû phaàn cöùng ñeå choïn ra boä vi xöû lyù thích hôïp nhaát.
Tröôùc heát ta xem veà caáu truùc chaân ta thaáy 8085 coù 8 bit thaáp cuaû address bus ñöôïc ña hôïp ñeå taïo ra 8 bit data bus (kí hieäu AD0-AD7 ). Ñaëc ñieåm phaûi caàn 1 maïch choát ñeå gôûi tín hieäu ra tuyeán döõ lieäu cuaû vi xöû lqù. Maëc khaùc ôû 8085 hai tín hieäu ñieàu khieån bus vaø I/O ñöôïc caáu taïo chung treân moät chaân phaân bieät nhau bôûi traïng thaùi logic maø khoâng taùch rôøi hai chaân. Nhöõng yeáu toá treân ñuû laøm cho maïch ñieän theâm phöùc taïp, khoâng roõ raøng vaø khoù kieåm soùt.
Vôùi 8080 maëc duø address bus vaø data bus ñöôïc taùch rôøi nhöng gaëp phaûi moät trôû ngoaïi khaùc ñoù laø khoâng coù chaân ñieàu khieån bus vaø I/O maø phaûi thoâng qua moät linh kieän khaùc ñoù laø 8255 vöøa laø boä ñeäm hai chieàu vöøa laø boä taïo tín hieäu ñieàu khieån heä thoáng. Hôn nöõa, CPU caàn coù moät boä nguoàn 3 caáp ñieän aùp +5v,-5V vaø 12v. Ñaây laø moät trôû ngaïi veà phaàn cöùng.
Nhö vaäy ta chæ coøn hai hoï vi xöû lyù vaø moät hoï vi ñieàu khieån ñoù laø: MOTOROLA 6802, ZILOG Z80 vaø INTEL 8951. Tuy nhieân ñoái vôùi moät hoï vi xöû lyù khoâng chæ ñôn thuaàn döïa vaøo phaàn cöùng, tính linh hoaït chuû yeáu döïa vaøo phaàn meàm. Muoán thay ñoåi naêng löïc phaàn meàm cuûa töøng loaïi ta phaûi xem xeùt moãi hoï giaûi quyeát baøi toaùn nhö theá naøo caên cöù vaøo kích thöôùc chöông trình, vaøo thuaät giaûi töø ñoù chuùng ta môùi coù caâu traû lôøi thích hôïp. Ta laäp baûng so saùnh caùc linh kieän vôùi nhau:
Caùc thanh ghi
6802
Z80
8951
Boä tích luõy 8 bit
A,B
A
A,B
Thanh ghi chæ soá 16 bit
IY,IY
IX,IY
Boä ñeám chöông trình
PC
PC
PC
Con troû ngaên xeáp SP(16 bit)
SP
SP
SP
Thanh ghi côõ
CY,AC
Thanh ghi ña naêng
B,C,D,H,L
Thanh ghi döõ tröõ
B’,C’,D’,H’,L’
Timer /counter(16bit)
2timer/counter
Thanh ghi ngaét
I,R
IP,IE
Thanh ghi ñaëc bieät
22
Ngaân haøng thanh ghi
4
Moät ñieåm khaùc bieät ôû caáu taïo cuûa vi maïch giöõa 6802, Z80 vaø 8951 laø dao ñoäng cuûa 6802 vaø 8951 ñöôïc caáu taïo ngay trong IC chæ caàn trang bò theâm beân ngoaøi moät thaïch anh laø ñuû. Ñaây chính laø ñieåm maø 6802 vaø 8951 hôn haún Z80. Trong caùc chöông trình vieát baèng ngoân ngöõ caáp thaáp caùc leänh chuyeån dôøi döõ lieäu chieám moät vò trí quan trong hôn nöõa caùc pheùp toaùn soá hoïc cuõng nhö logic chæ thöïc hieän treân caùc thanh ghi neân soá löôïng thanh ghi cuõng chieám moät vò trí quan troïng. Ñaây laø moät yeáu toá giuùp cho ngöôøi laäp trình löïa choïn heâ thoáng thích hôïp. Qua baûng so saùnh ta thaáy hoï vi maïch ñieàu khieån 8951 ñaùp öùng ñöôïc haàu heát caùc ñieàu kieän ñaët ra.
Hôn nöõa moät trong nhöõng ñaëc tính noåi baäc cuûa vi ñieàu khieån laø giuùp cho ngöôøi laäp trình coù theå can thieäp vaøo töøng bit cuøa port xuaát nhaäp, maø chæ duøng moät leänh duy nhaát (ví duï: SETB P1.3:ñaëc bit 3 port 1 leân 1) ñieàu naøy seõ raát khoù khaên thöïc hieän vôùi caùc vi xöû lyù khaùc, ngoaøi ra coøn hai boä TIMER/COUNTERS ñöôïc duøng nhö moät ñoàng ñeå ño caùc chu kyø thôøi gian hoaëc coù theå hoaït ñoäng nhö moät boä ñeám.
*Toùm laïi:chuùng ta seõ choïn vi ñieàu khieån 8951 cho thieát keá heä thoáng nhö muïc tieâu ñeà ra.
b) Thieát keá maïch xöû lyù trung taâm:
Caáu truùc maïch xöû lyù trung taâm quyeát ñònh toaøn boä heä thoáng cho neân ñaây laø khaâu ñaàu tieân ñöôïc thieát keá vaø cuõng laø khaâu ñôn giaûn nhaát bôûi vì noù khoâng phuï thuoäc vaøo caùc thaønh phaàn coøn laïi cuaû heä thoáng. Phaàn quan troïng nhaát chuùng ta ñaõ thöïc hieän trong vieäc löïa choïn vi ñieàu khieån 8951, coøn xöû lyù caùc coâng vieäc do phaàn meàm thöïc hieän. Coâng vieäc cuûa chuùng ta laø thieát keá caùc maïch xung quanh CPU nhö: maïch dao ñoäng, maïch choát, maïch Reset, maïch nguoàn…
c) Thieát keá maïch taïo tín hieäu ñieàu khieån: (maïch dao ñoäng)
Trong heä thoáng soá noùi chung vaø heä thoáng vi ñieàu khieån noùi rieâng xung clock ñoùng vai troø quan troïng trong toaøn boä heä thoáng, moät phaàn do tính chaát laøm vieäc cuûa caùc maïch logic nhö: counter, timers… nhöng chöùc naêng quan troïng nhaát cuûa xung clock laø ñoàng boä caùc hoaït ñoäng cuaû caùc linh kieän khaùc nhau trong maïch do ñoù maïch taïo xung thieát keá phaûi thoaû maûn ñieàu kieän sau:
Ñaûm baûo ñoä oån ñònh cuaû taàn soá laøm vieäc, giaûm toái thieåu sai soá ngaãu nhieân.
Thích öùng vôùi caùc linh kieän laøm vieäc lieân quan ñeán kyõ thuaät soá nhö ñaõ giôùi thieäu ôû phaàn tröôùc, maïch taïo xung ñöôïc cheá taïo trong IC 8951 do vaäy ñieàu kieän thöù hai coi nhö ñaõ thoûa. Ñoái vôùi maïch dao ñoäng duøng RL ñoä oån ñònh khoâng cao do khoù xaùc ñònh ñöôïc chính xaùc giaù trò RL do ñoù khoâng thoûa yeâu caàu ñaët ra.
Söû duïng thaïch anh laø coù tính thuyeát phuïc nhaát bôûi thaïch anh coù tính oån ñònh cao vaø coù giaù trò xaùc ñònh sai soá raát nhoû trong heä thoáng bit, coù theå noùi haàu heàt caùc linh kieän ñeàu tröïc tieáp hoaëc giaùn tieáp lieân quan ñeán taàn soá clock. Chính vì vaäy vieäc löïa choïn taàn soá laøm vieäc thích hôïp laø moät trong nhöõng buôùc quan troïng nhaát.
Nhö chuùng ta ñaõ bieát ôû ñieàu kieän lyù töôûng taàn soá laøm vieäc cuûa CPU phaûi hoaøn toaøn töông thích vôùi toác ñoä truy xuaát döõ lieäu cuaû boä nhôù. Ñieàu naøy khoù coù theå thöïc hieän ñöôïc vì khoù coù theå kieám treân thò tröôøng hieän nay do vaäy ta phaûi choïn giaûi phaùp khaùc linh hoaït hôn maø vaãn ñaùp öùng ñöôïc taàn soá laøm vieäc cho heä thoáng.
C1
C2
18
19
XTAL1
XTAL2
8951
Qua caùc taøi lieäu cho thaáy toác ñoä truy xuaát döõ lieäu trung bình khoaûng 120ms ñeán 450ms tuông öùng vôùi 2,2MHz ñeán 8,3 MHz vôùi 8951 taàn soá laøm vieäc thöôøng töø 0Hz ñeán 24MHz do ñoù ta choïn taàn soá trong khoaûng naøy laø ñöôïc, ôû ñaây taàn soá laøm vieäc ñöôïc choïn laø 12MHz do thaïch anh 12MHz raát phoå bieán hieän nay vaø giaù thaønh haï so vôùi caùc loaïi khaùc, maïch ñöôïc maéc nhö sau: C1, C2 oån ñònh cho thaïch anh.
Hình 2-2:maïch dao ñoäng
d) Thieát keá maïch Reset:
Do chöông trình quaûn lyù vaø ñieàu khieån heä thoáng laø chöông trình ñaàu tieân khi tieán haønh khi môùi caáp ñieän. Cho neân taïi thôøi ñieåm ñoù thanh ghi pc phaûi löu taïi ñòa chæ ñaàu tieân cuûa chöông trình, muoán laøm ñöôïc vieäc naøy caàn phaûi coù moät maïch taùc ñoäng beân ngoaøi. Ñoù chính laø maïch Reset, chính luùc nhaän Reset, CPU seõ xoaù thanh ghi PC veà ñòa chæ ban ñaàu. Ñaây chính laø taàm quan troïng cuûa maïch reset.
Thöïc ra maïch reset chæ laø moät maïch nhoû vôùi chöùc naêng taïo ra moät xung taùc ñoäng vaøo chaân reset cuûa CPU taïi thôøi ñieåm caáp nguoàn cho heä thoáng, cuõng coù theå söû duïng maïch reset naøy ñeå reset moät soá linh kieän khaùc neáu coù nhu caàu nhö 8255. Ñoái vôùi 8951 chaân reset ñöôïc kí hieäu RST(9) chòu taùc ñoäng töông öùng vôùi traïng thaùi [H], coù nghóa laø khi chuùng ta ñöa tín hieäu vaøo ôû möùc [1] thì seõ laøm CPU quay trôû laïi traïng thaùi ban ñaàu. Taùc ñoäng naøy goïi laø reset CPU. Löu yù laø chaân mang kí hieäu reset luoân thöôøng tröïc ñeå ôû traïng thaùi thaáp [L] chæ luùc naøo caàn reset CPU, ta môùi taïm thôøi ñöa leân traïng thaùi cao [H].
Maïch ñieän saâu ñaây ñaùp öùng ñöôïc taát caû caùc yeâu caàu ñaët ra:
Vcc
C
RST
R1
R2
Reset
Hình 2-3:Maïch reset.
Giaûi thích: Ñoái vôùi maïch naøy khi chuùng ta cho ñieän aùp vaøo maïch thì maïch reset seõ töï ñoäng taùc ñoäng neân ñöôïc goïi laø maïch töï ñoäng reset hay maïch reset khi ñoùng nguoàn cung caáp (power on reset). Ngoaøi ra baát kì luùc naøo caàn thieát chuùng ta vaãn coù theå nhaán coâng taét reset xuoáng ñeå khôûi ñoäng laïi heä thoáng.
Thôøi gian reset cuaû 8951 taùc ñoäng ôû möùc cao trong khoaûng hai chu kì maùy töùc laø khoaûng 2ms (tröôøng hôïp maïch dao ñoäng söû duïng thaïch anh 12MHz) sau ñoù xuoáng thaáp ñeå 8951 baét ñaàu laøm vieäc.
Döïa vaøo thôøi haèng Rl ñeå tính toaùn ta choïn ñöôïc caùc giaù trò nhö sau:
R1=8,2 kW
R2=100 W
C=10 mF
e) thieát keá maïch choát ñòa chæ:
Vôùi 8951 8 bit thaáp cuaû ñiaï chæ ñöôïc ña hôïp ñeå taïo ra 8 bit cuaû data bus (kí hieäu töø Do ñeán D7) CPU seõ ñieàu khieån maïch choát cho xung ra ôû chaân ALE cho pheùp choát ñòa chæ vaøo thanh ghi beân ngoaøi trong suoát nöûa chu kì ñaàu boä nhôù. Sau khi thi haønh xong luùc naøy caùc ñöôøng cuaû port0 raûnh roãi seõ cho döõ lieäu vaøo hoaëc ra trong nöõa chu kì coøn laïi. Trong phaàn thieát keá naøy ta choïn maïch choát 74ALS573 laø vi maïch coù 8 ngoõ vaøo vaø 8 ngoõ ra phuø hôïp 8 bit thaáp cuaû address bus.
Hình 2.4 Sô ñoà keát noái 8951 vôùi maïch reset, dao ñoäng vaø maïch choát
Vi maïch 74ALS573 coù chöùa 8 Flip-Flop 0 vaø 8 coång ñeäm ñieàu khieån khi xung ñoàng hoà ôû möùc 1 ñaàu ra cheùp laïi ñaàu vaøo. Khi xung vaøo chuyeån traïng thaùi töø 1 xuoáng 0 soá lieäu ôû ñaàu ra seû bò choát laïi. Nhö vaäy caùc maïch choát laïi theo möùc ñaàu ra cheùp laïi giaù trò ñaàu vaøo. Tín hieäu ñieàu chieån choát ñiaï chæ ñöôïc CPU ñöa ra ôû chaân ALE (Adress Latch Enable: cho pheùp choát ñòa chæ) phaûi ñöôïc noái vaøo chaân C (chip). Khi chaân OE (Output Enable) ôû möùc thaáp thì 74ALS573 seõ choát ñòa chæ vaøo thanh ghi 74ALS573. IC naøy goàm 8 choát theo möùc döông loaïi D vôùi xung ñoàng hoà chung. Nhö vaäy ñaàu vaøo xung ñoàng hoà ñöôïc kích baèng xung choïn cöûa ra coù möùc tích hôïp cao. Ñoä doác cuaû ñöôøng xung phaûi thích hôïp khaûo saùt chu kì vaøo/ra treân giaûn ñoà soùng ta thaáy 8951 caáp döõ lieäu oån ñònh keå töø caïnh xuoáng cuaû xung WR 74ALS573 coù ñaàu ra 3 traïng thaùi, caùc boä ñeäm ñaàu ra ñieàu coù möùc ñieàu khieån vôùi möùc tích cöïc thaáp.
f) Thieát keá boä nguoàn:
*Yeâu caàu:
1. Cung caáp moät nguoàn VDC cho taát caû caùc IC trong maïch.
2. Coù nguoàn döï phoøng trong tröôøng hôïp gaëp söï coá ôû nguoàn ñieän.
3. Coù nguoàn nuoâi RAM(back-up) vì taát caõ caùc döõ lieäu trong quaù trình tính toaùn, xöû lyù heä thoáng ñöôïc löu tröõ trong RAM caùc döõ lieäu naøy seõ maát ñi neáu choâng coù nguoàn nuoâi RAM. Xuaát phaùt töø nhöõng yeâu caàu treân em ñöa ra maõch ñieän nhö sau, ñaûm baûo toát cho hoaït ñoäng cuaû heä thoáng.
Maïch nguoàn bao goàm:
OÅn aùp7805 cung caáp ñieän cho toaøn maïch.
Tuï choáng nhieãu.
Nguoàn nuoâi RAM 3,6 v
Ta coù sô ñoà maïch nguoàn nhö sau:
Hình 2.5 : Maïch Nguoàn
Trong ñoù caùc DIODE taïo thaønh caàu naén ñieän
Hai tuï C 10 uF : loïc nhieãu nguoàn.
16 tuï 0,1uF: caùc tuï choáng nhieãu.
IC oån aùp ñöôïc choïn laø LM 7805 laø loaïi oån aùp ñöùng coù ñaëc ñieåm nhö sau:
- Ñieän aùp ngoõ vaøo 8-35v
- Ñieän aùp ngoõ ra oån aùp 5v
- Doøng ñieän ra danh ñònh 1A
Nguoàn 3,6v duøng ñeå nuoâi RAM khi coù söï coá maát ñieän. Ta bieát raèng döôùi ñieän aùp cung caáp laø 3,6 v thì döõ lieäu trong RAM seõ khoâng bò maát vôùi maïch ñieän nhö treân khi bò maát ñieän diode D6 ñöôïc phaân cöïc thuaän caáp nguoàn 3,6v baûo veä RAM khoûi bò maát döõ lieäu.
2.Thieát Keá Boä Nhôù:
Khoái boä nhô ùlaø khoái quan troïng thöù hai sau khoái xöû lyù trung taâm caùc chöông trình ñieàu khieån caùc döõ lieäu nhaäp töø beân ngoaøi cuõng nhö phaùt sinh töø beân trong chöông trình ñieàu phaûi ñöôïc löu tröõ trong boä nhôù. Coù theå noùi boä nhôù laø nôi CPU thöôøng xuyeân trao ñoåi thoâng tin nhaát. Vì vaäy maø töø chi maùy tính ra ñôøi cho ñeán nay coäng vôùi söï caûi thieän khoâng ngöøng cuaû kyõ thuaät xöû lyù, boä nhôù ngaøy caøng ñöôïc toái öu hoaù khoâng chæ veà maët dung löôïng, kích thöôùc maø coøn caû veà thôøi gian truy xuaát döõ lieäu. Chuùng ta coù hai loaïi boä nhôù thoâng duïng thöù nhaát laø loaïi ñieän töø thöôøng thaáy nhaát ôû daïng baêng töø ñiaõ töø loaïi naøy coù öu ñieåm coù theå mang ñi ñöôïc dung löôïng lôùn, nhöôïc ñieåm truy xuaát chaäm. macïh ñieàu khieån döõ lieäu coàng keành. Loaïi thöù hai laø caùc loaïi maïch nhôù baùn daãn phöông thöùc nhôù döïa treân tính chaát vaät lyù cuûa chaát baùn daãn hay caùc traïng thaùi logic cuaû maïch soá. Loaïi naøy coù öu ñieåm toác ñoä truy xuaát döõ lieäu cao (haøng nano giaây-ns), kích thöôùc nhoû, ñieàu khieån deã. Nhöôïc ñieåm cuaû noù laø khoâng coù khaõ naêng tích tröõ döõ lieäu vôùi dung löôïng lôùn.
Ñeå coù theå choïn ra loaïi boä nhôù thích hôïp nhaát cho heä thoáng chuùng ta xeùt ñeán ñaëc tính cuaû moãi loaïi ñeå choïn löïa cho phuø hôïp vôùi yeâu caàu cuaû maïch.
a)Phaân tích yeâu caàu cuaû heä thoáng – choïn linh kieän:
*Caùc yeâu caàu cuaû heä thoáng kit:
Maïch nhôù phaûi ñöôïc gaén cuøng baêng maïch chính.
Dung löôïng ñaùp öùng yeâu caàu cuûa heä thoáng
Chöông trình ñieåu khieån kieåm soaùt khoâng ñöôïc maát sau khi caét nguoàn cung caáp
Toác ñoä trao ñoåi döõ lieäu phaûi cao hôn toác ñoä truy xuaát döõ lieäu cuaõ CPU söõ ñöôïc duïng.
Goïn nheï khoâng chieám nhieàu dieän tích.
Coâng suaát tieâu thuï thaáp.
Döïa vaøo yeäu caàu thöù nhaát vaø thöù sauù ta thaáy chæ coù boä nhôù baùn daån laø ñaùp öùng ñöôïc. Boä nhôù töø ñieän khoâng thích hôïp vì phaûi coù maïch ñieàu khieån trao ñoåi döõ lieäu, maïch ñieàu khieån trao ñoåi caùc chuyeån ñoäng cô khí. Hôn nöõa vieäc ñoïc ghi lieân tuïc khoâng cho pheùp söû duïng boä nhôù ñieän töø vaø cuoái cuøng laø boä nhôù ñieän töø tieâu thuï coâng suaát gaáp nhieàu laàn boä nhôù baùn daãn chính töø lyù do treân boä nhôù baùn daãn ñöôïc choïn thieát keá trong ñeà taøi naøy.
b) Keát noái chi tieát:
Ñeå keát noái vi ñieàu khieån vôùi boä nhôù moät caùch chi tieát phaûi ñaët ra moät soá yeâu caàu sau:
- Duøng Microcontroller ñeå truy xuaát ñöôïc 64 kbyte dung löôïng boä nhôù.
- Thieát keá 16 kbytes boä nhôù EPROM duøng hai IC 6264 coù dung löôïng 8kbytes/1 IC.
- Thieát keá boä nhôù RAM coù dung löôïng 16 kbytes duøng 2 IC 2764 coù dung löôïng 8 kbytes cho moãi IC
- Trong vuøng 64 kbyte chæ söõ duïng 32 kbytes ñaàu töø kbyte thöù 1 ñeán kbyte thöù 32. Kbyte thöù 33 ñeán kbyte thöù 64 khoâng söõ duïng cho boä nhôù maø söû duïng cho caùc muïc ñích khaùc.
- Ñiaï chæ cuaû vuøng nhôù 64 kbyte laø0000H-FFFFH vì chæ söõ duïng 32 kbyte ñaàu tieân neân vuøng nhôù naøy coù ñiaï chæ töø 0000H-7FFFH.
- Trong vuøng 32 kbyte ñaàu tieân. töø kbyte thöù 1 ñeán kbyte thöù 16 ñöôïc duøng cho boä nhôù EPROM coù ñòa chó töø 0000H -3FFFH. 16 kbyte keá tieáp theo ñuôïc söõ duïng cho boä nhôù RAM coù ñiaï chæ töø 4000H-7FFFH
+Thieát keá boä nhôù EPROM:
- Do EPROM trong yeâu caàu söû duïng coù dung löôïng 16 kbyte neân IC naøy phaûi coù 13 ñöôøng ñiaï chæ A12,A11,A10,A9…A0. Ñòa chæ ñaàu tieân laø0.0000.0000.00002 Vaø ñiaï chæ cuaû oâ nhôù cuoái cuøng laø 1.1111.1111.11112 neáu vieát theo soá HEXA 16 bit thì coù ñiaï chæ ñaàu tieân laø 0000H. vaø ñòa chæ cuoái cuøng laø FFFFH.
Nhö vaäy neáu gaén EPROM ñaàu tieân vaøo 16 kbyte ñaàu tieân noù seõ chieám baét ñaàu töø 0000H-1FFFH vaø EPROM thöù 2 seõ chieám vuøng nhôø keá tieáp coù ñiaï chæ töø 2000H-3FFFH ta coù baûn ñoà nhö sau:
IC
A15A14A13A12
A11A10A9A8
A7A6A5A4
A3A2A1A0
Hex
Kbyte
EFROM1
0 0 0 0
0 0 0 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0000
1FFF
1-8
EFROM2
0 0 1 0
0 0 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
2000
3FFF
9-16
Moãi EPROM coù 8 kbyte ñeå EPROM truy xuaát heát 8 kbyte ñoøi hoûi ngöôøi thieát keát noái 13 ñuôøng ñòa chæ A12,A11,A10,A9…A0 cuaû vi ñieàu khieån ñeán 13 ñuôøng ñòa chæ A12,A11,A10,A9…A0 cuaû boä nhôù, 8 ñöôøng döõ lieäu D7,D6,…D0 cuaû vi ñieàu khieån ñöôïc noái vôùi 8 ñöôøng döõ lieäu D7,D6…D0 cuaû 2 EPROM, ñöôøng tín hieäu EA\ ñöôïc keát noái vôùi ñöôøng OE\ cuaû 2 EPROM. Ñeán ñaây Microcontroller chæ giao tieáp vôùi boä nhôù thoâng qua ba bus laø bus ñòa chæ, bus döõ lieäu vaø bus ñieàu khieån, neáu döøng laïi ôû ñaây thì khi Microcontroller taïo ra moät ñiaï chæ ñeå truy xuaát moät oâ nhôù thì caû hai EPROM ñeàu nhaän ñöôïc ñòa chæ töø bus ñiaï chæ vaø cuøng döõ lieäu ra töø bus döõ lieäu. Khi ñoù Microcontroller nhaän vaøo ñiaï chæ khoâng bieát laø cuaû oâ nhôù naøo. Ñeå Microcontroller nhaän ñuùng döõ lieäu caàn truy xuaát cuaû oâ nhôù naøo thì phaûi thieát keá maïch giaûi maõ ñiaï chæ (seõ ñöôïc trình baøy sau).
Thieát keá boä nhôù RAM:
Boä nhôù RAM duøng laø 16 kbyte tieáp theo boä nhôù EPROM, söû duïng 2 RAM 2764 coù dung löôïng 8 kbyte, do dung löôïng cuûa RAM 2764 EPROM 6264 laø baèng nhau neân vaán ñeà thieát keá cho RAM töông töï nhö EPROM chæ khaùc ñòa chæ xuaát phaùt vaø chaân OE\ cuaû RAM ñöôïc ñeán chaân OE\ cuaû vi ñieàu khieån. Baûn ñoà nhôù cuaû RAM:
IC
A15A14A13A12
A11A10A9A8
A7A6A5A4
A3A2A1A0
Hex
Kbyte
RAM1
0 1 0 0
0 1 0 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
4000
5FFF
17-24
RAM2
0 1 1 0
0 1 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
6000
7FFF
25-32
Nhìn vaøo baûn ñoà nhôù ta thaáy raèng vuøng nhôù Ram coù ñòa chæ tieáp theo cuûa vuøng nhôù Rom vaø ñòa chæ ñaàu taeân 4000H keát thuùc ôû oâ nhôù cuoái cuøng taïi 7FFFH. Vaán ñeà coøn laïi laø giaûi maõ ñeå choïn oâ nhôù töông öùng vôùi töøng Ram.
+ Thieát keá maïch giaûi maõ ñòa chæ.
Töø baûng ñoà nhôù ta thaáy coù 3 bit A15A14A13 coù taùm traïng thaùi töông ñöôfg vôùi 8 vuøng nhôù, moãi vuøng nhôù coù dung löôïng 8kbyte. EPROM töông ñöông vôùi traïng thaùi 0002, EPROM2 töông vôùi traïng thaùi 0012, Ram1 traïng thaùi 0102, RAM2 traïng thaùi 0112. Caùc coøn laïi söû duïng ñeå giaûi maõ cho caùc thieát bò khaùc caàn truy xuaát.
A13 Y0\ CS – EPROM1
A14 Y1\ CS – EPROM2
Vcc A15 Y2\ CS - RAM1
E3 Y3\ CS – RAM2
E2 Y4\ CS – 82551
E1 Y5\ CS - 82552
Y6\ CS- 8279
Y7\
74LS138
Töøng traïng thaùi 3 bit cho pheùp truy xuaát töøng EPROM, töøng RAM. Khi moät EPROM hoaëc moät RAM ñöôïc truy xuaát thì caùc EPROM hoaëc RAM khaùc khoâng ñöôïc truy xuaát. Ñeå ñaûm baûo cho caùc öùng duïng cuûa kit, ngoaøi yeâu caàu ROM, RAM chuùng ta coøn phaûi quan taâm ñeán vieäc giao tieáp vôùi thieát bò beân ngoaøi thoâng qua IC 8255 vaø IC 8279 ñaûm nhaän hai cöïc kì quan troïng, vöøa queùt hieån thò vöøa giaûi maõ baøn phím. Nhìn chung taát caû nhöõng linh kieän xung quanh 8951 ñeàu keát noái song song vaøo Data Bus, Address Bus vaø control BUS nhö vaäy caàn phaûi coù moät söï giaûi ña hôïp choïn linh kieän cho CPU vaøo moät thôøi ñieåm naøo ñoù nhaèm traùnh söï xung ñoät Bus laøm cho caùc hoaït ñoäng cuûa CPU bò roái loaïn. Maïch giaói maõ ñòa chæ ñöôïc thieát keá nhö sau:
Hình 2 .6 : Giaûi Maõ Ñòa Chæ
Chaân A,B, C laàn löôït noái vaøo caùc chaân A13 A14 A15 cuûa 8951. Caùc ngoõ ra cuûa 74LS138 laàn löôït noái caùc chaân CS (chip select) cuûa ROM, RAM , 8255 vaø 8279.
3.Thieát keá boä giao ieáp ngoaïi vi:
Töông töï nhö boä nhôù 8255 cuõng coù ba nhoùm chaân cô baûn
-Caùc chaân döõ lieäu ñoù töø Do -D7;PA0-PA7 ;PB0-PB7 ;PC 0-PC7
Caùc ñòa chæA0,A1
-Caùc chaân ñieàu khieån: CS\(chip select), WR\(write), RD\(read), RST(reset)Vì ñaây laø giao tieáp döõ lieäu giöõa heä thoáng vôùi döõ lieäu beân ngoaøi neân khaùc vôùi heä thoáng nhôù chuùng coù hai nhoùm döõ lieäu. Nhoùm döõ lieäu D0-D7 ñöôïc noái tröïc tieáp ñeán bus döõ lieäu cuûa heä thoáng. Nhoùm coång xuaát nhaäp PA, PB, PC ñöôïc ñöa ra ngoaøi qua connector ñeå giao tieáp vôùi thieát bò beân ngoaøi. Trong 8255 coù ba boä ñeäm döõ lieäu cho ba port vaø moät thanh ghi duøng cho vieäc aán ñònh cheá ñoä hoaït ñoäng (thanh ghi töø ñieàu khieån). Vieäc ñònh vò boán vuøng döõ lieäu naøy thoâng qua caùc chaân A0, A1 cuûa töøng IC 8255. Töông töï nhö boä nhôù 8255 cuõng chieám moät choã trong baûn ñoà nhôù, do coù 2 coång xuaát nhaäp neân seõ coù hai vuøøng nhôù ñöôïc choïn sao cho deã daøng trong vieäc truy xuaát. Trong heä thoáfg cuûa chuùng ta moãi IC ñöôïc choïn coù ñòa chæ nhö sau:
+ 8255 -1 coù ñòa chæ töø 8000H – 8003H
+ 8255 –2 Coù ñòa chæ töø A00H – A003H
Sôû dó ta choïn ñòa chæ cuûa 8255 nhö vaäy laø do ta qui ñoàng dung löôïng cuûa moãi 82555 laø 8 Kbyte ñeå deã daøng cho vieäc giaûi maõ. Ta söû duïng phöông phaùp ñònh vò theo caùch ñònh vò boä nhôù IO(mapped memory) coù nghóa laø ñònh vò theo caùch ñònh vò boä nhôù, do ñoù ñòa chæ duøng cho vieäc ñònh vò naøy phaûi ñuû 16 bit. Ñe
Các file đính kèm theo tài liệu này:
- Thiết kế - thi công kit Vi Điều Khiển 8951.DOC