Vì caùc ngoõ vaøo_ra cuûa coång COM maùy tính ôû möùc ñieän aùp 12v neân ta phaûi chuyeån ñoåi möùc ñieän aùp 12v (0 5)v vaø ngöôïc laïi töø (0 5)v 12v ñeå ñaùp öùng caùc ngoõ vaøo_ra cuûa IC soá vaø caùc linh kieän khaùc. Ñeå ñaûm baûo khaû naêng chuyeån ñoåi ñieän aùp ñöôïc chính xaùc, ñôn giaûn ta choïn IC chuyeån ñoåi ñeän aùp laø IC 1488 ( chuyeån ñoåi töø (0 5)v 12v ) vaø IC 1489 (chuyeån ñoåi töø 12v (0 5)v ). Vì 1488 vaø 1489 laø hai IC ñöôïc tích hôïp, chuyeân duøng vaø khaû naêng chuyeån ñoåi ñieän aùp chính xaùc hôn caùc loaïi Op_Am vaø caùc linh kieän rôøi khaùc.
73 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2296 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Ứng dụng công nghệ thông tin trong Kinh tế doanh nghiệp, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
anh ghi naøy cho pheùp 4 kieåu ñieàu khieån ngaét taùc ñoäng leân "chip ngaét" baèng ngoõ ra INTRPT. Khi RESET caùc bit töø 0 ñeán 3 cuûa thanh ghi naøy, ta coù theå boû kieåu ngaét heä thoáng cuûa noù. Khi SET caùc bit töø 0 ñeán 3, ta choïn kieåu ngaét cho pheùp.
Bit
Kieåu ngaét
0
Cho pheùp ngaét ñeå thu döõ lieäu
1
Cho pheùp ngaét baùo vuøng ñeäm phaùt roãng
2
Cho pheùp ngaét baùo traïng thaùi ñöôøng daây
3
Cho pheùp ngaét baùo traïng thaùi Modem
4
Baèng 0
5
Baèng 0
6
Baèng 0
7
Baèng 0
a4. Thanh ghi choát soá chia BAUD_RATE:
BAUD_RATE ñöôïc caøi ñaët phuï thoäc vaøo 2 thanh ghi maø con soá cuûa chuùng phaûi ñöôïc chia bôûi xung nhòp 1.8432 MHz. Keát quaû cho ra taàn soá baèng 16 laàn BAUD_ RATE. Hai thanh ghi naøy mang 2 byte: 1 byte choát soá chia coù nghóa thaáp nhaát (LSB), vaø 1 byte choát soá chia coù nghóa cao nhaát (MSB). Nhöõng soá chia naøy duøng ñeå taïo ra nhöõng toác ñoä theo BAUD_RATE khaùc nhau.
BAUD_RATE
DECEMAL
HEX
MSB
LSB
50
2304
900
9
00
100
1152
480
4
80
300
384
180
1
80
1200
96
60
0
60
2400
48
30
0
30
4800
24
18
0
18
9600
12
0C
0
0C
Toác ñoä daõy BAUD_RATE trong baûng khoâng phaûi laø coá ñònh. Nhöõng giaù trò ôû khoaûng giöõa chuùng cuõng coù theå ñöôïc taïo ra baèng caùch choïn soá chia töông öùng.
b. Caùc thanh ghi traïng thaùi:
Coù 3 thanh ghi traïng thaùi töôøng trình ñeán CPU nhöõng gì ñang xaûy ra ôû nhöõng vuøng khaùc nhau cuûa UART.
b1. Thanh ghi traïng thaùi ñöôøng daây: (Line Status Register)
Taùm bit thanh ghi naøy töôøng trình ñeán CPU nhöõng thoâng tin traïng thaùi veà söï chuyeån bieán döõ lieäu.
Bit
Chuõ vieát taét
Teân goïi
0
DR
Data set ready
1
OE
Overrun error
2
PE
Parity error
3
FE
Frame error
4
BI
Break interrup
5
THRE
Transmitter hold register empty
6
TSRE
Tx shift register empty
7
= 0
- Bit 0 : Ñaây laø bit thoâng baùo döõ lieäu thu ñaõ saün saøng. Noù SET leân moät baát kyø khi naøo 1 kyù töï vöøa môùi ñöôïc nhaän vaø chuyeån vaøo beân trong thanh ghi vuøng ñeäm thu. Bit 0 coù theå Reset trôû veà 0 baèng vieäc ñoïc döõ lieäu thu töø thanh ghi ñeäm thu hoaëc ghi möùc 0 leân noù.
- Bit 1 : Bit naøy thoâng baùo loãi traøn. Noù thoâng baùo laø döõ lieäu beân trong thanh ghi ñeäm thu chöa ñöôïc ñoïc tröôùc khi kyù töï keá tieáp ñöôïc ñeán, vì vaäy noù seõ phaù hoûng kyù töï tröôùc.
- Bit 2 : laø bit baùo loãi cöïc tính, thoâng baùo ñaõ thu moät kyù töï khoâng ñuùng chaún (hoaëc leû) nhö ñaõ ñöôïc choïn trong Bit choïn löïa trong Bit choïn löïa chaún leû ôû thanh ghi ñieàu khieån ñöôøng daây.
- Bit 3 : Laø bit baùo loãi Frame, noù thoâng baùo ñaõ thu moät kyù töï khoâng coù Stop bit.
- Bit 4 : laø moät ngaét cuûa phaàn thu, noù ñöôïc Set leân 1 baát kyø khi naøo ngoõ vaøo thu döõ lieäu ôû möùc 0 laâu hôn thôøi gian chieàu daøi cuûa 1 töø.
- Bit 5 : Bit naøy thoâng baùo thanh ghi ñeäm phaùt roãng. Noù baùo cho boä ñieàu khieån laø saün saøng nhaän moät kyù töï môùi ñeå phaùt ñi. Bit naøy Set leân möùc 1 khi 1 kyù töï nöõa môùi ñöôïc chuyeån töø thanh ghi löu giöõ phaàn phaùt. Noù ñöôïc Set trôû veà möùc 0 khi CPU naïp moät töø môùi vaøo thanh ghi löu giöõ phaàn phaùt.
- Bit 6 : Bit naøy cuõng baùo phaàn ñeäm phaùt roãng. Noù ñöôïc Set leân 1 baát kyø khi naøo maø caû hai thanh ghi ñeäm phaùt vaø thanh ghi dòch chuyeån phaàn phaùt ñeàu roãng. Noù ñöôïc Reset trôû veà möùc 0 khi THR vaø TSR ñöôïc chöùa kyù töï döõ lieäu.
- Bit 7 : khoâng duøng.
b2 . Thanh ghi traïng thaùi Modem: (Modem Control Register)
Thanh ghi naøy cho nhöõng thoâng tin veà traïng thaùi cuûa nhöõng ñöôøng baét tay. Moâ taû nhö sau:
Bit
Teân
YÙ nghóa
0
Delta CTS
CTS bò thay ñoåi traïng thaùi
1
Delta DSR
DSR bò thay ñoåi traïng thaùi
2
TERI
Ñöôøng daây ñoå chuoâng ñoåi töø ON leân OFF
3
Delta RLSD
Tín hieäu taùch soùng bò thay ñoåi
4
CTS
Ngoõ vaøo xoùa ñeå gôûi ôû möùc cao
5
DSR
Ngoõ vaøo döõ lieäu saün saøng ôû möùc cao
6
RI
Chæ thò chuoâng ôû möùc cao
7
RLSD
Ñöôøng daây taùch soùng ôû möùc cao
b3. Thanh ghi ñaëc tính ngaét: (Interrupt Identification Register)
Thanh ghi naøy cung caáp thoâng tin veà traïng thaùi hieän haønh cuûa nhöõng ngaét ñöôïc phaùt ñi.
Bit 0 Set leân 1 laø khoâng coù moät ngaét naøo gôûi ñi. Khi bit 0 ôû möùc 0, bit 1 vaø bit 2 chæ ra ngaét naøo ñaõ ñöôïc gôûi ñi theo baûng sau :
Bit
2
1
0
Möùc öu tieân
Kieåu ngaét
Nguyeân nhaân ngaét
Reset laïo ngaét
0
0
1
-
0
0
-
1
1
0
Cao nhaát
Traïng thaùi ñöôøng daây thu
- Loãi traøn
- Loãi cöïc tính
- Loãi khung
- Break interrup
Ñoïc thanh ghi traïng thaùi ñöôøng daây
1
0
0
Thöù hai
Cho pheùp thu döõ lieäu
Cho pheùp thu döõ lieäu
Ñoïc thanh ghi ñeäm thu
0
1
0
Thöù ba
Thanh ghi löu giöõ phaàn phaùt roãng
Thanh ghi löu giöõ phaàn phaùt roãng
Ñoïc IIR hoaëc ghi vaøo thanh ghi löu giöõ phaàn phaùt
0
0
0
Thöù tö
Traïng thaùi Modem
- CTS
- DSR
- RI
Ñaõ nhaän tin
Ñoïc thanh ghi traïng thaùi Modem
c. Caùc thanh ghi ñeäm:
Kieåu thanh ghi thöù 3 trong UART laø caùc thanh ghi ñeäm, coù hai thanh ghi ñeäm: Thanh ghi löu giöõ phaàn phaùt (Transmitter Holding Register) vaø thanh ghi ñeäm thu (Receiver Buffer Register).
c1. Thanh ghi ñeäm thu:
Thanh ghi naøy löu giöõ kyù töï sau cuøng vöøa môùi nhaän ñöôïc. Moãi laàn noù ñöôïc ñoïc, thanh ghi traïng thaùi ñöôøng daây seõ chæ thò vuøng ñeäm thu roãng cho tôùi khi nhaän ñöôïc moät kyù töï khaùc. Neáu kyù töï thöù hai nhaän ñöôïc tröôùc kyù töï thöù nhaát ñoïc xong, moãi loãi traøn seõ ñöôïc thoâng baùo.
c2. Thanh ghi löu giöõ phaàn phaùt:
Thanh ghi löu giöõ phaàn phaùt löu laïi kyù töï keá tieáp ñeå chuaån bò phaùt ñi. Kyù töï ñöôïc ñaët vaøo baèng chöông trình cuûa ngöôøi vieát. Thanh ghi traïng thaùi ñöôøng daây seõ thoâng baùo khi moät kyù töï vöøa ñöôïc phaùt ñi.
Ñòa chæ cuûa caùc thanh ghi ñöôïc choïn nhö sau:
Ñòa chæ
Thanh ghi ñöôïc choïn
XF8
Thanh ghi ñeäm phaùt
XF8
Thanh ghi ñeäm thu
XF8
Thanh ghi choát soá chia LSB
XF9
Thanh ghichoát soá chia MSB
XF9
Thanh ghi cho pheùp ngaét
XFA
Thanh ghi ñaëc tính ngaét
XFB
Thanh ghi ñieàu khieån ñöôøng daây
XFC
Thanh ghi ñieàu khieån modem
XFD
Thanh ghi traïng thaùi ñöôøng daây
XFE
Thanh ghi traïng thaùi modem
Trong ñoù : Chöõ X duøng ñeå choïn coång COM1 hoaëc COM2. X = 3 duøng cho COM1, X = 2 duøng cho COM2.
4. Giao tieáp giöõa 8251A vôùi boä vi xöû lyù:
Hình 12 trình baøy keát noái giao tieáp ñieån hình giöõa boä vi xöû lyù vôùi USART 8251A.
CS
C/D
WR
RD
CLK
RxRDY
RTS
D0 - D7
Data Bus
Add Bus
RST 6.5
RST
CLK
IN
OUT
Rx/Tx CLKS
f = "d"*Baud
TxC
RxC
TxD
RxD
SERIAL O/P
SERIAL I/P
CTS
A7
A0
CPU
8251A
Hình 12
Giao tieáp cuûa 8251A söû duïng ñaëc tính xuaát nhaäp boä tích luõy cuûa Intel 8085. Chaân RxRDY leân möùc cao High seõ gaây ra moät ngaét ñöa tôùi mP baùo cho CPU bieát ñaõ thu moät kyù töï. Chaân TxRDY khoâng ñöôïc duøng ñeå taïo ra ngaét CPU nhö treân. Trong tröôøng hôïp naøy mP phaûi hoûi voøng bit TxRDY cuûa thanh ghi traïng thaùi tröôùc khi moät kyù töï môùi ñeå phaùt.
* Hoûi voøng (Polling) vaø söû duïng ngaét ñeå xuaát nhaäp:
Caùc chöông trình xuaát nhaäp trong heä thoáng maùy tính thöôøng ñöôïc phaân loaïi nhö : hoûi voøng hoaëc ñieàu khieån ngaét. Hoûi voøng coù nghóa laø mP seõ ngöng caùc hoaït ñoäng khaùc moät caùch ñònh kyø vaø hoûi UART ñaõ nhaän döõ lieäu môùi chöa hoaëc saün saøng phaùt kyù töï keá tieáp chöa. Coâng vieäc naøy thöôøng ñoøi hoûi mP phaûi ñoïc thanh ghi traïng thaùi cuûa UART. Moät chöông trình ñieàu khieån ngaét bao haøm yù nghóa mP vaãn tieáp tuïc caùc hoaït ñoäng khaùc vaø chæ ngöng khi traû lôøi moät tín hieäu ngaét ñöôïc gôûi tôùi tö ø UART.
Hoûi voøng ñeå quyeát ñònh traïng thaùi cuûa UART haïn cheá söï caàn thieát phaûi coù ngaét phaàn cöùng nhöng hieäu quaû söû duïng thôøi gian laøm vieäc cuûa mP seõ thaáp hôn. Cuõng vaäy, khi söû duïng hoûi voøng ñeå quyeát ñònh traïng thaùi thu phaûi heát söùc caån thaän ñeå ñaûm baûo raèng loãi traøn khoâng xaûy ra. Söï quyeát ñònh duøng caùc ngaét hoaëc hoûi voøng ñeå xuaát nhaäp ñeàu phaûi ñöôïc caân nhaéc chi töøng öùng duïng cuï theå, ñieàu naøy döïa vaøo caùc yeáu toá nhö ñoä phöùc taïp cuûa phaàn cöùng, phaàn meàm vaø caùc öu tieân cuûa nhieäm vuï heä thoáng.
Toùm laïi:
* Ñoái vôùi Teletype vì yeâu caàu truyeàn khoâng cao laém, hôn nöõa maùy Teletype khoâng theå naøo phaùt ñi hoaëc thu nhaän caùc Parity bit hoaëc kieåm tra caùc bit naøy ñöôïc, neân ta khoâng Set caùc bit parity.
* Nhö ñaõ neâu ôû phaàn tröôùc, vì Teletype coù moät söï baét tay phaàn cöùng. Ñeå laøm coâng vieäc naøy ta choïn:
- DSR (Data Set Ready): duøng ñeã nhaän bieát tín hieäu keát noái gôûi ñeán töø maùy Teletype töùc laø khi ñieän aùp ñöôøng thu cuûa maïch töø +60V (logic 0) chuyeån thaønh -60V (logic 1) thì DSR seõ chæ thò.
- DTR (Data Terminal Ready): sau khi nhaän ñöôïc tín hieäu keát noái, duøng DTR ñeå xuaát ra ñöôøng phaùt cuûa maïch töø logic 0 ® logic 1 ñeå gôûi ñeán ñoái phöông hoaøn thaønh coâng vieäc baét tay phaàn cöùng.
CHÖÔNG V : GIÔÙI THIEÄU VEÀ NGAÉT CUÛA MAÙY VI TÍNH
I. Caùc loaïi ngaét cuûa moät maùy vi tính PC:
Ngöôøi ta chia ngaét thaønh hai loaïi : Ngaét cöùng vaø ngaét meàm.
1. Ngaét cöùng :
Coøn goïi laø ngaét ngoaøi vì do nguyeân nhaân beân ngoaøi. Vi xöû lyù coù caùc loái vaøo daønh cho ngaét ngoaøi. Khi coù tín hieäu vaøo caùc loái naøy, vi xöû lyù ñang thöïc hieän leänh cuûa chöông trình seõ bò döøng.
* Ngaét NMI (Non Maskable Interrupt - Ngaét khoâng che ñöôïc)
Khi coù ngaét naøy, vi xöû lyù döøng chöông trình sau leänh ñang thöïc hieän, thanh ghi chæ thò leänh vaø thanh ghi chæ thò Flag ñöôïc löu giöõ, hai bit IF (Interrup Flag) vaø TF (Trap Flag) bò xoùa veà 0 ñeå caám ngaét ngoaøi tieáp theo vaø khoâng coù baãy. Muoán cho pheùp hay khoâng cho pheùp ngaét naøy xaûy ra, chuùng ta duøng moät Trigô ñeå maéc loái vaøo ngaét tröôùc khi ñöa vaøo ngaét tröôùc khi ñöa vaøo loái vaøo ngaét NMI.
* Ngaét INMR:
- Ngaét naøy ñöôïc cho pheùp (ghi IF = 1) hay caám ngaét (IF = 0) vaøo thanh ghi Flag.
- Ñöôïc xoùa veà 0 bôûi leänh CLI (Clear Interrup).
- Ñöôïc xaùc laäp leân 1 bôûi leänh STI.
- Thöôøng ñöôïc noái vôùi loái ra yeâu caàu ngaét cuûa vi maïch xöû lyù öu tieân ngaét (8214, 8159).
* Ngaét Reset:
Ñaây thöïc söï khoâng phaûi laø ngaét, chæ töông öùng vôùi vieäc treo chöông trình taïm thôøi. Kh i coù tín hieäu töø ngoaøi vaøo loái vaøo Reset hay coù leänh Reset cuûa chöông trình, taát caû caùc thanh ghi cuûa vi xöû lyù bò xoùa veà khoâng, tröø thanh ghi ñoaïn (CS) ñöôïc naïp ñòa chæ ñaàu tieân cuûa chöông trình töï kieåm tra Port.
2. Ngaét meàm: (Hay ngaét beân trong do leänh cuûa chöông trình)
Do vi xöû lyù gaëp caùc leänh gaây ra ngaét hoaëc tình huoáng ñaëc bieät khi thöïc hieän leänh (ngaét logic vaø ngaét cuûa heä ñieàu haønh).
- Ngaét do leänh : Ñoù laø ngaét khi thöïc hieän caùc leänh CALL, HLT, INT.
- Ngaét logic hay caùc ngoaïi tröø : xaûy ra khi gaëp caùc tình huoáng ñaëc bieät sau :
+ Chia moät soá cho 0 (vectô 0).
+ Vöôït quaù noäi dung thanh ghi hay boä nhôù (vectô 4).
+ Thöïc hieän töøng böôùc (vectô 1).
+ Ñieåm döøng chöông trình do ngöôøi söû duïng ñònh huoáng (vectô 3).
- Ngaét cuûa heä ñieàu haønh: Ñoù laø caùc ngaét do heä ñieàu haønh quy ñònh ñeå phuïc vuï trao ñoåi tin cuûa caùc thieát bò ngoaøi nhö INT 10, INT 16, INT 21 . . .
II. Thuû tuïc xöû lyù ngaét cuûa chöông trình:
Khi coù moät tín hieäu yeâu caàu ngaét chöông trình ñöa vaøo chaân yeâu caàu ngaét (INTR), quaù trình ngaét chöông trình ñöôïc dieãn ra nhö sau:
- Löu giöõ tin veà traïng thaùi cuûa vi xöû lyù luùc coù tín hieäu yeâu caàu ngaét vaø nôi chöông trình chính bò giaùn ñoaïn.
- Vi xöû lyù gôûi tín hieäu xaùc nhaän hay cho pheùp ngaét - INTA vaø ñoïc vectô ngaét.
- Chuyeån sang chöông trình con phuïc vuï ngaét.
- Trôû veà choå chöông trình chính bò ngaét vaø tieáp tuïc thöïc hieän chöông trình ñoù.
1. Löu giöõ tin veà choå bò ngaét chöông trình:
ÔÛ cuoái moãi chöông trình leänh, VXL kieåm tra xem coù yeâu caàu ngaét naøo gôûi ñeán hay khoâng. Neáu coù yeâu caàu, VXL tieán haønh löu tröõ tin veà nôi bò ngaét chöông trình. quaù trình löu giöõ tin tieán haønh theo caùc böôùc sau:
- Giaûm con troû ngaên xeáp.
- Caám loái vaøo ngaét INTR baèng caùch xoùa bit IF ôû thanh ghi côø.
- Xoùa bit côø baãy trong thanh ghi côø.
- Giaûm SP ñi 2 vaø naïp noäi dung cuûa thanh ghi maïng leänh hieän haønh vaøo maûng nhôù ngaên xeáp coù ñòa chæ treân.
- Giaûm SP ñi 2 vaø naïp noäi dung thanh ghi con troû leänh hieän haønh vaøo boä nhôù ngaên xeáp coù ñòa chæ treân.
2. Gôûi tín hieäu cho pheùp ngaét vaø ñoïc vec tô ngaét:
Sau khi ñaõ löu tröõ tin veà vò trí bò ngaét cuûa chöông trình chính, VXL gôûi tín hieäu xaùc nhaän ngaét INTA (Interrup Acknowlege) cho khoái gheùp noái cuûa thieát bò ngoaøi. Tuøy caùch toå chöùc ngaét vaø taïo vectô ngaét, VXL söû duïng tín hieäu naøy ñeå ñoïc vectô ngaét töông öùng cuûa khoái gheùp noái vaøo thanh ghi chöùa A. VXL ñoïc noäi dung cuûa oâ nhôù coù ñòa chæ laø vectô ngaét ñeå bieát ñöôïc ñòa chæ ñaàu tieân cuûa chöông trình con phuïc vuï ngaét.
3. Thöïc hieän chöông trình con phuïc vuï ngaét:
Ñoù laø chöông trình maø ñòa chæ cuûa leänh ñaàu tieân naèm trong oâ nhôù coù ñòa chæ laø vectô ngaét. Keát thuùc chöông trình con naøy, coù leänh trôû veà ñeå VXL tieáp tuïc thöïc hieän chöông trình chính.
4. Thöïc hieän chöông trình chính:
Sau khi gaëp leänh trôû veà, VXL tieán haønh ñoïc vaø hoài phuïc caùc tin cuûa VXL luùc bò ngaét chöông trình ñaõ ghi nhôù ôû choå ngaét chöông trình. Quaù trình ñoïc ra naøy xaûy ra ngöôïc laïi vôùi quaù trình ghi vaøo vaø noäi dung:
- Thanh ghi con troû leänh trôû veà ñoä dôøi cuûa ñòa chæ leänh tieáp theo cuûa chöông trình chính bò ngaét trong maûng nhôù leänh.
- Thanh ghi maûng leänh veà ñòa chæ ñoaïn ñaàu tieân cuûa vuøng nhôù daønh cho chöông trình chính bò ngaét.
- Thanh ghi Flag luùc bò ngaét chöông trình.
III. Giôùi thieäu veà caùch söû duïng IRQ4:
IRQ4 laø moät trong nhöõng ñöôøng ngaét cöùng cuûa maùy tính. Trong maùy IBM_PC coù 8 ñöôøng ngaét cöùng vaø maùy tíng IBM PC_AT coù 16 ñöôøng ngaét cöùng, ñöôïc moä taû nhö sau:
IRQ
Thieát bò
NMI
Ngaét khoâng che
0
Ngaét thôøi gian
1
Ngaét baøn phím
2
Döï tröõ
3
COM2
4
COM1
5
Ñóa cöùng
6
Ñóa meàm
7
LPT1
Nhöõng ñöôøng ngaét naøy khoâng noái ñöôïc tröïc tieáp tôùi chip CPU, nhöng ñöôïc thoâng qua chip xöû lyù ngaét laø PIC_8259A (Programmable Interrupt Controller). Trong maùy IBM PC_AT coù hai boä ñieàu khieån naøy. Noù coù nhöõng möùc öu tieân cho caùc nhaát ñeå traùnh trình traïng loän xoän xaûy ra khi nhieàu ngaét ñeán khoâng theo moät traät töï naøo caû. Caùc möùc öu tieân naøy trong maùy IBM PC ñöôïc chæ ñònh ôû cao nhaát laø IRQ0 vaø thaáp nhaát laø IRQ7. Neáu nhieàu thieát bò ñeàu yeâu caàu söï chuù yù baèng caùch naâng caùc ñöôøng ngaét cuûa noù leân, boä ñieàu khieån ngaét seõ coù nhieàu ngoõ vaøo ôû möùc cao thì noù seõ gôûi chuùng ñeán CPU vôùi traät töï cuûa möùc ñoä öu tieân.
Trong PIC coù moät thanh ghi cho pheùp ngaét töø thieát bò gôûi ñeán. Maëc nhieân, IRQ4 vaø IRQ3 laø khoâng cho pheùp. Vì vaäy, neáu muoán duøng ngaét cho vieäc lieân laïc thoâng tin thì phaûi chæ thò cho PIC cho pheùp caùc ñöôøng ngaét töông öùng. Ñaây laø coâng vieäc ñoïc thanh ghi baèng leänh IN vôùi ñòa chæ coång laø 21H vaø Set Off bit töông öùng (bit 4 cho IRQ3 vaø bit 5 cho IRQ4) vaø OUT trôû laïi giaù trò ra Port 21H. Nhö vaäy thì PIC môùi coäng theâm caùc ngaét cuûa UART vaø cho noù gôûi ngaét tôùi.
Khi PIC nhaän ñöôïc moät ngaét, neáu ngaét ñoù laø cho pheùp vaø khoâng coù moät ngaét naøo khaùc gôûi ñeán nöõa, noù seõ ñöa möùc ñieän aùp döông leân ñöôøng ngaét ñoù ñeán CPU. Khi ñoù CPU seõ coâng nhaän ngaét, nghóa laø traû moät tín hieäu veà PIC yeâu caàu PIC chæ thò xem ngaét naøo vöøa môùi xaûy ra. Luùc ñoù PIC seõ gôûi moät con soá (thoâng qua Data Bus) ñeán CPU (laø con soá IRQ + con soá 8). Noùi caùch khaùc, ñoái vôùi IRQ4 noù gôûi con soá 12 (OCh), ñoái vôùi IRQ3 noù gôûi con soá 11 (08h), luùc naøy CPU seõ thöïc hieän caùc phaàn muïc töông öùng laø caát ñòa chæ chöông trình hieän haønh vaøo vuøng Stack vaø thöïc hieän leänh Call Far ñeán boä nhôù ñöôïc troû bôûi vectô ngaét cuûa ngaét trong baûng vectô ngaét. Vì vaäy, vôùi ngaét IRQ4 gôûi tôùi vieäc CPU thöïc hieän cuõng gioáng nhö INT 0Ch cuûa phaàn meàm.
Neáu baïn khoâng muoán CPU bò phaân chia khi coù nhieàu ngaét, bôûi vì noù can thieäp vaøo moät soá coâng vieäc xaáu laøm khoâng theå ngaét ñöôïc, ta coù theå chæ thò ñeán noù khoâng quan taâm ñeán caùi ngaét ñoù baèng leänh STI. Keát quaû cuûa leänh naøy laø chuyeåi ñoåi traïng thaùi côø IF trong CPU.
Vieäc Set côø IF khoâng laøm thay ñoåi baát cöù caùi gì trong PIC maø noù vaãn gôûi moät tín hieäu ngaét ñöôøng daây ñeán CPU khi noù nhaän ñöôïc moät ngaét trong nhöõng ngaét ñöôøng daây. Ngaét ñöôøng daây seõ treo leân möùc cao vaø CPU coù theå nhaän ra ñöôïc nguyeân nhaân cuûa ngaét vaø thöïc hieän leänh STI moät laàn nöõa.
Nhöõng ngaét khaùc gôûi ñeán khoâng nhaát thieát seõ maát ñi. Nhöõng thieát bò giöõ ñöôøng IRQ cuûa chuùng ôû möùc cao vaø PIC hieåu nhöõng thieát bò ñoù ñang caàn söï chuù yù. Noù seõ chaáp nhaän gôûi caùc ngaét trong thöù töï öu tieân cuûa chuùng.
Caùc ngaét coù theå bò treo, nhö vaäy keát quaû laø maát thoâng tin töø khi thieát bò khoâng taïo ra ñöôïc ngaét thöù hai cho tôùi khi kyù töï thöù nhaát vöøa ñöôïc coâng nhaän.
Coù hai lyù do taïi sao ngaét töø thieát bò khoâng ñöôïc CPU chuù yù ngay laäp töùc. Thöù nhaát laø noù bò xung ñoät vôùi caùc thieát bò khaùc coù möùc öu tieân cao hôn hoaëc coù nhöõng ngaét ñang bò treo. Tuy vaäy duøng phöông phaùp ngaét thöôøng nhanh hôn so vôùi phöông phaùp hoûi voøng.
Trong chöông trình xöû lyù ngaét phaàn meàm phaûi traû lôøi ngaét ñeán PIC baèng caùch gôûi giaù trò 20h ra port 20h. Neáu vieäc naøy khoâng ñöôïc thöïc hieän PIC seõ khoâng gôûi theâm moät ngaét naøo nöõa ñeán CPU.
IV. Söû duïng ngaét cuûa ROM_BIOS:
ROM_BIOS cung caáp 4 haøm xöû lyù truyeàn thoâng tuaàn töï maø chuùng ta coù theå truy xuaát chuùng qua ngaét 14h.
Ñeå söû duïng ngaét naøy, ta ñaëc giaù trò töø 0 - 3 trong thanh ghi AH ñeå xaùc ñònh haøm naøo seõ ñöôïc söû duïng vaø ñaët soá thöù töï coång caàn truy xuaát vaøo thanh ghi DX.
Soá thöù töï coång = 0 : COM1
Soá thöù töï coång = 1 : COM2
ÔÛ möùc ñoä chöông trình, ta coù theå choïn moät khoái gheùp noái noái tieáp baèng caùch gaùn maõ töông öùng vaøo thanh ghi DX vôùi giaù trò:
- 00h cho COM1
- 01h cho COM2
- 02h cho COM3
- 03h cho COM4
Caùc haøm cuûa ngaét 14h nhö sau:
1. Haøm soá 0 (Phuïc vuï 00h)
Khôûi phaùt khoái gheùp noái noái tieáp, taïo tham soá cho coång noái tieáp:
* Vaøo :
AH = 0
AL = Tham soá truyeàn
DX = Soá thöù töï coång noái tieáp
* Ra :
AX = Traïng thaùi ñöôøng daây truyeàn vaø Modem.
Phuïc vuï 00h aán ñònh nhöõng thoâng soá khaùc nhau cuûa khoái gheùp noái noái tieáp cuõng nhö RS_232. Ñoù laø caùc thoâng soá:
- Soá BAUD : Töùc toác ñoä trao ñoåi tin.
- Tính chaün leû.
- Soá bit döøng.
- Kích thöôùc kyù töï hay soá bit tin noái tieáp. nhöõng thoâng soá naøy ñöôïc toå hôïp trong maõ 8 bit, ñöôïc ñaët vaøo thanh ghi AL, theo thöù töï caùc bit nhö hình sau :
D6
D7
D4
D3
D5
D1
D0
D2
Baud Rate
Parity
Stop bit
Word Length
Giaù trò traû ra trong AX xem haøm soá 3:
- D7, D6, D5 maõ cuûa vaän toác (tính baèng Baud).
- D4, D3 maõ cuûa tính chaün leû.
- D2 maõ cuûa bit döøng.
- D1, D0 maõ cuûa caùc kích thöôùc kyù töï.
Caùc maõ treân theo caùc baûng sau:
D7
D6
D5
Vaän toác (bps)
0
0
0
110
0
0
1
150
0
1
0
300
0
1
1
600
1
0
0
1200
1
0
1
2400
1
1
0
4800
D4
D3
Tính chaún leû
0
0
Khoâng coù
0
1
Tính chaún leû
1
0
Khoâng coù
1
1
Tính chaún
D2
Soá bit döøng
0
Moät bit döøng
1
Hai bit döøng
D1
D2
Kích thöôùc kyù töï
0
0
Khoâng duøng
0
1
Khoâng duøng
1
0
7 bit
1
1
8 bit
2. Haøm soá 1 (Phuïc vuï 01h)
Haøm naøy gôûi moät kyù töï ñeán coång ñöôïc chæ ñònh.
* Vaøo :
AH = 01h
AL = Kyù töï gôûi
DX = Soá thöù töï coång noái tieáp
* Ra :
AH = Traïng thaùi ñöôøng truyeàn
AL = Traïng thaùi Modem
* Goïi INT 14h
Neáu coù loãi xaûy ra, bit D7 seõ ñöôïc baät leân 1, caùc bit coøn laïi chæ noäi dung loãi theo moâ taû sau ñaây:
Bit D1 : Loãi Overrun
Bit D2 : Loãi Parity
Bit D3 : Loãi Framing
Bit D4 : Moät Break daõ xaûy ra
Bit D5 : THR roãng
Bit D6 : THR vaø Transmitter Shift Register roãng
Bit D7 : Quaù thôøi gian
Chuù yù :
Kyù töï seõ khoâng gôûi ñeán khi ñöôøng tín hieäu baét tay (Handshaking Line) ôû traïng thaùi cao.
3. Haøm soá 2 : (Phuïc vuï 02h)
Nhaän moät kyù töï töø coång chæ ñònh:
* Vaøo :
AH = 02h
DX = Soá thöù töï coång noái tieáp
* Ra :
AL = Kyù töï nhaän
AH = Maõ traïng thaùi
* Goïi INT 14h
Chuù yù :
Haøm naøy seõ chôø moät kyù töï töø coång cho ñeán khi nhaän ñöôïc hoaëc quaù thôøi haïn chôø. Neáu khoâng coù kyù töï naøo ñöôïc nhaän hoaëc vieäc nhaän coù loãi thì bit D7 cuûa AH leân 1.
4. Haøm soá 3 (Phuïc vuï 03h)
Laáy traïng thaùi cuûa coång noái tieáp.
Haøm naøy traû ra thoâng tin cuï theå vaø traïng thaùi cuûa Modem vaø traïng thaùi cuûa ñöôøng truyeàn cuûa coång chæ ñònh.
* Vaøo :
AH = 03h
DX = Soá thöù töï cuûa coång noái tieáp
* Ra :
AH = Traïng thaùi ñöôøng truyeàn
AL = Traïng thaùi Modem
* Goïi INT 14h.
Keát quaû cuûa chöông trình laø :
- Traïng thaùi cuûa ñöôøng daây ñöôïc ñaët trong thanh ghi AH, coù caùc bit nhö hình döôùi.
- Traïng thaùi cuûa Modem ñöôïc ñaët trong thanh ghi AL.
D7
D2
D3
D4
D5
D1
D6
D0
AH
Loãi quaù thôøi gian
THR vaø TSR roãng
THR roãng
Phaùt hieän Break
Döõ lieäu saün saøng
Loãi Overrun
Loãi Parity
Loãi Framing
D7
D2
D3
D4
D5
D1
D6
D0
AL
Ngöôïc vôùi bit
Ngöôïc vôùi bit
Ngöôïc vôùi bit
Ngöôïc vôùi bit
CTS thay ñoåi
DSR thay ñoåi
RI thay ñoåi
CD thay ñoåi
Bit
YÙ nghóa
D7
Vöôït quaù ñoä treå
0 = khoâng coù sai soá
1 = coù sai soá
D6
Thanh ghi dòch chuyeån
0 = thanh ghi baän
1 = thanh ghi roãi
D5
Thanh ghi ñôïi
0 = thanh ghi baän
1 = thanh ghi roãi
D4
Ngaét bôûi tín hieäu Break
0 = khoâng bieát
1 = coù tín hieäu Break
D3
Giao thöùc
0 = khoâng coù loãi
1 = coù loãi
D2
Tính chaún leû
0 = khoâng coù loãi
1 = coù loãi
D1
Soá lieäu
0 = khoâng coù traøn
1 = coù traøn
D0
Soá lieäu ñaõ saün saøng
0 = khoâng coù soá lieäu saün saøng
1 = soá lieäu saün saøng
PHAÀN B
THIEÁT KEÁ PHAÀN CÖÙNG
I. Sô ñoà khoái:
KHOÁI GIAO TIEÁP
KHOÁI GIAO TIEÁP
PC
PC
NGUOÀN CUNG CAÁP
NGUOÀN CUNG CAÁP
II. Sô ñoà nguyeân lyù : (Xem sô ñoà)
III. Nguyeân lyù hoaït ñoäng:
Bình thöôøng doøng ñieän qua ñöôøng daây thu vaø phaùt cuûa maùy Teletype laø 20mA (möùc ñieän aùp laø möùc 0 töùc -12v). Khi maùy A muoán phaùt , DTR ñöôïc baät leân 1 (+12v) ® ngoõ ra 7432 ôû möùc logic 1 ® qua IC 74125 ñeå naâng doøng kích TxOK saùng vaø Q1 daãn baõo hoøa ® cöïc C cuûa Q1 xem nhö noái mass (VCEQ1 » 0,2v) ® Diode cuûa U7 daãn ® BJT trong U7 naøy daãn baõo hoøa ® cöïc C cuûa BJT naøy ñöôïc noái mass ® ngoõ ra cuûa U3 ôû möùc logic 1 (+12v) ® Q2 daãn ® moät doøng ñieän ñi töø +60V qua CCE cuûa Q2 ® led cuûa U9 ® Led cuûa U11 ® mass cuûa nguoàn 60v. Luùc naøy Q3 taét ® Led cuûa U8 taét, Led cuûa U10 taét ® hai BJT trong U8 vaø U10 khoâng daãn ® ngoõ ra cuûa 7486 ôû möùc logic 1 (+5v) ® ngoõ vaøo maùy tính CTS vaø RI ôû möùc logic 0 (-12v) vaø luùc naøy ñöôøng thu DSR cuûa maùy B ôû möùc logic 1 (+12v).
Khi maùy B nhaän ñöôïc tín hieäu DSR naøy, noù seõ laäp töùc gôûi traû tín hieäu traû lôøi cuõng baèng caùch Set ñöôøng phaùt DTR leân möùc logic1 ® ñöôøng thu DSR cuûa maùy A seõ nhaän ñöôïc möùc logic 1. Luùc naøy coi nhö hai maùy ñaõ ñöôïc baét tay vaø saün saøng truyeàn döõ lieäu.
Khi maùy A phaùt cho maùy B thì moät chuoãi xung seõ ñöôïc ñöa qua ngoõ ra TxD cuûa maùy A ñeå ñeán ngoõ vaøo RxD cuûa maùy B vaø luùc naøy möùc logic cuûa RxD cuûa maùy B seõ nhòp theo möùc nhòp cuûa maùy A vaø ñöôïc gôûi vaøo maùy tính. Ngöôïc laïi, khi maùy B phaùt cho maùy A thì möùc logic ôû RxD cuûa maùy A cuõng seõ nhòp theo möùc nhòp cuûa maùy B.
Giaû söû khi ñöôøng truyeàn hôû maïch , thì caùc Led cuûa U8 , U9 , U10 , U11 khoâng daãn ® caùc BJT cuûa U8 ,U9 , U10 , U11 taét ® ngoõ ra cuûa 7486 ôû möùc 0 , luùc naøy Led TXOPEN vaø RXOPEN saùng ® ngoõ vaøo maùy tính CTS vaø RI ñöôïc taùc ñoäng ôû möùc 1 (+12v ) ® maùy tính baùo ñöôøng truyeàn hôû maïch .
IV. Tính toaùn caùc linh kieän trong maïch:
Vì caùc ngoõ vaøo_ra cuûa coång COM maùy tính ôû möùc ñieän aùp ±12v neân ta phaûi chuyeån ñoåi möùc ñieän aùp ±12v ® (0 ¸ 5)v vaø ngöôïc laïi töø (0 ¸ 5)v ® ±12v ñeå ñaùp öùng caùc ngoõ vaøo_ra cuûa IC soá vaø caùc linh kieän khaùc. Ñeå ñaûm baûo khaû naêng chuyeån ñoåi ñieän aùp ñöôïc chính xaùc, ñôn giaûn ta choïn IC chuyeån ñoåi ñeän aùp laø IC 1488 ( chuyeån ñoåi töø (0 ¸ 5)v ® ±12v ) vaø IC 1489 (chuyeån ñoåi töø ±12v ® (0 ¸ 5)v ). Vì 1488 vaø 1489 laø hai IC ñöôïc tích hôïp, chuyeân duøng vaø khaû naêng chuyeån ñoåi ñieän aùp chính xaùc hôn caùc loaïi Op_Am vaø caùc linh kieän rôøi khaùc.
Ñeå ñaûm baûo an toaøn cho maùy tính ñoàng thôøi traùnh gaây söï coá ñöôøng truyeàn ñoái vôùi maùy tính ta duøng Opto caùch ly ñieän aùp 4N35. Opto 4N35 laø loaïi Opto ñôn ñöôïc duøng trong maïch laø vì khaû naêng ít bò nhieãu ñoái vôùi caùc linh kieän (chaúng haïn nhö caùc IC soá, caùc led ... ) so vôùi Opto ñoâi.
- Vì doøng thu_phaùt cuûa maùy Teletype ñöôïc qui ñònh ôû möùc 20mA neân choïn doøng qua led laø:
Iled = ICQ = 20 mA
VCC - VCES - VLED 5 -0,2 - 1,2
Þ R4 = = = 180 W
ILED 20 mA
® Choïn R4 = 220 W
Ñeå Q1 daãn baõo hoøa choïn b = (1/3 ¸ 1/4 ) bmax
Thoâng thöôøng choïn b = 30
IB = IC / b = 20 / 30 = 0,6 mA
Transitor Q1 daãn thì VBE = 0,7 v
VCC - VBE 5 - 0,7
RBQ11 = = = 7 KW
IB 0.6 mA
® choïn R1 =6,8 KW
Ñeå BJT giao hoaùn toát do aûnh höôûng doøng ræ ICBO ta choïn R3 = (3,3 ¸ 10) KW.
® choïn R3 = 10 KW
Töông töï ñoái vôùi caùc BJT Q2 , Q3 , Q4 ta choïn :
R8 = R9 = R19 = 10 KW
Vì caùc BJT cuûa Opto chæ hoaït ñoäng ôû cheá ñoä ngaét daãn neân choïn doøng cöïc C laø:
IC = 1 mA
R5 = VCC / IC = 5 / 1mA = 5 KW
® Choïn R5 = 6,8 KW
Töông töï ñoái vôùi caùc BJT cuûa caùc Opto U8 , U9 , U10 ,U11 ta cuõng choïn doøng:
IC = 1 mA ® Choïn R10 = R11 = R14 = R15 = 6,8 KW
Vì caùc R2 , R12 , R16 , R17 laø caùc ñieän trôû haïn doøng cho LED neân ta choïn baèng 330W
® Choïn R2 = R12 = R16 = R17 = 330W
Vì doøng thu_phaùt laø 20mA vaø ñieàu kieän ñeå BJT oån ñònh ñieåm laøm vieäc laø:
VCE = VCC / 2 = 60 / 2 = 30 v
VCC - VCE - 2VLED 60 - 30 - 2 ( 1,2 )
® R13 = = =1,37 KW
IC 20 mA
® Choïn R13 = 1,5 KW
Þ P = R13 . I2 = 1,5 . (0,02)2 = 0,6 w
Þ Choïn P = 1w .
PHAÀN C : XAÂY DÖÏNG PHAÀN MEÀM
I. Löu ñoà :
Khôûi taïo coång COM1
Baét tay thu = 1
Thu döõ lieäu
START
Ñöôøng truyeàn hôû maïch
Thoâng baùo ñöôøng truyeàn hôû maïch
Yeâu caàu phaùt döõ lieäu
Baét tay phaùt = 1
Yeâu caàu phaùt tröïc tieáp
Phaùt tröïc tieáp
Yeâu Caàu phaùt file
Phaùt file
Thoâng baùo maùy baän
Coù nhaán ESC
END
Y
N
Y
N
Y
N
Y
Y
Y
N
N
Y
N
LÖU ÑOÀ HAØM BAÉT TAY PHAÙT
START
Baät DTR leân 1
Ñoïc thanh ghi traïng thaùi
DSR = 1
Delay 50 ms
Ñoïc thanh ghi traïng thaùi
DSR = 1
Ñoå chuoâng
Thu döõ lieäu
Reset DTR veà 0
Phaùt hoâ hieäu
Return 1
Return 0
END
N
Y
N
Y
LÖU ÑOÀ HAØM BAÉT TAY THU
START
Ñoïc thanh ghi traïng thaùi
DSR = 1
Delay 50 ms
Ñoïc thanh ghi traïng thaùi
DSR = 1
Ñoå chuoâng
Set DTR veà 0
Phaùt hoâ hieäu
Thu döõ lieäu
Return 1
Return 0
END
N
Y
N
Y
Baät DTR leân 1
LÖU ÑOÀ HAØM PHAÙT TRÖÏC TIEÁP
Ñoåi sang chöõ hoa
Ñoïc kyù töï töø baøn phím laø ESC
In leân maøn hình
Kyù töï laø chöõ thöôøng
START
Ñoïc kyù töï töø baøn phím
Kyù töï laø chöõ hoa
Kyù töï laø soá
Côø baûng = 1 ?
Kyù töï laø khoaûng traéng
Kyù töï laø øcarrier return
In kyù töï leân maøn hình
In kyù töï leân maøn hình
In kyù töï leân maøn hình
Gôûi ñi maõ 1F H
Côø baûng = 0 ?
Gôûi ñi maõ 08 H
Gôûi ñi maõ 04 H
Ñaët côø baûng = 0
Gôûi ñi maõ 02 H
Gôûi ñi maõ 1B H
Ñaët côø baûng = 1
Tra baûng soá
Gôûi kyù töï ra coång COM
Tra baûng chöõ
Gôûi kyù töï ra coång COM
END
Y
N
Y
N
N
Y
Y
N
Y
Y
Y
N
N
N
Y
Môû ñöôïc file ?
START
Môû file caàn phaùt
Thoâng baùo môû ñöôïc file
Ñoïc kyù töï treân file
Ñoåi sang chöõ hoa
Ñoïc kyù töï töø file laø EOF
In leân maøn hình
Kyù töï laø chöõ thöôøng
Kyù töï laø chöõ hoa
Kyù töï laø soá
Côø baûng = 1 ?
Kyù töï laø khoaûng traéng
Kyù töï laø øcarrier return
In kyù töï leân maøn hình
In kyù töï leân maøn hình
In kyù töï leân maøn hình
Gôûi ñi maõ 1F H
Côø baûng = 0 ?
Gôûi ñi maõ 08 H
Gôûi ñi maõ 04 H
Ñaët côø baûng = 0
Gôûi ñi maõ 1B H
Ñaët côø baûng = 1
Tra baûng soá
Gôûi kyù töï ra coång COM
Tra baûng chöõ
Gôûi kyù töï ra coång COM
Y
Y
N
N
Y
N
N
Y
Y
N
Y
Y
Y
N
N
N
Y
LÖU ÑOÀ HAØM PHAÙT FILE
Ñoùng file ñaõ môû
Gôûi ñi maõ 02 H
Return 1
Return 0
END
LÖU ÑOÀ HAØM THU DÖÕ LIEÄU
START
Ñoïc thanh ghi traïng thaùi coång COM
Ñoïc thanh ghi traïng thaùi coång COM
Kyù töï saün saøng ?
Kyù töï laø 08 H ?
Kyù töï laø 02 H ?
Kyù töï laø 1F H ?
Kyù töï laø 1B H ?
Sang doøng môùi veà ñaàu doøng
Ñaët côø baûng = 1
Ñaët côø baûng = 0
Côø baûng = 0 ?
Tra baûng soá
Tra baûng chöõ
In kyù töï leân maøn hình
In kyù töï leân maøn hình
END
N
Y
Y
N
N
N
N
Y
Y
Y
N
Y
II. Chöông trình:
#include
#include
#include
#include
#include
#include
#include
#include
#ifndef TRUE
#define FALSE 0
#define ESC 27
#endif TRUE
void main(void)
{
int k=0;//,mh=0,mode=0;
char ky_tu;
void init(void);
int bat_tay_thu(void);
int bat_tay_phat(void);
int kiem_tra_RI(void);
void phat_truc_tiep(void);
void thu_du_lieu(void);
void phat_file(void);
void de_lay(int);
void demo(void);
// initgraph(&mh,&mode,"c:\\bc\\bgi");
// demo();
init();
printf("\n\n\n\t\t\t\tBam phim bat ky\r");
getch();
do
{
if((bat_tay_thu())==1) { thu_du_lieu(); }
if(kiem_tra_RI()==0)
{ clrscr();
printf("\n\n\n\DUONG THU_PHAT HO MACH\r");
printf("\n\n\n nhan ESC : thoat.");de_lay(100);goto tiep;
}
clrscr();
printf("\t\t\t nhan ESC : thoat. Nhan P: phat \n"); de_lay(100);
tiep:
if(kbhit())
{
ky_tu=getch();
if((ky_tu=='P') || (ky_tu=='p'))
{
if(bat_tay_phat()==0){clrscr();printf("\n\t\t\t\t May ban !");de_lay(100);}
else
{ printf("\n\r\t\tphat FILE nhan F ,phat truc tiep nhan T");
k=(int)getch();
switch(k)
{case 116: { phat_truc_tiep(); break; } //nhan T
case 102: { phat_file(); break; } //nhan F
}//end switch
}// else
} // end if ky tu = p
} // end kbhit()
}// end do_while
while((int)ky_tu!=ESC);
}//end main
/*==========================================================*/
//init-- khoi tao cong noi tiep
void init(void)
{
disable();
//cho phep ngat nhan ky tu
outportb((int)&COM -> interrupt_enable,I_CHAR_IN);
//xac dinh kieu truyen va cai toc do truyen
outportb((int)&COM -> format,F_BAUD_LATCH|\
F_NO_BREAK|F_PARITY_NONE|F_STOP2|F_DATA5);
//toc do truyen byte thap
outportb((int)&COM -> baud_l,SPEED & 0xFF);
//toc do truyen byte cao
outportb((int)&COM -> baud_h,SPEED >> 8);
//tra lai truyen thu binh thuong
outportb((int)&COM -> format,F_NORMAL|\
F_NO_BREAK|F_PARITY_NONE|F_STOP2|F_DATA5);
outportb((int)&COM -> out_control,O_OUT1|\
O_OUT2|O_RTS|O_0DTR);
//doc thanh ghi dau vao de xoa co du lieu cua no
//xoa thanh ghi dem thu
(void)inportb((int)&COM -> data);
//xoa thanh ghi cho phep ngat
(void)inportb((int)&COM -> interrupt_enable);
//xoa ngat thanh ghi luu giu phan phat rong
(void)inportb((int)&COM -> interrupt_id);
//xoa thanh ghi trang thai duong day
(void)inportb((int)&COM -> status);
//xoa thanh ghi trang thai modem
(void)inportb((int)&COM -> i_status);
//tra loi ngat
outportb(0x20,0x20);//xoa ngat
enable();
}//end init
/*=========================================================*/
// ham bat tay phan cung
int bat_tay_thu(void)
{
void de_lay(int);
void do_chuong(void);
void phat_ho_hieu(void);
void thu_du_lieu(void);
int DSR =0;
DSR = inportb((int)&COM -> i_status);
if(DSR & I_DSR!=1) return(0);
else
{
de_lay(50);
DSR = inportb((int)&COM -> i_status);
}
if(DSR & I_DSR)
{
outportb((int)&COM -> out_control,O_DTR);de_lay(2);
do_chuong();
outportb((int)&COM -> out_control,O_0DTR);de_lay(2);
phat_ho_hieu();
// outportb((int)&COM -> data, 0x00);
thu_du_lieu();
return(1) ;
}
else return(0);
}//end bat_tay_thu
/*==========================================================*/
int bat_tay_phat(void)
{ void de_lay(int);
void do_chuong(void);
void phat_ho_hieu(void);
void thu_du_lieu(void);
int dem = 5,DSR=0,ch;
while(dem != 0)
{
outportb((int)&COM -> out_control, O_DTR); de_lay(100);
DSR=inportb((int)&COM -> i_status);
if(DSR&I_DSR)
{
de_lay(50);
DSR=inportb((int)&COM -> i_status);
if(DSR&I_DSR)
{
do_chuong();
thu_du_lieu();
outportb((int)&COM -> out_control,O_0DTR);
phat_ho_hieu();
// outportb((int)&COM -> data, 0x00);
return(1);
}
else return(0);
}
dem--;
}//end while
return(0);
}//end bat_tay_phat
/*==========================================================*/
//ham phat truc tiep
void phat_truc_tiep(void)
{ void de_lay(int);
char ch;
int ch1=0,*p1,*p2,co_bang2=0;
int bang_chu2[] =
{
0x03,0x19,0x0E,0x09,0x01,
0x0D,0x1A,0x14,0x06,0x0B,
0x0F,0x12,0x1C,0x0C,0x18,
0x16,0x17,0x0A,0x05,0x10,
0x07,0x1E,0x13,0x1D,0x15,
0x11,0x04,0x04,0x04,0x04,
0x04,0x04
};
int bang_so2[] =
{
0x0D,0x11,0x14,0x09,0x16,
0x1A,0x04,0x1F,0x12,0x04,
0x04,0x0C,0x03,0x1C,0x1D,
0x16,0x17,0x13,0x01,0x0A,
0x10,0x15,0x07,0x06,0x18,
0x0E,0x1E,0x04,0x0F,0x04,
0x19,0x04
};
p1 = bang_chu2; p2 = bang_so2;
clrscr();
do
{
ch = getch();
if((int)ch== 32) { outportb((int)&COM -> data,0x04);printf("%c",ch);}
if((int)ch == 13) { outportb((int)&COM -> data,0x08);printf("\n\r"); }
if((int)ch>=33 && (int)ch<=64)
{
if(co_bang2==0){outportb((int)&COM->data,0x1B);de_lay(10);co_bang2=1;}
printf("%c",ch);
ch1 = (int)ch - 33; outportb((int)&COM -> data, p2[ch1]);de_lay(2);
}
if((int)ch>=97 && (int)ch<=122) ch =toupper(ch);
if((int) ch>=65 && (int)ch<=90)
{
printf("%c",ch);
if(co_bang2==1){outportb((int)&COM -> data,0x1F);de_lay(10);co_bang2=0;}
ch1=(int)ch - 65; outportb((int)&COM -> data, p1[ch1]);
}
} //end do while
while(ch !=ESC);
outportb((int)&COM -> data,0x02);de_lay(10);
return;
}//end phat_truc_tiep
/*=========================================================*/
void phat_file(void)
{
void de_lay(int);
int c,ch1,*p1,*p2,co_bang2=0;
char t1[14];
FILE *f1;
int bang_chu2[] =
{
0x03,0x19,0x0E,0x09,0x01,0x0D,
0x1A,0x14,0x06,0x0B,0x0F,0x12,
0x1C,0x0C,0x18,0x16,0x17,0x0A,
0x05,0x10,0x07,0x1E,0x13,0x1D,
0x15,0x11,0x04,0x04,0x04,0x04,
0x04,0x04
};
int bang_so2[] =
{
0x0D,0x11,0x14,0x09,0x16,0x1A,
0x04,0x0F,0x12,0x04,0x04,0x0C,
0x03,0x1C,0x1D,0x16,0x17,0x13,
0x01,0x0A,0x10,0x15,0x07,0x06,
0x18,0x0E,0x1E,0x04,0x0F,0x04,
0x19,0x04
};
p1=bang_chu2; p2=bang_so2;
clrscr();
printf("\n vao ten tep can phat : "); gets(t1);
f1=fopen(t1,"rt");
if(f1==NULL) { printf("\n KHONG MO DUOC TEP %s ",t1); de_lay(100); goto thien; }
do
{
c=(int)fgetc(f1);
if(c==32) {printf("%c",c);outportb((int)&COM -> data,0x04);de_lay(2);}
if(c==10) {printf("\n\r");outportb((int)&COM -> data,0x08);de_lay(2);}
if(c >= 33 && c <= 64)
{
printf("%c",c);
if(co_bang2==0) {outportb((int)&COM -> data,0x1B);de_lay(10);co_bang2=1;}
ch1=c-33;outportb((int)&COM -> data,p2[ch1]);de_lay(2);
}
if(c >= 97 && c <= 122) c = toupper(c);
if(c >= 65 && c <= 90)
{
printf("%c",c);
if(co_bang2==1){outportb((int)&COM -> data,0x1F);de_lay(10); co_bang2=0;}
ch1 = c - 65;outportb((int)&COM -> data, p1[ch1]);de_lay(2);
}
de_lay(10);
} // end do
while(c!=EOF);
thien: fclose(f1);
outportb((int)&COM -> data,0x02);de_lay(10);
return;
} // end phat file
/*========================================================*/
unsigned long int tg_100(void)
{
static struct time ti;
unsigned long int t;
gettime(&ti);
t =((ti.ti_hour*60+ti.ti_min)*60+ti.ti_sec)*100+ti.ti_hund;
return t;
}
/*=========================================================*/
//Ham thu du lieu
void thu_du_lieu(void)
{
int co_bang=0,ch=0,status=0;
char chu;
char bang_chu[] = {' ','E',10,'A',' ','S',
'I','U',13,'D','R','J',
'N','F','C','K','T','Z',
'L','W','H','Y','P','Q',
'O','B','G',' ','M','X',
'V',' ','\0'};
char bang_so[] = {' ','3',10,'_',' ',' ',
'8','7',13,'$','4',' ',
',','!',':','(','5','"',
')','2','#','6','0','1',
'9','?','&',' ','.','/',
';',' '};
char *p1,*p2;
p1 = bang_chu;
p2 = bang_so;
clrscr();
// fprintf(stdprn,"\n\r");
do
{
status=inportb((int)&COM -> status);
if((status & S_RxRDY) != 0)
{
ch =inportb((int)&COM -> data);
if(ch==0x02) return;
if(ch== 0x1F){ co_bang = 0;goto tiep;}
if(ch== 0x1B){ co_bang = 1;goto tiep;}
if(ch== 0x08)
{
printf("\n\r");
// fprintf(stdprn," \n\r ");
goto tiep;
}
if(co_bang==0)
{
printf("%c",p1[ch]);
// fprintf(stdprn,"%c",p1[ch]);
}
else
{
printf("%c",p2[ch]);
// fprintf(stdprn,"%c",(int)p2[ch]);
}
}//end if((status & S_RxRDY) != 0)
tiep:
} while(ch!=0x02);//end while
return;
} //end thu du lieu
/*==========================================================*/
void demo(void)
{setbkcolor(BLUE);
setcolor(WHITE);
settextstyle(1,0,4);
settextjustify(0,0);
outtextxy(20,50,"TRUONG DAI HOC SU PHAM KY THUAT TP HCM ");
settextstyle(1,0,2);
settextjustify(0,0);
outtextxy(20,130,"LUAN VAN TOT NGHIEP : MAY TINH GIAO TIEP TELETYPE ");
settextstyle(1,0,2);
settextjustify(0,0);
outtextxy(20,170,"SINH VIEN THUC HIEN : TRUONG VIET NAM - PHAM HUNG PHONG ");
settextstyle(1,0,2);
settextjustify(0,0);
outtextxy(20,210,"GIAO VIEN HUONG DAN : QUACH THANH HAI");
settextstyle(1,0,2);
settextjustify(0,0);
outtextxy(20,250,"NIEN KHOA : 1995 _ 2000 ");
getch();
closegraph();
}
/*========================================================*/
void de_lay(int n)
{ int i;
unsigned long int t1,t2;
unsigned long int tg_100(void);
t1 = tg_100();
while(1)
{t2 = tg_100();
if(t2-t1>n) break;
}
return;
}
/*========================================================*/
void do_chuong(void)
{
int i ;
for(i=0;i<3;++i){ sound(825);de_lay(100);nosound();de_lay(100);}
return;
}
/*========================================================*/
void phat_ho_hieu(void)
{
void de_lay(int);
int c,ch1,*p1,*p2,co_bang2=0;
FILE *f1;
int bang_chu2[] =
{
0x03,0x19,0x0E,0x09,0x01,0x0D,
0x1A,0x14,0x06,0x0B,0x0F,0x12,
0x1C,0x0C,0x18,0x16,0x17,0x0A,
0x05,0x10,0x07,0x1E,0x13,0x1D,
0x15,0x11,0x04,0x04,0x04,0x04,
0x04,0x04
};
int bang_so2[] =
{
0x0D,0x11,0x14,0x09,0x16,0x1A,
0x04,0x0F,0x12,0x04,0x04,0x0C,
0x03,0x1C,0x1D,0x16,0x17,0x13,
0x01,0x0A,0x10,0x15,0x07,0x06,
0x18,0x0E,0x1E,0x04,0x0F,0x04,
0x19,0x04
};
p1=bang_chu2; p2=bang_so2;
// clrscr();
f1=fopen("ho_hieu.c","rt");
if(f1==NULL) {clrscr(); printf("\n KHONG MO DUOC TEP HO_HIEU.C "); de_lay(100); goto thien; }
do
{
c=(int)fgetc(f1);
if(c==32) {outportb((int)&COM -> data,0x04);de_lay(2);}
if(c==10) {outportb((int)&COM -> data,0x08);de_lay(2);}
if(c >= 33 && c <= 64)
{
if(co_bang2==0) {outportb((int)&COM -> data,0x1B);de_lay(10);co_bang2=1;}
ch1=c-33;outportb((int)&COM -> data,p2[ch1]);de_lay(2);
}
if(c >= 97 && c <= 122) c = toupper(c);
if(c >= 65 && c <= 90)
{
if(co_bang2==1){outportb((int)&COM -> data,0x1F);de_lay(10); co_bang2=0;}
ch1 = c - 65;outportb((int)&COM -> data, p1[ch1]);de_lay(2);
}
de_lay(10);
} // end do
while(c!=EOF);
thien: fclose(f1);
outportb((int)&COM -> data,0x02);de_lay(10);
return;
} // end phat HO_HIEU
/*====================================================*/
int kiem_tra_RI(void)
{
int RI=0;
RI=inportb((int)&COM ->i_status);
if(RI==0)
return(1);
else return(0);
}
PHAÀN D
HÖÔÙNG THI COÂNG
I. Toång quaùt:
Maïch giao tieáp laø moät thieát bò ñoäc laäp ñeå gheùp noái giöõa caùc maùy vi tính vôùi nhau nhaèm truyeàn döõ lieäu töø nôi naøy ñeán nôi khaùc moät caùch nhanh choùng. Ngoaøi ra, maïch giao tieáp coøn chuyeån ñoåi möùc ñieän aùp ñeå khoaûng caùch truyeàn soá lieäu giöõa hai maùy ñöôïc xa hôn. Maïch giao tieáp coù theå ñöôïc öùng duïng roäng raõi trong caùc coâng ty, xí nghieäp . . .
II. Toå chöùc maïch:
- Taát caû caùc IC, caùc linh kieän ñieän töû ñöôïc laép raùp treân moät board maïch.
- Caùc ngoõ vaøo ra giao tieáp vôùi maùy vi tính ñöôïc haøn vôùi caùc Connecter gaén treân board.
III. Caùc böôùc thi coâng:
- Thieát keá sô ñoà nguyeân lyù, veõ maïch.
- Veõ sô ñoà maïch in duøng phaàn meàm BM.
- Laøm maïch in
- Chuaån bò linh kieän.
- Laép raùp linh kieän theo sô ñoà.
- Sau khi laép raùp tieán haønh kieåm tra phaàn cöùng.
- Xaây döïng löu ñoà phaàn meàm ñieàu khieån.
- Vieát chöông trình baèng ngoân ngöõ C.
IV. Baùo caùo keát quaû thi coâng:
- Thieát keá vaø thi coâng thaønh coâng heä thoáng maïch giao tieáp.
- Maïch giao tieáp ñöôïc thieát keá ñeå truyeàn ôû khoaûng caùch xa, neân trong maïch thi coâng toàn taïi caùc nhoùm linh kieän nhö :
+ Nhoùm chuyeån ñoåi töø -12V vaø +12V sang 0V vaø 5V.
+ Nhoùm chuyeån ñoåi töø 0V vaø 5V sang -12V vaø + 12V.
+ Nhoùm naâng ñieän aùp ñöôøng truyeàn leân ±60 V ñeå thöïc hieän truyeàn xa.
Ngoaøi ra maïch coøn söû duïng linh kieän Opto ñeå caùch ly ñieän aùp vôùi maùy vi tính.
* Haïn cheá:
- Do phaân boá caùc linh kieän treân board maïch heïp neân bieán theá vaø maïch nguoàn ñaët beân ngoaøi maïch chính.
- Kyõ thuaät laäp trình chöa vöõng vaøng neân coøn nhieàu thieáu soùt, nhaát laø giao dieän vôùi ngöôøi söû duïng chöa ñeïp.
- Laàn ñaàu tieân tieán haønh thi coâng, nhöõng yeâu caàu toái öu ñeå maïch hoaøn chænh vaãn chöa ñaït ñöôïc tuy nhieân maïch vaãn ñaït ñöôïc nhöõng yeâu caàu nhaát ñònh
KEÁT LUAÄN
Qua 6 tuaàn tìm hieåu veà caáu taïo, nguyeân lyù truyeàn döõ lieäu maùy Teletype vaø caáu truùc maùy tính ñaõ ñöôïc hoïc vôùi söï höôùng daãn cuûa thaày, coâ ñeà taøi luaän vaên toát nghieäp ñaõ hoaøn thaønh .
Ñeå laøm ñöôïc ñieàu naøy. Chuùng em coá gaéng ñem nhöõng kieán thöùc ñaõ hoïc vaän duïng vaøo coâng vieäc, thöïc hieän nhieäm vuï luaän vaên ñöôïc giao ñeå coù theå ñaït keát quaû toát. Tuy thaønh quaû coâng vieäc khoâng coù gì to lôùn nhöng ñoù laø quaù trình daãn daét chuùng em laøm quen vôùi vieäc öùng duïng kieán thöùc ñaõ hoïc vaøo thöïc teá, laø thaønh quaû cuûa sinh vieân tröôùc khi ra tröôøng
Vôùi nhöõng taâm tö nguyeän voïng nhö vaäy neân chuùng em heát söùc coá gaéng ñeå thaønh luaän vaên ñuùng thôøi gian quy ñònh. Do vaäy trong quaù trình laøm vieäc chuùng em khoâng theå traùnh khoûi sai soùt. Raát mong quyù thaày coâ thoâng caûm vaø chæ baûo.
PHUÏ LUÏC
BOÄ ÑIEÀU KHIEÅN NGAÉT 8259A
Boä ñieàu khieån ngaét laäp trình ñöôïc 8259A (PIC : Programable Interrupt Controller) laø moät vi maïch tích hôïp ñöôïc thieát keá ñeå quaûn lyù caùc ngaét beân ngoaøi trong moät heä maùy tính. Ñaây laø nhöõng keát noái vaät lyù tôùi caùc thieát bò treân PC. Khi moät trong soá nhöõng thieát bò naøy taùc ñoäng leân moât trong nhöõng ñöôøng ngaét cuûa PIC, PIC seõ gôûi yeâu caàu ngaét cöùng cuøng vôùi chæ soá cuûa ngaét tôùi CPU, CPU laáy chæ soá naøy ñeå truy nhaäp vaøo baûng vectô ngaét ñeå tìm ra thuû tuïc phuïc vuï ngaét cöùng thích hôïp.
8259A coù 2 loaïi hình chöõ nhaät vaø hình vuoâng ñeàu coù 28 chaân. Chöùc naêng caùc chaân cuûa 8259A hình vuoâng cuõng töông öùng nhö 8259A hình chöõ nhaät.
CS
WR
RD
D7
D6
D5
D4
D3
D2
D1
D0
CAS0
CAS1
GND
D0
D1
D2
D3
D4
D5
D6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
28
27
26
25
24
23
22
21
20
19
18
17
16
15
Vcc
A0
INTA
IR7
IR6
IR5
IR4
IR3IR2
IR1
IR0
INT
SP
CAS2
8259A DIP
19
20
21
22
23
24
25
IR1
IR2
IR3
IR4
IR5
IR6
IR7
11
10
9
8
7
6
5
18 17 16 15 14 13 12
26 27 28 1 2 3 4
IR0 INT SP/EN CAS2 GND CAS1 CAS0
INTA A0 Vcc CS WR RD D7
8259A
PLCC
Caùc chaân :
IR0 - IR7 : (chaân18 - 25) Caùc loái vaøo yeâu caàu ngaét
D0 - D7 : (chaân 11 - 4) Caùc bit soá lieäu (hai chieàu)
A0 : (chaân 27) Ñòa chi û choïn thanh ghi leänh
CS (chaân 1) : Choïn vi maïch
WR (chaân 2) : Loái vaøo cuûa leänh ghi
RD (chaân3) : Loái vaøo cuûa leänh ñoïc
CAS0, CAS1, CAS2 (chaân 12, 13, 15) : Loái vaøo maéc noái taàng. Moät PIC chuû naøy coù theå choïn moät trong 8 PIC tôù qua 3 ñöôøng daây naøy.
SP (chaân 16) : Trong cheá ñoä khoâng ñeäm, neáu SP = 1 thì 8259 chuû, SP = 0 thì 8259 tôù.
INTA (chaân 26) : Loái vaøo xaùc ñònh ngaét.
INT (chaân 17) : Loái ra yeâu caàu ngaét chöông trình.
Trong quaù trình hoaït ñoäng, 8259A coù theå ñöôïc moâ taû goàm coù 4 thanh ghi beân trong :
1. Thanh ghi ñaùp öùng ngaét : (IRR : Interrup Request Register)
Chöùa moät bit cho töøng keânh ngaét töø IRQ0 ñeán IRQ7. Caùc bit rieâng leû phaûn aùnh nhöõng keânh naøo ñang yeâu caàu phuïc vuï ngaét. Thanh ghi IRR coù theå ñöôïc ñoïc bôûi CPU.
2. Thanh ghi maët naï ngaét : (IMR : Interrup Mask Register)
Laø thanh ghi 8 bit, moãi bit moâ taû moät möùc ngaét. Moät bit ñöôïc ñaët baèng moät seõ ngaên chaën keânh töông öùng phaùt sinh moät ngaét (ñöôïc che).
3. Thanh ghi boä giaûi öu tieân : (PR : Priority Resolver Register)
Xaùc ñònh xem ñoä öu tieân cuûa ngaét coù ñuû ñeå ngaét moät thuû tuïc phuïc vuï ngaét ñang thöïc hieän hay khoâng. Ñieàu naøy phuï thuoäc vaøo sô ñoà öu tieân ñöôïc laäp trình hoùa.
4. Thanh ghi phuïc vuï trong : (ISP : In Service Register)
Chöùa moät bit cho töøng toác ñoä ngaét. Bit naøy ñöôïc ñaët baèng 1 ñeå chæ daãn keânh ngaét töông öùng ñang ñöôïc phuïc vuï. ISR coù theå ñöôïc ñoïc bôûi CPU.
Caùc boä vi xöû lyù coù hai doøng vaät lyù ñeå baùo hieäu caùc ngaét :
- Doøng INTR (ñaùp öùng ngaét) : ñöôïc ñieàu khieån bôûi boä ñieàu khieån ngaét Intel 8259A.
- Doøng NMI : ñeå baùo cho boä vi xöû lyù bieát veà moät söï coá nghieâm troïng saép xaûy ra nhö saép maát nguoàn, loãi chaún leû trong boä nhôù.
- Khoái logic ñieàu khieån : xöû lyù ngaét, ñöa yeâu caàu (INT) vaø nhaän xaùc nhaän ngaét (INTA).
- Boä ñeäm ñöôøng daây soá lieäu : ñeå ñeäm ghi vaøo caùc thanh ghi vaø ñeäm ñoïc caùc soá lieäu töø caùc thanh ghi.
- Logic ñieàu khieån ñoïc ghi : taïo caùc tín hieäu ghi vaø ñoïc caùc thanh ghi ñeäm.
- Boä ñeäm noái taàng/so saùnh : ñeå choïn caùc vi maïch 8259A tôù trong 1 vi maïch 8259A chuû.
Baûng caùc giaù trò ñoïc cuûa caùc möùc öu tieân :
D7
D6
D5
D4
D3
D2
D1
D0
Yeâu caàu öu tieân
RST
1
1
A2
A1
A0
1
1
1
Thaáp nhaát
0
7
1
1
1
1
1
1
1
1
1
6
1
1
1
1
0
1
1
1
2
5
1
1
1
0
1
1
1
1
3
4
1
1
1
0
0
1
1
1
4
3
1
1
0
1
1
1
1
1
5
2
1
1
0
1
0
1
1
1
6
1
1
1
0
0
1
1
1
1
Cao nhaát
7
0
1
1
0
0
0
1
1
1
Sô ñoà khoái cuûa 8259A :
Logic ñieàu khieån
Thanh ghi phuïc vuï (ISR)
Giaûi quyeát öu tieân (PR)
Thanh ghi yeâu caàu ngaét
Thanh ghi che ngaét (IMR)
Thanh ghi soá lieäu
Logic ghi ñoïc
Logic ghi/ñoïc
INTA
INT
IR0
IR7
D0 - D7
RD
WR
A0
CS
CAS0
CAS1
CAS2
SP
Ñöôøng daây noäi
Ñeå cho pheùp moät ngaét, bit mong muoán trong IMR seõ ñöôïc xoùa veà 0 vaø ngöôïc laïi neáu khoâng cho pheùp moät ngaét, bit töông öùng seõ baät leân 1.
Sô ñoà bit cuûa thanh ghi IMR ñaët taïi coång I/O 21h nhö sau :
Soá lieäu bit
Ñöôøng truyeàn
Thieát bò beân ngoaøi
0
IRQ0
Ngaét thôøi gian (Time Keeper Interrup)
1
IRQ1
Ngaét baøn phím (Keyboard Interrup)
2
IRQ2
Boä phoái gheùp maøu ñoà thò
3
IRQ3
Coång tuaàn töï soá 2 (COM2 hoaëc COM4)
4
IRQ4
Coång tuaàn töï soá 1 (COM1 hoaëc COM3)
5
IRQ5
Ngaét cöùng (maùy XT), coång song song (maùy AT)
6
IRQ6
Ngaét ñóa meàm
7
IRQ7
Ngaét maùy in (coång song song soá 1)
* Coù hai khía caïnh ta phaûi hieåu veà PIC :
- Baát cöù khi naøo moät ngaét xaûy ra, PIC ñöôïc chaën ñeå noù khoâng sinh ra moät ngaét khaùc. Traïng thaùi naøy coù theå xoùa baèng caùch ghi leân thanh ghi ICR cuûa PIC. Thanh ghi naøy ñaët taïi coång I/O cuûa 20h.
Ñeå Reset laïi PIC vaø cho pheùp ngaét trôû laïi, thuû tuïc phuïc vuï ngaét ISR seõ ghi giaù trò 20h laø leänh keát thuùc ngaét, chæ thò PIC cho pheùp ngaét trôû laïi.
- Ñeå cho pheùp moät ngaét, ta xoaù bit töông öùng trong thanh ghi maët naï ngaét (IMR) veà 0. Ngöôïc laïi, ta baät bit töông öùng trong thanh ghi IMR leân 1 ñeå khoâng cho pheùp moät ngaét.
- Ngaét cöùng coøn goïi laø ngaét ngoaøi vì do nguyeân nhaân beân ngoaøi. VXL coù caùc loái vaøo daønh cho ngaét ngoaøi. Khi coù tín hieäu vaøo caùc loái naøy, VXL ñang thöïc hieän leänh cuûa chöông trình seõ bò döøng.
AÙnh xaï ngaét 8259A leân caùc thuû tuïc phuïc vuï ngaét cöùng :
Ñöôøng truyeàn
Ñòa chæ
Thuû tuïc phuïc vuï ngaét cöùng
Thieát bò beân ngoaøi
IRQ0
20H
08h
Ñoàng hoà keânh 0
IRQ1
24H
09h
Baøn phím
IRQ2
28H
OAh
Boä phoái gheùp maøu ñoà thò
IRQ3
2CH
OBh
Coång tuaàn töï soá 2 (COM2 - COM4)
IRQ4
30H
OCh
Coång tuaàn töï soá 1 (COM1 - COM3)
IRQ5
34H
ODh
Ñóa cöùng (XT) - LPT2 (AT)
IRQ6
38H
OEh
Ñóa meàm
IRQ7
3CH
OFh
Coång song song soá 1 (LPT1)
TAØI LIEÄU THAM KHAÛO
- Truyeàn döõ lieäu .Toáng Vaên On - NXB Tröôøng ÑHBK TP.Hoà Chí Minh
- Kyõ thuaät gheùp noái maùy vi tính . Nguyeãn Maïnh Giang - NXB Giaùo duïc 1998
- Ño löôøng vaø ñieàu khieån baèng maùy tính - Ngoâ Dieân Taäp - NXB KHKT HAØ NOÄI 1996
- AT Technical Reference
- XT Technical Reference
- Giaùo trình lyù thuyeát vaø baøi taäp ngoân ngöõ C. Nguyeãn Ñình Teâ - Hoaøng Ñöùc Haûi - NXB Giaùo duïc 1996
- Caáu truùc maùy vi tính -Traàn Quang Vinh - NXB Giaùo duïc 1998
- Vaø moät soá taøi lieäu khaùc
Các file đính kèm theo tài liệu này:
- Ứng dụng CNTT trong Kinh tế DN.DOC