intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

VI ĐIỀU KHIỂN GIAO TIẾP TRUYỀN DỮ LIỆU

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

180
lượt xem
67
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'vi điều khiển giao tiếp truyền dữ liệu', kỹ thuật - công nghệ, điện - điện tử phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: VI ĐIỀU KHIỂN GIAO TIẾP TRUYỀN DỮ LIỆU

  1. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù VI ÑIEÀU KHIEÅN GIAO TIẾP TRUYEÀN DÖÕ LIEÄU  TRUYEÀN DÖÕ LIEÄU ÑOÀNG BOÄ VAØ KHOÂNG ÑOÀNG BOÄ TDL ñoàng boä goàm caùc ñöôøng truyeàn dl vaø tín hieäu xung clock (CK) – chöùc naêng cuûa CK duøng ñeå dòch chuyeån döõ lieäu, moãi 1 xung ck laø 1 bit döõ lieäu ñöôïc truyeàn ñi. Trong heä thoáng truyeàn döõ lieäu ñoàng boä, heä thoáng naøo cung caáp xung CK thì ñoùng vai troø laø master (chuû) – nhöõng heä thoáng coøn laïi nhaän xung ck ñoùng vai troø laø slave (tôù). Toác ñoä truyeàn döõ lieäu chính laø toác ñoä cuûa xung ck – chính laø taàn soá xung ck. Ví duï taàn soá xung ck laø 1MHz thì toác ñoä truyeàn döõ lieäu laø 1MBPS – 1M baud. TxD RxD RxD TxD CK CK GND GND HT1 HT2 MASTER SLAVE TDL khoâng ñoàng boä gioáng nhö heä thoáng truyeàn DL ñoàng boä nhöng khoâng coù xung CK. TxD RxD RxD TxD CK CK GND GND HT1 HT2 Khoâng coøn phaân bieät chuû vaø tôù – caùc heä thoáng laø ngang caáp. Moãi 1 xung ck laø 1 bit döõ lieäu ñöôïc truyeàn ñi – baây giôø khoâng coøn xung Ck thì laøm sao ñeå truyeàn döõ lieäu ? Ñeå truyeàn DL thì moãi heä thoáng phaûi coù 1 maïch dao ñoäng taïo xung CK – hai heä thoáng vôùi 2 maïch dao ñoäng ñoäc laäp nhöng phaûi cuøng taàn soá hay cuøng toác ñoä. Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 1
  2. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù  MAÏCH ÑIEÄN GIAO TIEÁP – 2 VÑK TRUYEÀN DÖÕ LIEÄU Chaân T×D (P3.1) laø ngoõ xuaát döõ lieäu ñi vaø chaân R×D (P3.0) laø ngoõ nhaän döõ lieäu veà. Hai thanh ghi ñeäm SBUF vaø thanh ghi ñieàu khieån SCON. Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 2
  3. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù Taàn soá truyeàn döõ lieäu noái tieáp coøn goïi toác ñoä BAUD (soá löôïng bit döõ lieäu ñöôïc truyeàn ñi trong moät giaây) coù theå hoaït ñoäng coá ñònh (söû duïng dao ñoäng treân chip) hoaëc coù theå thay ñoåi. Khi caàn toác ñoä Baud thay ñoåi thì phaûi söû duïng Timer 1 ñeå taïo toác ñoä baud. 1. THANH GHI ÑIEÀU KHIEÅN TRUYEÀN DÖÕ LIEÄU NOÁI TIEÁP: Caáu truùc cuûa thanh ghi SCON – serial control nhö sau: SM0 SM1 SM2 REN TB8 RB8 TI RI Receive – nhaän, Transmit – phaùt Bit Kyù hieäu Ñòa chæ Moâ taû hoaït ñoäng 7 SM0 9FH Bit choïn kieåu truyeàn noái tieáp: bit thöù 0. 6 SM1 9EH Bit choïn kieåu truyeàn noái tieáp: bit thöù 1. 5 SM2 9DH Bit cho pheùp truyeàn keát noái nhieàu vi xöû lyù ôû mode 2 vaø 3; RI seõ khoâng tích cöïc neáu bit thöù 9 ñaõ thu vaøo laø 0. 4 REN 9CH Bit cho pheùp nhaän kí töï. REN = 1 seõ cho pheùp nhaän kí töï. 3 TB8 9BH Duøng ñeå löu bit 9 ñeå truyeàn ñi khi hoaït ñoäng ôû mode 2 vaø 3. TB8 baèng 0 hay 1 laø do ngöôøi laäp trình thieát laäp. 2 RB8 9AH Duøng ñeå löu bit 9 nhaän veà khi hoaït ñoäng ôû mode 2 vaø 3. 1 TI 99H Côø baùo hieäu naøy leân möùc 1 khi truyeàn xong 1 kí töï vaø xoùa bôûi ngöôøi laäp trình ñeå saún saøng truyeàn kí töï tieáp theo. 0 RI 98H Côø baùo hieäu naøy leân möùc 1 khi nhaän xong 1 kí töï vaø xoùa bôûi ngöôøi laäp trình ñeå saún saøng nhaän kí töï döõ lieäu tieáp theo. 2. CAÙC KIEÅU TRUYEÀN DÖÕ LIEÄU NOÁI TIEÁP: SM0 SM1 Kieåu Moâ taû Toác ñoä baud 0 0 0 Thanh ghi dòch Coá ñònh baèng taàn soá dao ñoäng f/12. 0 1 1 UART 8 bit Toác ñoä truyeàn DL thay ñoåi bôûi Timer. 1 0 2 UART 9 bit Coá ñònh baèng taàn soá dao ñoäng f/32 or f/64 1 1 3 UART 9 bit Toác ñoä truyeàn DL thay ñoåi bôûi Timer. Baûng 4-12. Caùc kieåu truyeàn döõ lieäu. a. Truyeàn döõ lieäu kieåu 0 – kieåu thanh ghi dòch 8 bit: Döõ lieäu noái tieáp nhaän vaøo vaø döõ lieäu truyeàn ñi ñeàu thoâng qua chaân RxD. Chaân TxD thì duøng ñeå taïo xung clock. Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 3
  4. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù 8 bit döõ lieäu ñeå truyeàn ñi hoaëc nhaän veà thì luoân baét ñaàu vôùi bit coù troïng soá nhoû nhaát LSB. Toác ñoä Baud ñöôïc thieát laäp coá ñònh ôû taàn soá baèng 112 taàn soá dao ñoäng thaïch anh treân Chip. Keát noái vôùi thanh ghi dòch ñeå môû roäng IO: KHÔÛI TAÏO: MOV SCON,#00010000B ;SM0SM1=00 – MOD 0; REN = 1 KHOÂNG CAÀN THIEÁT LAÄP TOÁC ÑOÄ VÌ TD COÁ ÑÒNH LAØ BAÈNG FOSC/12 GÔÛI DL ÑI: MOV SBUF,#DATA Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 4
  5. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù Moät öùng duïng cuï theå söû duïng mode 0 laø duøng ñeå môû roäng theâm soá löôïng ngoõ ra cho MCS51 b. Truyeàn döõ lieäu kieåu 1 – Thu phaùt baát ñoàng boä 8 bit vôùi toác ñoä Baud thay ñoåi : Truyeàn döõ lieäu noái tieáp hoaït ñoäng baát ñoàng boä UART 8 bit coù toác ñoä Baud thay ñoåi. Trong kieåu naøy, 10 bit döõ lieäu seõ phaùt ñi ôû chaân TxD vaø döõ lieäu nhaän veà ôû chaân RxD. 10 bit goàm coù: 1 bit start, 8 bit data (LSB laø bit ñaàu tieân), vaø 1 bit stop. Ñoái vôùi hoaït ñoäng nhaän döõ lieäu thì bit Stop ñöôïc ñöa vaøo bit RB8 trong thanh ghi SCON. Toác ñoä Baud ñöôïc thieát laäp bôûi toác ñoä traøn cuûa Timer T1 hoaëc timer T2 (MCS52) hoaëc caû 2 timer T1 vaø T2: moät timer cho maùy phaùt vaø 1 timer cho maùy thu. KHÔÛI TAÏO TRUYEÀN DL MODE 1: MOV SCON,#01010000B = 50H ;SM0SM1=01 – MOD 1; REN = 1 PHAÛI THIEÁT LAÄP TOÁC ÑOÄ TRUYEÀN DÖÕ LIEÄU: Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 5
  6. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù SÖÛ DUÏNG TIMER1 ÑEÅ THIEÁT LAÄP TOÁC ÑOÄ: “TOÁC ÑOÄ TRUYEÀN DL BAÈNG TOÁC ÑOÄ TRAØN CUÛA TIMER CHIA CHO 32 KHI BIT SMOD = 0 VAØ CHIA CHO 16 KHI BIT SMOD = 1” . TDTRAN TDTRAN TDTDL   32 16 SMOD 0 SMOD1 TÍNH TOAÙN TOÁC ÑOÄ TRUYEÀN DÖÕ LIEÄU VÔÙI BIT SMOD = 0 VÍ DUÏ: CHOÏN TOÁC ÑOÄ TRUYEÀN LAØ 9600BPS = 9600BAUD, GIAÛ SÖÛ BIT SMOD = 0: TDTRAN TDTRAN TDTDL   32 16 SMOD 0 SMOD1 TÍNH TOÁC ÑOÄ TRAØN CUÛA TIME1 LAØ: TDTRAN  TDTDL 32  9600BAUD  32  307,200Hz CHO TAÀN SOÁ THAÏCH ANH LAØ 12MHz, SAU KHI QUA BOÄ CHIA 12 THÌ COØN 1MHz = 1,000,000Hz. TÌM GIAÙ TRÒ BAÉT ÑAÀU NAÏP CHO TIMER1 ÑEÅ ÑEÁM SAO CHO TRONG THÔØI GIAN 1S THÌ NOÙ TRAØN 307,200 LAÀN. 1,000,000 GIAÙ TRÒ BAÉT ÑAÀU: GTBD    3.25520 LAØ CON SOÁ LEÛ SEÕ GAÂY SAI SOÁ 307,200 ÑEÅ GIAÛM SAI SOÁ THÌ TA TÍNH NGÖÔÏC LAÏI. CHOÏN GIAÙ TRÒ BAÉT ÑAÀU LAØ 3 TÍNH TAÀN SOÁ CAÁP CHO TIMER1 LAØ: TSXUNG  3  307,200  921,600Hz Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 6
  7. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù TÍNH ÑÖÔÏC TAÀN SOÁ CUÛA TUÏ THAÏCH ANH: TSTA  921600Hz 12  11,059,200Hz  11,0592MHz NEÁU SÖÛ DUÏNG THAÏCH ANH NAØY THÌ SAI SOÁ LAØ 0% TÍNH TOAÙN TOÁC ÑOÄ TRUYEÀN DÖÕ LIEÄU VÔÙI BIT SMOD = 1 VÍ DUÏ: CHOÏN TOÁC ÑOÄ TRUYEÀN LAØ 9600BPS = 9600BAUD, GIAÛ SÖÛ BIT SMOD = 0: TÍNH TOÁC ÑOÄ TRAØN CUÛA TIME1 LAØ: TDT  TDBAUD  16  9600BAUD  16  153,600Hz CHO TAÀN SOÁ THAÏCH ANH LAØ 12MHz, SAU KHI QUA BOÄ CHIA 12 THÌ COØN 1MHz = 1,000,000Hz. TÌM GIAÙ TRÒ BAÉT ÑAÀU NAÏP CHO TIMER1 ÑEÅ ÑEÁM SAO CHO TRONG THÔØI GIAN 1S THÌ NOÙ TRAØN 153,600 LAÀN. 1,000,000 GIAÙ TRÒ BAÉT ÑAÀU: GTBD    6.5104 LAØ CON SOÁ LEÛ SEÕ GAÂY SAI SOÁ 153,600 CHOÏN GIAÙ TRÒ LAØ -7. SEÕ GAÂY RA SAI SOÁ Thieát laäp toác ñoä Baud duøng timer 1: Muoán coù toác ñoä Baud thì ta khôûi taïo thanh ghi TMOD ôû kieåu töï ñoäng naïp 8 bit (kieåu 2) vaø ñaët giaù trò naïp laïi vaøo thanh ghi TH1 cuûa Timer 1 ñeå taïo ra toác ñoä traøn chính xaùc ñeå thieát laäp toác ñoä Ba ud. Thanh ghi tmod ñöôïc khôûi taïo ñeå thieát laäp toác ñoä baud nhö sau: MOV TMOD,#0010××××B ;chæ quan taâm ñeán timer 1 Moät caùch khaùc ñeå taïo toác ñoä baud laø nhaän tín hieäu xung clock töø beân ngoaøi ñöa ñeán ngoõ vaøo T1. Coâng thöùc chung ñeå xaùc ñònh toác ñoä Baud trong mode 1 vaø mode 3 laø: BAUD RATE = TIMER 1 OVERFLOW RATE  32 c. Truyeàn döõ lieäu kieåu 2 – Thu phaùt baát ñoàng boä 9 bit vôùi toác ñoä Baud coá ñònh : Khi SM1 SM0 = 10 thì truyeàn döõ lieäu hoaït ñoäng ôû kieåu 2 coù toác ñoä Baud coá ñònh. Coù 11 bit ñöôïc phaùt hoaëc thu : 1 bit Start, 8 bit data, 1 bit data thöù 9 ñöôïc laäp trình vaø 1 bit Stop. Khi phaùt thì bit thöù 9 ñöôïc ñaët vaøo TB8 cuûa SCON (coù theå bit parity). Khi thu thì bit thöù 9 ñöôïc ñaët vaøo bit RB8 cuûa thanh ghi SCON. Toác ñoä Baud trong mode 2 baèng 1/12 hoaëc 1/64 taàn soá dao ñoäng treân Chip. Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 7
  8. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù d. Truyeàn döõ lieäu kieåu 3 – Thu phaùt baát ñoàng boä 9 bit vôùi toác ñoä Baud thay ñoåi : Khi SM1 SM0 = 11 thì truyeàn döõ lieäu hoaït ñoäng ôû kieåu 3 laø kieåu UART 9 bit coù toác ñoä Baud thay ñoåi. Kieåu 3 töông töï kieåu 2 ngoaïi tröø toác ñoä Baud ñöôïc laäp trình vaø ñöôïc cung caáp bôûi Timer. Caùc kieåu 1, kieåu 2 vaø kieåu 3 raát gioáng nhau, nhöõng ñieåm khaùc nhau laø ôû toác ñoä Baud (kieåu 2 coá ñònh, kieåu 1 vaø kieåu 3 thay ñoåi) vaø soá bit döõ lieäu (kieåu 1 coù 8 bit, kieåu 2 vaø kieåu 3 coù 9 bit data). 3. KHÔÛI TAÏO VAØ TRUY XUAÁT CAÙC THANH GHI TRUYEÀN DÖÕ LIEÄU NOÁI TIEÁP: Baûng toùm taét toác ñoä Baud öùng vôùi 2 loaïi thaïch anh 12 MHz vaø 11,059 MHz : Toác ñoä baud Taàn soá thaïch anh SMOD Giaù trò naïp cho TH1 Toác ñoä thöïc Sai soá 9600 12MHz 1 - 7 (F9H) 8923 7% 2400 12MHz 0 -13 (F3H) 2404 0,16% 1200 12MHz 0 -26 (E6H) 1202 ~0% 19200 11,0592MHz 1 -3 (FDH) 19200 0% 9600 11,0592MHz 0 -3 (FDH) 9600 0% 4800 11,0592MHz 0 -6 (FDH) 4800 0% 2400 11,0592MHz 0 -12 (F4H) 2400 0% 1200 11,0592MHz 0 -24 (E8H) 1200 0% 1. MODE 2 (Mode Timer töï ñoäng naïp 8 bit) : 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 duøng ñeå löu tröõ giaù trò ñeå naïp laïi cho thanh ghi TLx. Khi boä ñeám TLx chuyeån traïng thaùi töø FFH sang 00H: thì côø traøn ñöôïc set vaø giaù trò löu trong THx ñöôïc naïp vaøo TLx. Boä ñeám TLx tieáp tuïc ñeám töø giaù trò vöøa naïp töø THx leân vaø cho ñeán khi coù chuyeån traïng thaùi töø FFH sang 00H keá tieáp vaø cöù theá tieáp tuïc. Sô ñoà minh hoïa cho timer hoaït ñoäng ôû mode 2 nhö hình 4-12. Hình 4-12. Timer 1 hoaït ñoäng ôû mode 2. Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 8
  9. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù BAØI SOÁ 1: YEÂU CAÀU:  CAÛ 2 VÑK TRUYEÀN DÖÕ LIEÄU CHO NHAU VÔÙI TOÁC ÑOÄ CHOÏN LAØ 2400BAUD  VÑK A GÔÛI DÖÕ LIEÄU SANG VÑK B  VÑK B NHAÄN DÖÕ LIEÄU ROÀI GÔÛI RA PORT 0  VIEÁT CHÖÔNG TRÌNH ;CHUONG TRINH TRUYEN DL VDK A – PHAÙT ORG 0000H MOV SCON,#50H ;0101 0000B MOD1, REN=1, RB8=TB8=0, TI=RI=0 MOV TMOD,#20H ;20H=0010 0000 = T1:MODE2 MOV TH1,#-12 ;BAUD=2400, 11.0592MHZ SETB TR1 ;T1:RUN ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx MOV P0,#00 ;P 0 MAINA: MOV SBUF,P0 ;GOI DL DI JNB TI,$ ;CHO TI=1 CLR TI Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 9
  10. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù CALL DELAY1S INC P0 JMP MAINA ;NHAY VE TRUYEN TIEP $INCLUDE(TV_DELAY.ASM) END ;CHUONG TRINH NHAN DL VDK B NHAÄN – KHÔÛI TAÏO GIOÁNG NHÖ BEÂN TRUYEÀN ORG 0000H MOV SCON,#50H ;0101 0000B MOD1, REN=1, RB8=TB8=0, TI=RI=0 MOV TMOD,#20H ;20H=0010 0000 = T1:MODE2 MOV TH1,#-12 ;BAUD=2400, 11.059MHZ SETB TR1 ;T1:RUN MOV P0,#1B ;CHO 1 LED SANG DE BAO HIEU ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx MAINB: JNB RI,$ ;CHO NHAN DL CLR RI ;XOA DE BAO LAN SAU MOV P0,SBUF ;LAY DL TU TG SBUF GOI RA PORT0 JMP MAINB ;NHAY VE NHAN TIEP END BAØI SOÁ 2: VÑK GIAO TIEÁP VÔÙI MAÙY TÍNH: TOÁC ÑOÄ CHOÏN LAØ 9600 BAUD MAÙY TÍNH GÔÛI DÖÕ LIEÄU CHO VÑK VÑK NHAÄN DÖÕ LIEÄU ROÀI GÔÛI RA PORT 0 ÑIEÀU KHIEÅN LED ÑÔN  VIEÁT CHÖÔNG TRÌNH Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 10
  11. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù ;CHUONG TRINH NHAN DL VDK ORG 0000H MOV SCON,#50H ;0101 0000B MOD1, REN=1, RB8=TB8=0, TI=RI=0 MOV TMOD,#20H ;T1:MODE2 MOV TH1,#-3 ;BAUD=9600, 11.059MHZ SETB TR1 ;T1:RUN ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx MAINB: JNB RI,$ ;CHO NHAN DL CLR RI ;XOA DE BAO LAN SAU MOV P0,SBUF JMP MAINB ;NHAY VE NHAN TIEP Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 11
  12. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù END BAØI SOÁ 3: VÑK GIAO TIEÁP VÔÙI MAÙY TÍNH: MAÙY TÍNH GÔÛI DÖÕ LIEÄU CHO VÑK, VÑK NHAÄN DÖÕ LIEÄU ROÀI GÔÛI RA PORT 0 ÑIEÀU KHIEÅN LED ÑÔN, SỬ DỤNG NGẮT ĐỂ NHẬN DỮ LIỆU –NGOÀI RA VI ĐIỀU KHIỂN LUÔN THỰC HIỆN ĐIỀU KHIỂN PORT1 CHÓP TẮT. TOÁC ÑOÄ CHOÏN LAØ 9600 BAUD ;CHUONG TRINH DIEU KHIEN P0 CHOP TAT VA NHAN DL GOI RA P1 ORG 0000H JMP MAIN ORG 0023H ;DIA CHI NGAT TDL MOV P0,SBUF CLR RI RETI MAIN: MOV IE,#10010000B ;EA=ES=1 MOV SCON,#50H MOV TMOD,#20H MOV TH1,#-3 ;BAUD=9600, 11.059MHz SETB TR1 ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx MAINA: MOV P1,#00 CALL DELAY100MS MOV P1,#0FFH CALL DELAY100MS JMP MAINA $INCLUDE(TV_DELAY.ASM) END NEÁU KHOÂNG DUØNG NGAÉT THÌ TA VIEÁT NHÖ SAU: ;CHUONG TRINH DIEU KHIEN P0 CHOP TAT VA NHAN DL GOI RA P1 ORG 0000H MAIN: MOV IE,#10010000B ;EA=ES=1 MOV SCON,#50H Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 12
  13. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù MOV TMOD,#20H MOV TH1,#-3 ;BAUD=9600, 11.059MHZ SETB TR1 ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx MAINA: MOV P0,#00 CALL DELAY100MS MOV P0,#0FFH CALL DELAY100MS JNB RI,MAINA CLR RI MOV P1,SBUF JMP MAINA $INCLUDE(TV_DELAY.ASM) END BAØI SOÁ 1: YEÂU CAÀU:  CAÛ 2 VÑK TRUYEÀN DÖÕ LIEÄU CHO NHAU VÔÙI TOÁC ÑOÄ CHOÏN LAØ 2400BAUD  VÑK A GÔÛI DÖÕ LIEÄU CHO VÑK B LAØ 2 BYTE: BYTE THÖÙ NHAÁT GÔÛI RA PORT0, BYTE THÖÙ 2 GÔÛI RA PORT1  VÑK B NHAÄN DÖÕ LIEÄU LAÀN LÖÔÏC ROÀI GÔÛI RA PORT0 VAØ PORT1  VIEÁT CHÖÔNG TRÌNH Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 13
  14. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù GIAÛI PHAÙP THÖÏC HIEÄN BAÉT TAY BAÈNG PHAÀN MEÀM - ÑAÀU TIEÂN LAØ KIEÅM TRA XEM HAI HEÄ THOÁNG COÙ KEÁT NOÁI KHOÂNG BAÈNG CAÙCH GÔÛI 1 BYTE MAÕ QUY ÑÒNH ÑEÁN HEÄ THOÁNG NHAÄN VAØ HEÄ THOÁNG NHAÄN NEÁU COÙ KEÁT NOÁI THÌ SAU KHI NHAÄN XONG SEÕ GÔÛI MAÕ TRAÛ LÔØI. - NEÁU KHOÂNG THÌ THOÂNG BAÙO KHOÂNG KEÁT NOÁI – NGÖØNG - NEÁU COÙ THÌ TIEÁN HAØNH TIEÁP: - TIEÁN HAØNH GÔÛI BYTE BAÙO SOÁ LÖÔÏNG BYTE CAÀN GÔÛI – NEÁU SOÁ LÖÔÏNG BYTE LAØ 00 COÙ NGHÓA LAØ NGÖØNG LUOÂN. - TIEÁN HAØNH GÔÛI DÖÕ LIEÄU THEO ÑUÙNG SOÁ LÖÔÏNG BYTE ÑAÕ BAÉT TAY. ;CHUONG TRINH TRUYEN DL VDK A – PHAÙT MAQDGD EQU FFH ;MA QUY DINH GOI DI MAQDNV EQU FEH ;MA QUY DINH NHAN VE SLB EQU R7 ORG 0000H MOV SCON,#50H ;0101 0000B MOD1, REN=1, RB8=TB8=0, TI=RI=0 Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 14
  15. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù MOV TMOD,#21H ;20H=0010 0000 = T1:MODE2 MOV TH1,#-12 ;BAUD=2400, 11.059MHZ SETB TR1 ;T1:RUN ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;KIEM TRA BAT TAY BANG CACH GOI MA QUY DINH BAT TAY GOI DI ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx MOV SBUF,#MAQDGD ;GOI MA QUY DINH JNB TI,$ CLR TI SETB TR0 ;CHO TIMER 0 DEM MAIN1: JB RI, MAIN2 ;NHAY NEU RI = 1 TUC CO DU LIEU JNB TF0,MAIN1 ;NEU KHONG CO DU LIEU THI KTRA TIMER0 MAIN3: CALL THONGBAO_NOCONNECT JMP $ MAIN2: CLR TR0 ;NGUNG TIMER MOV A,SBUF CJNE A, MAQDNV,MAIN3 ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;DA DUNG ROI THI TIEN HANH GOI SO LUONG BYTE ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx MOV SLB,#3 MOV SBUF,SLB ;GOI SO LUONG BYTE DI JNB TI,$ CLR TI ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;TIEN HANH GOI DU LIEU ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx MOV SBUF,#1 JNB TI,$ CLR TI MOV SBUF,#2 Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 15
  16. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù JNB TI,$ CLR TI MOV SBUF,#3 JNB TI,$ CLR TI ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;HET DU LIEU ROI – GOI BYTE 00 DI DE BAO NGUNG ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx MOV SBUF,#00 JNB TI,$ CLR TI JMP $ $INCLUDE(TV_DELAY.ASM) END ;CHUONG TRINH NHAN DL VDK B NHAÄN – KHÔÛI TAÏO GIOÁNG NHÖ BEÂN TRUYEÀN MAQDGD EQU FEH ;MA QUY DINH GOI DI MAQDNV EQU FFH ;MA QUY DINH NHAN VE SLB EQU R7 ORG 0000H MOV SCON,#50H ;0101 0000B MOD1, REN=1, RB8=TB8=0, TI=RI=0 MOV TMOD,#20H ;20H=0010 0000 = T1:MODE2 MOV TH1,#-12 ;BAUD=2400, 11.059MHZ SETB TR1 ;T1:RUN ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx MAINB: JNB RI,$ ;CHO NHAN DL CLR RI ;XOA DE BAO LAN SAU MOV A,SBUF CJNE A,#MAQDNV,MAINB Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 16
  17. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù MOV SBUF,# MAQDGD JNB TI,$ CLR TI ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;DA DUNG ROI THI TIEN HANH GOI SO LUONG BYTE ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx JNB RI,$ ;CHO NHAN SLB CLR RI MOV SLB,SBUF ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;TIEN HANH GOI DU LIEU ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx MOV R0,#20H ;NAP DIA CHI BAT DAU CUA VUNG NHO N_TIEP: JNB RI,$ ;CHO NHAN SLB CLR RI MOV @R0,SBUF INC R0 DJNZ SLB,N_TIEP JMP XXXX ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;TIEN HANH GOI DU LIEU ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx JNB RI,$ CLR RI MOV P0,SBUF ;NHAN BYTE THU 1 JNB RI,$ CLR RI MOV P1,SBUF ;NHAN BYTE THU 2 JNB RI,$ Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 17
  18. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù CLR RI MOV P2,SBUF ;NHAN BYTE THU 3 JMP XXXX COM.SendByte($FF - DEM); DEM:= DEM+1; COM.ReadByte(BNHAN); LCD3.Value:= BNHAN; 255 THAÄP PHAÂN NHÒ PHAÂN 8LED 255 11111111 0000 0000 254 11111110 0000 0001 253 11111101 0000 0010 252 11111100 0000 0011 ;CHUONG TRINH DIEU KHIEN DONG CO QUAY THUAN NGHICH START BIT P3.4 STOP BIT P3.5 INV BIT P3.6 DC1 BIT P1.0 ;XANH DC2 BIT P1.2 ;DO ORG 0000H LB: SETB DC1 ;NGUNG DONG CO SETB DC2 JB START,$ ;CHO NHAN PHIM START CLR DC1 ;DCO CHAY THUAN - XANH SANG LB2: JB STOP,LB1 JMP LB ;NEU NHAN THI NHAY VE NGUNG 2 DC LB1: JB INV,LB2 CPL DC1 ;NGHICH DAO COMPLEMENT Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 18
  19. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù CPL DC2 JNB INV,$ ; CALL DELAY10MS JMP LB2 $INCLUDE(TV_DELAY.ASM) END ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX BAØI SOÁ X: YEÂU CAÀU: ÑIEÀU KHIEÅN 48 LED SANG DAN LEN VA TAT DAN ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  VIEÁT CHÖÔNG TRÌNH ;PROGRAM MCU A LED0 EQU P0 ;MCU A LED1 EQU P1 ;MCU A LED2 EQU P2 ;MCU A ;SEND TO MCU B LED3 EQU R0 =>P0 LED4 EQU R1 ;SEND TO MCU B =>P1 Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 19
  20. Ñaïi hoïc sö phaïm kyõ thuaät tp HCM khoa ñieän – ñieän töû Nguyeãn Ñình Phuù LED5 EQU R2 ;SEND TO MCU B =>P2 ORG 0000H MOV LED0,#00H MOV LED1,#00H MOV LED2,#00H MOV LED3,#00H MOV LED4,#00H MOV LED5,#00H ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx MOV SCON,#50H MOV TMOD,#20H SETB TR1 MOV TH1,#-3 ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx MAIN1: CALL SENDR012 ;SEND DATA IN REGISTER R0, R1, R2 CALL DELAY1S SETB C CALL XOAY6PORT JNC MAIN1 ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx MAIN2: CALL SENDR012 ;SEND DATA IN REGISTER R0, R1, R2 CALL DELAY1S CLR C CALL XOAY6PORT JC MAIN2 JMP MAIN1 ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;SEND DATA IN REGISTER R0, R1, R2 ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx SENDR012:MOV SBUF, LED3 ;SEND R0 JNB TI,$ ;WAIT UNTIL TI = 1 CLR TI ;CLEAR TI TO SEND NEXT DATA Boä moân ñieän töû coâng nghieäp baøi giaûng vi xöû lyù: truyeàn döõ lieäu noái tieáp 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2