Đo lường và điều khiển bằng máy tính .chương 7

Chia sẻ: Nguyen Van Dau | Ngày: | Loại File: PDF | Số trang:38

0
86
lượt xem
46
download

Đo lường và điều khiển bằng máy tính .chương 7

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

cổng nối tiếp trên máy tính thường gọi la cổng com.được sử dụng truyền dữ liệu 2 chiều giua máy tinh va ngoại vi.có các ưu điểm sau: khoảng cách truyền dài hơn so vói cổng song song công nối tiếp truyền mức 1từ -3V đến -25V và mức 0 từ +3v đến +25v nên tính chông nhiễu cao hơn.cho phép khoảng cách truyền xa hơn.

Chủ đề:
Lưu

Nội dung Text: Đo lường và điều khiển bằng máy tính .chương 7

  1. Chöông 7 GIAO TIEÁP QUA COÅNG NOÁI TIEÁP 7.1 CAÁU TRUÙC COÅNG COM Coång noái tieáp treân maùy tính, thöôøng goïi laø coång COM, ñöôïc söû duïng ñeå truyeàn döõ lieäu hai chieàu giöõa maùy tính vaø ngoaïi vi, coù caùc öu ñieåm sau: - Khoaûng caùch truyeàn daøi hôn so vôùi coång song song. Coång noái tieáp truyeàn möùc 1 töø −3V ñeán −25V vaø möùc 0 töø +3V ñeán +25V neân tính choáng nhieãu cao hôn, cho pheùp khoaûng caùch truyeàn xa hôn. - Soá daây keát noái ít, toái thieåu ba daây. - Coù theå gheùp vôùi ñöôøng daây ñieän thoaïi, cho pheùp khoaûng caùch truyeàn chæ bò giôùi haïn bôûi maïng toång ñaøi ñieän thoaïi. - Coù theå truyeàn khoâng daây duøng tia hoàng ngoaïi. - Gheùp noái deã daøng vôùi vi ñieàu khieån hay PLC. - Cho pheùp noái maïng. Caùc thieát bò gheùp noái noái tieáp chia laøm hai loaïi DTE (Data Terminal Equipment) vaø DCE (Data Communication Equipment) DCE laø caùc thieát bò trung gian nhö modem, coøn DTE laø caùc thieát bò nhö maùy tính, vi ñieàu khieån, PLC, laø nguoàn taïo ra döõ lieäu hay tieáp nhaän döõ lieäu ñeå xöû lyù. Coù theå gheùp noái DTE vôùi DTE hoaëc DCE, DCE vôùi DTE hoaëc DCE. Tín hieäu truyeàn noái tieáp theo daïng xung chuaån RS 232 cuûa EIA (Electronics Industry Associations), möùc logic 0 coøn goïi laø Space giöõa +3 vaø +25V, möùc logic 1 coøn goïi laø Mark, ôû giöõa −3V vaø −25V. Töø DTE tín hieäu ñöôïc truyeàn giöõa hai daây TXD vaø GND theo khuoân daïng H.7.1 sau:
  2. Chöông 7: GIAO TIEÁP QUA COÅNG NOÁI TIEÁP Trang 176 Khi khoâng truyeàn ñöôøng daây seõ ôû traïng thaùi Mark, khi baét ñaàu truyeàn, xung Start ñöôïc truyeàn (+10 V) sau ñoù laø 8 bit döõ lieäu, bit D0 ñöôïc truyeàn tröôùc, neáu bit döõ lieäu logic 0 thì ñieän aùp ñöôøng daây töông öùng laø +10V, sau caùc bit döõ lieäu laø bit kieåm tra chaün leû roài bit stop ôû logic 1(-10V), DTE nhaän tín hieäu truyeàn ngöôïc trôû laïi theo ñöôøng RXD. Neáu noái hai DTE vôùi nhau thì duøng sô ñoà H.7.2a. Tröôøng hôïp noái DTE vôùi DCE thì chaân TXD cuûa DCE nhaän tín hieäu coøn chaân RXD phaùt tín hieäu (noái 1-1) (H.7.2b). Hình 7.2 Coång COM coù hai daïng ñaàu noái ñöïc D-25 vaø D-9 . Baûng 7.1 D-25 D-9 Teân tín hieäu Chieàu YÙù nghóa 2 3 TD, TXD, truyeàn döõ lieäu xuaát Xuaát döõ lieäu noái tieáp 3 2 RD, RXD, nhaän döõ lieäu nhaäp Nhaäp döõ lieäu noái tieáp 4 7 RTS, Request to send xuaát DTE saün saøng trao ñoåi döõ lieäu 5 8 CTS, Clear to send nhaäp Modem saün saøng trao ñoåi döõ lieäu 6 6 DSR, Data set ready nhaäp Modem saün saøng keát noái 7 5 SG, Signal grourd Mass 8 1 CD, Carrier detect, phaùt giaùc nhaäp Phaùt giaùc coù tín hieäu treân soùng mang ñöôøng daây 20 4 DTR, Data terminal Ready xuaát DTE saün saøng keát noái 22 9 RI, Ring Indicator nhaäp Modem phaùt giaùc tín hieäu chuoâng Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
  3. Taùc giaû: TS Nguyeãn Ñöùc Thaønh Trang 177 Thöôøng söû duïng caùc sô ñoà keát noái (H.7.3): Hình 7.3: a) Keát noái tröïc tieáp; b) Keát noái qua modem Tín hieäu truyeàn noái tieáp döôùi daïng caùc bit, soá bit trong moät giaây ñöôïc goïi laø baud, vaän toác truyeàn thoâng duïng laø 300, 600, 1200, 2400, 4800, 9600, 19200… baud. Neáu duøng vaän toác 9600 baud vaø khung truyeàn 8, E, 2 (8 bit döõ lieäu, 1 bit kieåm tra chaün, 2 bit stop) thì truyeàn moät byte chieám 12 bit vaäy moät giaây truyeàn ñöôïc 800 byte, thôøi gian truyeàn 1 bit laø ~ 0,1msec. Caùc modem ñôøi môùi coù theå ñaït toác ñoä 56000 baud, tuy nhieân caùc vi maïch truyeàn noái tieáp coù theå ñaït toác ñoä cao hôn ñeán 115200 baud (vi maïch 16550) 230400 baud (16C650) vì vaäy caùc modem phaûi neùn tín hieäu tröôùc khi truyeàn treân ñöôøng. Keát noái giöõa maùy tính (DTE) vaø modem (DCE) thöïc hieän theo nguyeân taéc caùc chaân cuøng teân noái vôùi nhau. Coøn khi keát noái DTE vaø DTE thöôøng duøng sô ñoà sau: D9 D25 D25 D9 3 2 TD RD 3 2 2 3 RD TD 2 3 5 7 SG SG 7 5 4 20 DTR DTR 20 4 6 6 DSR DSR 6 6 1 8 CD CD 8 1 7 4 RTS RTS 4 7 8 5 CTS CTS 5 8 http://www.khvt.com
  4. Chöông 7: GIAO TIEÁP QUA COÅNG NOÁI TIEÁP Trang 178 Khi DTE caàn truyeàn döõ lieäu thì DTR tích cöïc ñöa veà DSR cho bieát phía nhaän saün saøng, ñöa veà CD cho bieát ñaõ nhaän ñöôïc soùng mang cuûa modem aûo. Hai DTE coù cuøng khung truyeàn neân RTS vaø CTS noái vôùi nhau. Ñoâi khi coù theå boû ñöôøng noái DTR vôùi DSR vaø CD. Khi keát noái DTE vôùi DCE, do vaän toác truyeàn khaùc nhau, caàn ñieàu khieån löu löôïng. Coù hai caùch laø duøng phaàn cöùng vaø phaàn meàm. Khi duøng phaàn cöùng söû duïng hai daây RTS vaø CTS. Neáu DTE muoán truyeàn seõ cho RTS taùc ñoäng, neáu DCE chaáp nhaän seõ gôûi trôû veà CTS vaø maùy tính seõ gôûi döõ lieäu, neáu maùy tính khoâng nhaän ñöôïc CTS seõ khoâng gôûi döõ lieäu. Ñieàu khieån löu löôïng baèng phaàn meàm duøng hai kyù töï Xon vaø Xoff. Khi modem muoán maùy tính ngöøng truyeàn seõ gôûi ñi kyù töï Xoff (ASCII 19) coøn khi modem raûnh noù seõ gôûi kyù töï Xon (ASCII 17). Vieäc trao ñoåi döõ lieäu cuûa maùy tính ñöôïc thöïc hieän thoâng qua vi maïch UART (Universal Asynchronous Receiver Transmitter) coøn vôùi vi ñieàu khieån hay PLC thì coù caùc vi maïch chuyeân duïng hoaëc ñöôïc tích hôïp trong vi xöû lyù. Caùc maùy tính ñôøi môùi duøng coâng ngheä ASIC söû duïng chip ña naêng laøm nhieàu nhieäm vuï giao tieáp noái tieáp, song song, coång troø chôi, ñieàu khieån ñóa, tuy nhieân phaàn giao tieáp noái tieáp thieát keá töông hôïp vôùi caùc vi maïch UART rôøi. Caùc loaïi vi maïch UART thöôøng gaëp laø 8250, 8250A, 16450, 16550, 16650, 16750, … 6402 Caùc coång noái tieáp ñöôïc ñaùnh soá COM 1, COM 2, COM 3, COM 4. Baûng 7.2 cho ñòa chæ goác coång COM vaø caùc thoâng tin khaùc Baûng 7.2 Teân Ñòa chæ goác Ngaét Nôi chöùa ñòa chæ COM 1 3F8 4 0000 : 0400 COM 2 2F8 3 0000 : 0402 COM 3 3E8 4 0000 : 0404 COM 4 2E8 3 0000 : 0406 Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
  5. Taùc giaû: TS Nguyeãn Ñöùc Thaønh Trang 179 Hình 7.4a: Card giao tieáp LPT/COM phaàn ñeäm http://www.khvt.com
  6. Chöông 7: GIAO TIEÁP QUA COÅNG NOÁI TIEÁP Trang 180 Hình 7.4b: Card giao tieáp LPT/COM phaàn LPT Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
  7. Taùc giaû: TS Nguyeãn Ñöùc Thaønh Trang 181 http://www.khvt.com
  8. Chöông 7: GIAO TIEÁP QUA COÅNG NOÁI TIEÁP Trang 182 Hình 7.4c: Card giao tieáp LPT/COM phaàn COM Hình 7.4 cung caáp sô ñoà card giao tieáp LPT/COM cuûa maùy XT giuùp ta coù khaùi nieäm veà caùch gheùp bus ISA vôùi UART. Caùc chaân cuûa UART coù möùc TTL neân caàn maïch chuyeån möùc ñeå gheùp vôùi möùc RS232. Hình 7.5 cho sô ñoà chaân cuûa moät soá UART thoâng duïng. Baûng 7.3 cung caáp yù nghóa caùc chaân cuûa 16550 Hình 7.5: Sô ñoà chaân UART Baûng 7.3: YÙ nghóa chaân UART16650 Chaân Teân YÙ nghóa 1:8 D0:D7 Data Bus 9 RCLK Xung nhòp vaøo,taàn soá = Baud Rate *16 10 RD RXD 11 TD TXD 12..14 CS0,CS1,/CS2 Ba chaân choïn chip 15 /BAUDOUT Xung nhòp ra, taàn soá = Baud Rate *16 16 XIN Dao ñoäng vaøo boä chia taàn 17 XOUT Dao ñoäng ra 18 /WR Ghi döõ lieäu, ñaûo 19 WR Ghi döõ lieäu, khoâng ñaûo 20 VSS Mass 21 /RD Ñoïc döõ lieäu, ñaûo Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
  9. Taùc giaû: TS Nguyeãn Ñöùc Thaønh Trang 183 22 RD Ñoïc döõ lieäu, khoâng ñaûo 23 DDIS Driver Disable, caám driver 24 /TXRDY Transmitter Ready, saün saøng phaùt 25 /ADS Address Strobe. Caøi ñòa chæ 26..28 A2, A1, A0 Choïn thanh ghi 29 /RXRDY Receive Ready 30 INTR Interrupt Output, yeâu caàu ngaét 31 nOUT2 User Output 2 32 /RTS Request to Send 33 /DTR Data Terminal Ready 34 /OUT1 User Output 1 35 MR Master Reset 36 /CTS Clear To Send 37 /DSR Data Set Ready 38 nDCD Data Carrier Detect 39 nRI Ring Indicator 40 VDD + 5 Volts http://www.khvt.com
  10. Chöông 7: GIAO TIEÁP QUA COÅNG NOÁI TIEÁP Trang 184 Baûng 7.4 Caùc thanh ghi cuûa UART Ñòa chæ goác DLAB Ñoïc/Ghi Teân Chöùc naêng Transmitter Holding Register 0 Ghi THR Thanh ghi giöõ thoâng tin truyeàn Receiver Buffer Register +0 0 Ñoïc RBR Thanh ghi ñeäm thu Baud Rate Divisor Latch 1 Ñoïc/Ghi BRDL Caøi soá chia byte thaáp Interrupt Enable Register 0 Ñoïc/Ghi IER +1 Thanh ghi cho pheùp ngaét 1 Ñoïc/Ghi BRDH Caøi soá chia byte cao Interrupt Identification Register Ñoïc IIR +2 Thanh ghi nhaän daïng ngaét Ghi FCR FIFO Control Register Line Control Register +3 Ñoïc/Ghi LCR Thanh ghi ñieàu khieån ñöôøng daây Modem Control Register +4 Ñoïc/Ghi MCR Thanh ghi ñieàu khieån modem Line Status Register +5 Ñoïc LSR Thanh ghi traïng thaùi ñöôøng daây Modem Status Register +6 Ñoïc MSR Thanh ghi traïng thaùi Modem +7 Ñoïc/Ghi Scratch Register Baûng 7.5 Baud Rate BRDH BRDL 4800 00 18 9600 00 0C 19200 00 06 38400 00 03 57600 00 02 115200 00 01 Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
  11. Taùc giaû: TS Nguyeãn Ñöùc Thaønh Trang 185 Baûng 7.6: Thanh ghi cho pheùp ngaét D5 Cho pheùp kieåu coâng suaát thaáp (16750) D4 Cho pheùp kieåu nguû (16750) D3 Cho pheùp ngaét khi coù loãi modem D2 Cho pheùp ngaét khi coù loãi truyeàn, thu D1 Cho pheùp ngaét khi THR troáng (ñaõ truyeàn döõ lieäu) D0 Cho pheùp ngaét khi RBR ñaày (ñaõ nhaän döõ lieäu) Baûng 7.7: Thanh ghi nhaän daïng ngaét IIR D6 D7 Bit 6 - 7 0 0 Khoâng coù FIFO 0 1 Cho pheùp FIFO nhöng khoâng duøng 1 1 Cho pheùp FIFO Bit 5 Cho pheùp FIFO 64 byte (16750) Bit 4 Khoâng duøng Bit 3 0 Khoâng duøng 1 Ngaét heát thôøi gian (16550) Bit 1 - 2 Bit 2 Bit 1 0 0 Ngaét traïng thaùi modem, xoùa khi ñoïc MSR 0 1 Ngaét THR troáng, xoùa khi ghi vaøo THR 1 0 Ngaét RBR ñaày, xoùa khi ñoïc RBR 1 1 Loãi truyeàn thu Bit 0 0 Coù ngaét 1 Khoâng coù ngaét DLAB (Divisor latch access bit) laø bit 7 cuûa LCR, khi DLAB = 1 cho pheùp ñaët boä chia taàn trong UART ñeå ñöôïc vaän toác baud mong muoán. UART duøng tinh theå dao ñoäng 1,8432 MHz chia cho 16 ñöôïc taàn soá 115200Hz. Taàn soá naøy ñöôïc chia bôûi boä ñeám laäp trình ñöôïc 16 bit, soá chia chöùa trong hai thanh ghi ñòa chæ goác +1 (byte cao) vaø goác +0 (byte thaáp) ñöôïc söû duïng khi DLAB = 1. Neáu muoán vaän toác truyeàn 9600 thì soá chia laø 12 hay 000CH, http://www.khvt.com
  12. Chöông 7: GIAO TIEÁP QUA COÅNG NOÁI TIEÁP Trang 186 byte cao laø 00H, byte thaáp laø 0CH Khi DLAB = 0 ghi vaøo ñòa chæ goác +0 ñeå truyeàn ñi 8 bit noái tieáp, ñoïc ñòa chæ goác +0 nhaän ñöôïc 8 bit döõ lieäu truyeàn ñeán. Thanh ghi IER (goác +1) cho pheùp ngaét vi xöû lyù khi coù bieán coá treân ñöôøng truyeàn. Khi coù ngaét xaûy ra, bit 0 cuûa IIR ôû möùc 0, loaïi ngaét chæ bôûi bit 1 vaø 2, ngaét loãi truyeàn thu coù öu tieân cao nhaát coøn ngaét do modem öu tieân thaáp nhaát. Baûng 7.8: Thanh ghi ñieàu khieån ñöôøng truyeàn LCR xaùc ñònh khung truyeàn Bit 7 1 : caøi ñaët soá chia DLAB 0 : truy xuaát RBR, THR, IER Bit 6 Khi baèng 1 cho pheùp truyeàn tín hieäu BREAK, ñöôøng daây ôû möùc 0 (+12V) trong thôøi gian lôùn hôn moät khung Bit 3 ÷ Bit 5 Bit 4 Bit 5 3 Khoâng kieåm tra côø chaün/leû X X 0 0 0 1 Khi leû 0 1 1 Khi chaün 1 0 1 Bit kieåm tra côø chaün leû laø 1 1 1 1 Bit kieåm tra côø chaün leû laø 0 Bit 2 0 Moät bit stop 1 Hai bit stop khi soá bit döõ lieäu laø 6, 7, 8. Khi soá bit döõ lieäu laø 5 thì duøng 1,5 bit stop Bit 0, Bit 1 Bit 0 1 0 0 5 bit döõ lieäu 0 1 6 bit döõ lieäu 1 0 7 bit döõ lieäu 1 1 8 bit döõ lieäu Baûng 7.9: Thanh ghi ñieàu khieån modem MCR Bit 5 Duøng cho 16750 Bit 4 Mode loopback duøng ñeå kieåm tra hoaït ñoäng UART Bit 3 Ñieàu khieån ngoõ ra Aux Output 2 Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
  13. Taùc giaû: TS Nguyeãn Ñöùc Thaønh Trang 187 Bit 2 Ñieàu khieån ngoõ ra Aux Output 1 Bit 1 Cho RTS leân 1 Bit 0 Cho DTR leân 1 Baûng 7.10: Thanh ghi traïng thaùi ñöôøng daây LSR Bit 7 Sai trong FIFO Bit 6 Thanh ghi giöõ truyeàn THR vaø thanh ghi dôøi troáng Bit 5 THR troáng Bit 4 Ngaét Break, ñöôøng truyeàn ôû logic 0 thôøi gian daøi hôn truyeàn moät byte Bit 3 Sai khung truyeàn, bit cuoái khoâng phaûi laø bit stop Bit 2 Sai parity Bit 1 Khi döõ lieäu tôùi khoâng ñoïc kòp laøm ghi choàng leân RBR Bit 0 Baùo coù döõ lieäu ôû RBR Baûng 7.11: Thanh ghi traïng thaùi modem MSR Bit 7 Logic cuûa CD, baùo coù soùng mang Bit 6 Logic cuûa RI, baùo coù chuoâng Bit 5 Logic cuûa DSR Bit 4 Logic cuûa CTS Bit 3 Möùc 1 khi coù CD ñoåi traïng thaùi Bit 2 Möùc 1 khi RI ñoåi töø thaáp leân cao Bit 1 Möùc 1 khi DSR thay ñoåi Bit 0 Möùc 1 khi CTS thay ñoåi 7.2 MAÏCH CHUYEÅN MÖÙC Khi gheùp coång COM maùy tính vôùi vi ñieàu khieån hay maïch TTL caàn phaûi coù maïch chuyeån möùc TTL 232 vaø ngöôïc laïi. Caùc vi maïch thöôøng duøng laø caäp MC1488-MC1489, MAX232 (Maxim) hoaëc DS275 (Dallas) (Hình 7.6), SN75150- SN75154 (Hình 7.4). Loaïi MAX232 thoâng duïng hôn caû vì chæ caàn nguoàn 5V, nguoàn ±10V do maïch dao ñoäng 16KHz beân trong cung caáp. http://www.khvt.com
  14. Chöông 7: GIAO TIEÁP QUA COÅNG NOÁI TIEÁP Trang 188 Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
  15. Taùc giaû: TS Nguyeãn Ñöùc Thaønh Trang 189 Hình 7.6: Moät soá vi maïch chuyeån ñoåi TTL ---RS232 thoâng duïng 7.3 CARD MÔÛ ROÄNG NOÁI TIEÁP Trong tröôøng hôïp caàn coù theâm coång noái tieáp coù theå duøng sô ñoà Hình 7.4c. Caùc tín hieäu ôû beân traùi laáy töø raõnh caém cuûa maùy tính sau khi qua maïch ñeäm vaø caùc maïch logic khaùc phuø hôïp. Tín hieäu ra DTR , RTS , TX qua maïch ñeäm 75150 ñoåi sang möùc ñieän aùp ±12V. Caùc tín hieäu vaøo cuûa coång noái tieáp qua maïch ñeäm 75154 ñoåi töø möùc ñieän aùp ±12V ra möùc ñieän aùp TTL. Treân card coù theå gaén nhieàu vi maïch 8250 löïa choïn chip nhôø CS2 , nhôø vaäy coù theå taïo nhieàu coång COM. Moät soá haõng baùn card môû roäng ISA, PCI cho theâm coång COM vaø coång LPT (xem chöông 3). http://www.khvt.com
  16. Chöông 7: GIAO TIEÁP QUA COÅNG NOÁI TIEÁP Trang 190 7.4 MAÏCH GIAO TIEÁP COÅNG NOÁI TIEÁP Söû duïng vi maïch CDP6402 ta coù theå chuyeån ñoåi soá lieäu song song ôû ngoaïi vi ra tín hieäu noái tieáp vaø ngöôïc laïi ñeå gheùp noái vôùi coång noái tieáp. Vi maïch naøy chuyeån ñoåi döõ lieäu song song ra noái tieáp vaø ngöôïc laïi theo chuaån RS232. Coù hai tuyeán döõ lieäu song song rieâng cho phaàn thu vaø phaùt. Tín hieäu TXD töø coång COM ñöôïc ñoåi sang möùc TTL nhôø vi maïch MAX 232 ñöa vaøo chaân RRI (Receiver Register In) cuûa 6402 vaø ñoåi thaønh tín hieäu song song 8 bit RBR1 ÷ RBR8 (Receiver Register) Tín hieäu song song 8 bit TBR1 ÷ TBR8 (Transmitter Buffer Register) ñöôïc ñoåi thaønh tín hieäu noái tieáp ra chaân TRO (Transmitter Register Out) sau ñoù nhôø MAX 232 ñoåi sang ñieän aùp thích hôïp vaøo chaân RXD. Vaän toác truyeàn ñöôïc xaùc ñònh bôûi taàn soá tín hieäu ôû chaân RRC (Receiver Register Clock), TRC (Transmitter Register Clock). Nhôø vi maïch dao ñoäng chia taàn 74HC4060 coù theå thay ñoåi caùc vaän toác truyeàn khaùc nhau. Khuoân daïng truyeàn ñöôïc xaùc ñònh bôûi caùc chaân PI (Parity Inhibit) SBS (Stop Bit Select) CLS1, 2 (Character Length Select) vaø EPE (Even Parity Select), caùc tín hieäu vaøo ñöôïc caøi bôûi CRL (Control Register Load) Hình 7.7: UART CDP6402 Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
  17. Taùc giaû: TS Nguyeãn Ñöùc Thaønh Trang 191 Khi moät byte ñöôïc truyeàn tôùi vi maïch 6402 töø TXD, chaân DR (Data Received) seõ chuyeån sang möùc 1, byte truyeàn tôùi ñöôïc xuaát ra song song ôû RBR1 ÷ RBR8, muoán xoùa DR ta cho DRR (Data Received Reset) ôû möùc 0. Chaân TBRL (Transmitter Buffer Register Load) ôû möùc 0 seõ naïp data song song ôû TBR1÷TBR8 vaøo thanh ghi ñeäm truyeàn, khi chaân naøy chuyeån sang möùc cao seõ truyeàn döõ lieäu ñi noái tieáp ôû TRO. Baûng 7.13: Traïng thaùi boä truyeàn thu noái tieáp thoâng baùo ra ngoaøi nhôø caùc chaân PE Côø loãi 1 Coù loãi OE Overrun error 1 Ñaõ nhaän döõ lieäu nhöng DRR chöa taùc ñoäng SFD Status flag disable 1 Caám caùc côø baùo TRE Transmitter Register empty 1 Thanh ghi truyeàn troáng DR Data received 1 Ñaõ nhaän döõ lieäu TBRE Transmitter buffer Register emply 1 Thanh ghi ñeäm truyeàn troáng Trong sô ñoà Hình 7.8, moät vi maïch ADC0804 1 keânh 8 bit ñöôïc duøng ñeå ñoåi aùp töông ñoàng ra soá 8 bit ñöa vaøo TBR1÷TBR8, khi 6402 nhaän 1 byte töø TXD noù seõ cho DR ôû möùc cao ñöa vaøo chaân WR cuûa ADC0804 baét ñaàu chuyeån ñoåi AD. Ñoåi xong INTR taùc ñoäng ñöa vaøo TBRL naïp 8 bit ñaõ ñoåi vaøo thanh ghi ñeäm truyeàn vaø truyeàn ñi noái tieáp, ñoàng thôøi ñöa vaøo DRR laøm xoùa DR ngöng ñoåi cho ñeán khi coù moät byte môùi vaøo RRI. Chöông trình sau vieát baèng ngoân ngöõ C minh hoïa hoaït ñoäng cuûa maïch. /* Chöông trình ñoåi AD noái tieáp */ #include #include #include #define PORT1 0x3F8 #define INTVECT 0x0C int bufferin = 0; int bufferout = 0; unsigned char ch; char buffer [1025]; void interrupt (*oldport1isr) (); void interrupt PORT1INT /*IRS cho PORT1 */ http://www.khvt.com
  18. Chöông 7: GIAO TIEÁP QUA COÅNG NOÁI TIEÁP Trang 192 { int c; do {c = inportb(PORT1 +5); Hình 7.8: Chuyeån ñoåi AD duøng coång noái tieáp 9600, 8, E, 1 if (c & 1) {buffer[bufferin] = inportb(PORT1); bufferin++; if (bufferin == 1024) {bufferin = 0;}} } while (c & 1); outportb (0x10, 0x20); } void main (void) { int c; outportb (PORT1 + 1, 0); /* Caám ngaét port 1 */ oldport1isr = getvect (INTVECT); setvect (INTVECT, PORT1INT); /*PORT 1 - Ñaët cheá ñoä*/ outportb (PORT1 + 3, 0x80); /* SET DLAB ON */ outportb (PORT1 + 0, 0x0C); /* ñaët Baud rate 9600 BPS */ outportb (PORT1 + 1, 0x00); outportb (PORT1 + 3, 0x03); /* 8 bits, No Parity, 1 Stop Bit */ outportb (PORT1 + 2, 0xC7); /*FIFO Control Register*/ outportb (PORT1 + 4, 0x0B); /*Cho DTR, RTS, vaø OUT2 ON*/ outportb (0x21, (inportb (0x21) & 0xEF); Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006
  19. Taùc giaû: TS Nguyeãn Ñöùc Thaønh Trang 193 outportb (PORT1 + 1, 0x01); /* Interrupt khi nhaän data */ printf (“\n\chöông trình ñoåi ADC noái tieáp. Nhaán ESC ñeå thoaùt \n”); do { if (bufferin ! == bufferout) {ch = buffer[bufferout]; bufferout++; if (bufferout == 1024) {bufferout = 0;} print(“%u\n”, ch); printf(“%f volts\n”, (float) ch/256*5);} if (kbhit () {c = getch(); outportb(PORT1, c);} } while (c != 27); outportb (PORT1 + 1, 0); outportb (0x21, (inportb (0x21) ⏐ 0x20)); setvect (INTVECT, oldport1isr); } /* Chöông trình truyeàn noái tieáp duøng ngoân ngöõ C /* Xuaát kyø töï nhaän ñöôïc ra maøn hình vaø ñoïc kyù töï töø baøn phím gôûi noái tieáp */ #include #include #include #define PORT1 0x3F8 /* COM 1 0x3F8 */ /* COM 2 0x2F8 */ /* COM 3 0x3E8 */ /* COM 4 0x2E8 */ void main (void) { int C; int ch; outportb (PORT1 + 1, 0); /* Caám ngaét Port 1 */ /* Ñaët caáu hình PORT 1 */ outportb (PORT1 + 3, 0x80); /* SET DLAB ON */ outportb (PORT1 + 0, 0x03); /* Set Baud rate - Divisor Latch Low Byte */ /* Default 0x03 = 38,400 BPS */ /* 0x01 = 115,200 BPS */ /* 0x02 = 56,700 BPS */ /* 0x06 = 19,200 BPS */ /* 0x0C = 9,600 BPS */ /* 0x18 = 4,800 BPS */ /* 0x30 = 2,400 BPS */ outportb (PORT1 + 1 , 0x00); /* Set Baud rate - Divisor Latch Hight Byte */ outportb (PORT1 + 3 , 0x03); /* 8 Bits, No Parity, 1 Stop Bit */ outportb (PORT1 + 2 , 0xC7); /* FIFO Control Register */ outportb (PORT1 + 4 , 0x0B); /* Turn on DTR, RTS, and OUT2 */ printf (“\n. Press ESC to quit \n”); do { c = inportb (PORT1 + 5); /* Xem coù nhaän ñöôïc kyù töï khoâng. */ http://www.khvt.com
  20. Chöông 7: GIAO TIEÁP QUA COÅNG NOÁI TIEÁP Trang 194 if (c & 1) {ch = inportb (PORT1); printf (“%c” ch);} /* Xuaát kyù töï ra maøn hình */ if (kbhit ()) {ch = getch (); /* Ñoïc phím baám */ outportb (PORT1, ch);} /* Gôûi kyù töï */ } while (ch != 27); } /* Chöông trình giao tieáp noái tieáp duøng ngaét*/ #include #include #include #define PORT1 0x2E8 #define INTVECT 0x08 /* Com Port’s IRQ here */ int bufferin = 0; int bufferout = 0; char ch; char buffer [1025]; void interrupt (*oldport1isr) (); void interrupt PORT1INTO () /* Interrupt Service Routine (IRS) for PORT 1 */ { int c; do {c = inportb (PORT1 + 5); if (c & 1) {buffer [bufferin] = inportb (PORT1); bufferin++; if (bufferin == 1024) bufferin = 0;} } while (c & 1); outportb (0x20, 0x20); } void main (void) { int c; outportb (PORT1 + 1 , 0); oldport1isr = getvect (INTVECT); /* caát vectô ngaét cuõ */ setvect (INTVECT, PORT1INT); /* ñaët vectô ngaét môùi */ /* COM 1 - 0x0C */ /* COM 2 - 0x0B */ /* COM 3 - 0x0C */ /* COM 4 - 0x0B */ outportb (PORT1 + 3 , 0x80); /* SET DLAB ON */ outportb (PORT1 + 0 , 0x03); /* Set Baud rate - Divisor Latch Low Byte */ /* Default 0x03 = 38,400 BPS */ /* 0x01 = 115,200 BPS */ /* 0x20 = 56,700 BPS */ /* 0x06 = 19,200 BPS */ /* 0x0C = 9,600 BPS */ /* 0x18 = 4,800 BPS */ /* 0x30 = 2,400 BPS */ outportb (PORT1 + 1, 0x00); /* Set Baud rate - Divisor Latch Hight Byte */ Thaønh phoá Hoà Chí Minh, thaùng 4 naêm 2006

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản