Lập trình giao tiếp nối tiếp doc

19 273 0
Lập trình giao tiếp nối tiếp doc

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Xung & Hoi1 1.Giớithiệu 2.Sơđồ khốivàchân 3.Tổchứcbộnhớ 4.Cácthanhghichứcnăng đặcbiệt(SFR) 5.Dao độngvàhoạt độngreset 6.Tậplệnh 7.Cácmode định địachỉ (addressing modes) 8.LậptrìnhIO 9.Tạotrễ 10.LậptrìnhTimer/Counter 11. 11. L L ậ ậ p p tr tr ì ì nh nh giao giao ti ti ế ế p p n n ố ố i i ti ti ế ế p p (serial (serial comm comm programming) programming) 12.Lậptrìnhngắt(interrupt programming) 13.Lậptrìnhhợpngữ Xung & Hoi2 11-1. Giớithiệu •Port nốitiếphoạt độngsong công(full duplex), nghĩalàcó khả năngthuvàphát đồngthời •Sửdụng2 thanhghichứcnăng đặcbiệt SBUF (địachỉ byte là 99H) & SCON (địachỉ byte là98H) để truyxuấtport nốitiếp •Việc ghilênSBUF sẽ nạpdữliệu để phát, vàviệc đọcSBUF sẽ truyxuấtdữliệu đãnhận được à thựcracó2 SBUF riêng rẽ •SCON chứacácbit trạngtháivà điềukhiển, thanhnày được định địachỉ bit •Tầnsốhoạt độngcủaport nốitiếphay còngọilà tốc độ baud (baud rate) cóthể cốđịnhhoặcthay đổi Xung & Hoi3 Clk SBUF Q (write only) SBUF (read only) D Shift Register Clk Baud rate clock (phát) Baud rate clock (thu) TXD (P3.1) 8051 internal bus RXD (P3.0) Xung & Hoi4 11-2. Thanhkhi điềukhiểnport nốitiếp SM1, SM0: chọnchếđộ củaport nốitiếp SM2: chophéptruyềnthông đaxửlý REN: chophépthu, phải đượcset để nhậncáckýtự TB8:bit thứ 9 đượcphát ở chếđộ 2 & 3 RB8:bit thứ 9 nhận được TI: cờ ngắtphát, đượcset ngaysaukhikếtthúcviệcphát1 kýtự; đượcxóabởiphầnmềm RI: cờ ngắtthu, đượcset ngaysaukhikếtthúcviệcthu1 kýtự; đượcxóabởiphầnmềm SM0 SM1 SM2 REN RB8TB8 RITI SCON Xung & Hoi5 11-3. Cácchếđộ hoạt động SM0SM1ModeMôtả Tốcđộ baud 000ThanhghidịchCốđịnh(f OSC /12) 011UART 8-bit Thay đổi (thiếtlập bởibộđịnhthời) 102UART 9-bitCốđịnh(f OSC /12 hoặcf OSC /64) 113UART 9-bit Thay đổi (thiếtlập bởibộđịnhthời) Xung & Hoi6 11-3-1. Thanhghidịch8-bit (mode 0) •Khiphátvàthudữliệu8-bit, bit LSB đượcpháthoặcthutrước tiên •Tốcđộ baud cốđịnh= f OSC /12 •ChânRxDdùngchocảviệcthuphátdữliệutrongkhiTxD dùnglàmchânxuấtclock dịchbit •Phát: –GhivàoSBUF –Dữliệu đượcdịchrangoàitrênchânRxD(P3.0) –Xungclock dịchbit đượcgửiratrênchânTxD(P3.1) –Mỗibit hợplệtruyền đitrênRxDtrong1 chukỳmáy Xung & Hoi7 •Thu: –Chỉđượckhởi độngkhiREN = 1 & RI = 0, nghĩalàphảiset REN = 1 ở thời điểmbắtđầuchươngtrình& xóaRI để bắt đầucôngviệcthudữliệu –Dữliệu đượcdịchvàochânRxDbởixungclock dịchbit (tác độngsườnlên) •1 Ứngdụngcủamode 0: –Mởrộngthêmcácngõracho8051 8051 TxD(P3.1) RxD(P3.0) Clock Shift Regsiter Data 8 ngõramởrộng Xung & Hoi8 11-3-2. UART 8-bit cótốcđộ baud thay đổi(mode 1) •UART làbộthuphátdữliệunốitiếpvớimỗikýtựdữliệu được đứngtrướcbởi1 bit start và đứngsaubởi1 bit stop. Thỉnhthoảng1 bit parity đượcchènvào. •Hoạt độngchủ yếucủaUART làbiếndữliệupháttừ// thành ntvàbiếndữliệuthutừntthành// •CờngắtphátTI đượcset bằng1 ngaykhibit stop xuấthiện trênTxD 1 / baud rate D0D1D2D3D4D5D6D7 Start bit Stop bit TI (ready for more data) TxD TI Xung & Hoi9 •Việcnhận đượckhởi độngbởi1 chuyểntrạngtháitừ1 xuống 0 trên đườngRxD(bit start) •Bit start sau đó đượcbỏqua & 8 bit dữ liệusau đó đượcnhận tuầntựvàothanhghidịchbit củaport nốitiếp. Khicả8 bit đượcnhận, tacó: –Bit thứ 9 (bit stop) à RB8 củaSCON –8 bit dữ liệu đượcnạpvàoSBUF –CờngắtthuRI đượcset •Note: Các điềutrênchỉ xảyranếutrước đócờRI = 0 Xung & Hoi10 11-4. Khởi độngvàtruyxuấtcácthanhghi •Chophépnhận: REN trongSCON phải đượcset bởiphần mềm để chophépnhậnkýtự SETBREN Hoặc MOVSCON, #xxx1xxxxB •Thêmvàobit chẵnlẻ:bit P trongPSW đượcset hoặcxóa ở mỗichukỳmáy để thiếtlậpviệckiểmtrachẵncho8 bit chứa trongA MOVC, P; đưabit kiểmtrachẵnvàoTB8 MOVTB8, C; bit nàytrở thànhbit thứ 9 MOVSBUF, A; dichuyển8 bit dữ liệuvàoSBUF [...]... Port nối tiếp mode 1 or 3 2 Timer 1 hoạt động mode 2 (8-bit auto-reload) 3 Set TH1 bằng 253 4 Set PCON.7 (SMOD) Xung & Hoi 16 Các bài toán • EBT11.1 Khởi động port nt: Viết chuỗi lệnh khởi động port nối tiếp hoạt động như 1 UART 8-bit với tốc độ baud 2400 Dùng timer 1 để cung cấp xung clock tốc độ baud? • EBT11.2 CTC xuất ký tự: Viết CTC mang tên OUTCHAR phát mã ASCII 7-bit chứa trong A ra port nối tiếp. ..• Các cờ ngắt: RI và TI được set bằng phần cứng nhưng phải xóa bằng phần mềm CTC nhận 1 ký tự qua port nối tiếp như sau: INCHAR: JNB RI, $ CLR RI MOV A, SBUF RET CTC phát 1 ký tự qua port nt: OUTCHAR: JNB TI, $ CLR TI MOV SBUF, A RET Xung & Hoi 11 11-5 Tốc độ baud của port nối tiếp On-chip OSC Baud rate clock ¸12 Mode 0 ¸64 On-chip OSC SMOD=0 Timer 1 overflow Mode 1 & 3 ¸32 SMOD=1 ¸32 Mode... trong A ra port nối tiếp với bit kiểm tra chẵn là bit thứ 8 Việc trở về từ CTC phải không làm thay đổi nội dung thanh chứa A? • EBT11.3 CTC thu ký tự: Viết CTC mang tên INCHAR để thu 1 ký tự từ port nối tiếp & trả về mã ASCII 7-bit trong A Sử dụng kiểm tra chẵn trong bit thứ 8 thu được và set cờ nhớ bằng 1 nếu có lỗi chẵn lẻ? Xung & Hoi 17 MAX 232 Xung & Hoi 18 Xung & Hoi 19 . modes) 8.LậptrìnhIO 9.Tạotrễ 10.LậptrìnhTimer/Counter 11. 11. L L ậ ậ p p tr tr ì ì nh nh giao giao ti ti ế ế p p n n ố ố i i ti ti ế ế p p (serial (serial comm comm programming) programming) 12.Lậptrìnhngắt(interrupt. (serial comm comm programming) programming) 12.Lậptrìnhngắt(interrupt programming) 13.Lậptrìnhhợpngữ Xung & Hoi2 11-1. Giớithiệu •Port nốitiếphoạt độngsong công(full duplex), nghĩalàcó khả. clock (thu) TXD (P3.1) 8051 internal bus RXD (P3.0) Xung & Hoi4 11-2. Thanhkhi điềukhiểnport nốitiếp SM1, SM0: chọnchếđộ củaport nốitiếp SM2: chophéptruyềnthông đaxửlý REN: chophépthu, phải đượcset để nhậncáckýtự TB8:bit

Ngày đăng: 18/06/2014, 14:20

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan