vi xu ly bui minh thanh vxl ch03 8051 3 6 serialport v02 cuuduongthancong com

44 1 0
vi xu ly bui minh thanh vxl ch03 8051 3 6 serialport v02   cuuduongthancong com

Đ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

ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN KỸ THUẬT ĐIỆN TỬ CHƯƠNG HỌ VI ĐIỀU KHIỂN 8051 CuuDuongThanCong.com https://fb.com/tailieudientucntt 3.6 Cổng nối tiếp (Serial Port) Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung • Giới thiệu • Chuẩn EIA(Electronic Industries Association)-232E RS232 • Giao tiếp cổng nối tiếp MCS-51/52 • Ứng dụng chế độ • Ứng dụng chế độ • Ứng dụng chế độ & • Các thí dụ Bộ mơn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt Truyền liệu nối tiếp • Truyền liệu khoảng cách xa • Tốc độ truyền liệu thấp • Truyền liệu nối tiếp đồng – Dùng tín hiệu clock riêng để đồng hóa mạch thu phát – Thường dùng khung liệu lớn nhanh • Truyền liệu nối tiếp bất đồng – Khơng cần tín hiệu clock riêng để đồng hoá chuyển liệu – Dựa k{ tự Mỗi k{ tự đóng khung “start bit” “stop bit” – Bên thu cần nhận dạng “start bit” “stop bit” để nhận k{ tự liệu Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt Truyền liệu nối tiếp đồng (synchronous) bất đồng (asynchronous) với 8051 Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt Đường truyền liệu DTE: Data Terminal Equipment DCE: Data Communications Equipmnent DTE Computer or terminal Communication link DCE DCE Modem Modem DTE Computer or terminal • Người ta sử dụng đường điện thoại công cộng dành riêng làm môi trường truyền liệu nối tiếp bất đồng • Modem dùng để chuyển đổi liệu số thành dạng sóng analog thích hợp cho việc truyền đường dây điện thoại ngược lại • Có kiểu đường truyền: Điểm đến điểm Đa điểm Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt Đường truyền Điểm đến điểm Đa điểm Rx Tx StationRx Station Tx Peer Peer Master Slave Slave Slave n Address Address Address n Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt Cơ đường truyền • Hệ thống dây dây: – dây: tín hiệu đất – dây: dây • Các kiểu đường truyền: – Đơn công (Simplex link): đường dây dành riêng cho thu phát không hai – Bán song công (Half-duplex link): đường dây dùng cho phát thu lần có chiều – Song cơng (Full-duplex link): Phát thu tiến hành đồng thời Đường truyền cần dây Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt Cơ đường truyền Signal pattern for letter “A” (41H) Start bit Stop bit 5V 0V 0 0 1 Serial port D0 D1 D2 D3 D4 D5 D6 D7 >+3V Toverflow = 1/38.4 kHz = 26.04 μs Với XTAL=12 MHz -> TCLK = μs Overflow cần Toverflow/TCLK ≈ 26 clocks Giá trị nạp cho timer -26 Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 30 Tóm tắt tốc độ baud Bộ mơn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 31 Thí dụ 1: Khởi tạo trị cho cổng nối tiếp Viết chuỗi lệnh để khởi tạo trị cổng nối tiếp hoạt động UART bit với tốc độ 2400 baud Sử dụng Timer để cung cấp xung nhịp tốc độ baud Bài giải Với thí dụ này, có ghi phải khởi tạo trị là: SCON, TMOD, TCON, TH1 Giá trị cần để khởi tạo trị cho ghi sau ORG INIT: MOV MOV MOV SETB END Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 8100H SCON, #52H TMOD, #20H TH1, #-13 TR1 32 Thí dụ 2: • Giả sử 10 byte chuỗi liệu lưu RAM nội từ địa 30H Viết chương trình gửi chuỗi liệu đến cổng nối tiếp 8051 (1200 baud, crystal 11.0592 MHz) LOOP: SEND: DONE: ORG 0000H MOV SCON,#01010010B MOV TMOD,#00100000B MOV TH1,#-24 SETB TR1 MOV R2,#10 MOV R0,#30H MOV A,@R0 ACALL SEND INC R0 DJNZ R2,LOOP SJMP DONE JNB TI,$ CLR TI MOV SBUF,A RET NOP END Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com ;Serial port mode ;Timer mode ;reload count for 1200 baud ;start Timer ;number of loops ;starting address ;get data ;send data ;increase pointer ;loop 10 times ;transmit buffer empty? No:check again ;yes: clear flag and ; send data ;return https://fb.com/tailieudientucntt 33 Thí dụ • Giả sử chuỗi liệu lưu RAM nội từ địa 30H đến 50H Viết chương trình gửi chuỗi liệu cổng nối tiếp 8051 dùng UART 8-bit, 2400 baud, 11.059-MHz crystal LOOP: SEND: DONE: Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com ORG 0000H MOV SCON,#01010010B MOV TMOD,#00100000B MOV TH1,#-12 SETB TR1 MOV R0,#30H MOV A,@R0 ACALL SEND INC R0 CJNE R0,#51H,LOOP SJMP DONE JNB TI,$ CLR TI MOV SBUF,A RET NOP END https://fb.com/tailieudientucntt 34 Thí dụ • Viết chương trình nhận 20-byte chuỗi liệu từ cổng nối tiếp dùng UART 8bit, 2400 baud, 11.059-MHz crystal ghi vào RAM nội địa 40H ORG 0000H MOV SCON,#01010010B MOV TMOD,#00100000B MOV TH1,#-12 SETB TR1 MOV R2,#20 MOV R0,#40H LOOP: ACALL RECEIVE MOV @R0,A INC R0 DJNZ R2,LOOP SJMP DONE RECEIVE: JNB RI,$ CLR RI MOV A,SBUF RET DONE: NOP END Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com ;Serial port mode ;Timer mode ;reload count for 2400 baud ;start Timer ;number of loops ;starting address ;receive data ;store data ;increase pointer ;loop 20 times ;receive buffer full? No: check again ;yes: clear flag and ; receive data ;return https://fb.com/tailieudientucntt 35 Thí dụ • Viết chương trình nhận 40-byte chuỗi liệu từ cổng nối tiếp dùng UART 8bit, 4800 baud, 11.059-MHz crystal ghi vào RAM nội địa 40H ORG 0000H MOV SCON,#01010010B MOV TMOD,#00100000B MOV TH1,#-6 SETB TR1 MOV R2,#40 MOV R0,#40H LOOP: ACALL RECEIVE MOV @R0,A INC R0 DJNZ R2,LOOP SJMP DONE RECEIVE: JNB RI,$ CLR RI MOV A,SBUF RET DONE: NOP END Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com ;Serial port mode ;Timer mode ;reload count for 4800 baud ;start Timer ;number of loops ;starting address ;receive data ;store data ;increase pointer ;loop 20 times ;receive buffer full? No: check again ;yes: clear flag and ; receive data ;return https://fb.com/tailieudientucntt 36 Thí dụ 6: Chương trình xuất ký tự Viết chương trình OUTCHR để phát mã ASCII bit ghi tích lũy A cổng nốitiếp 8051 với bit kiểm tra lẽ thêm vào bit thứ Trở từ chương trình khơng làm thay đổi trị ghi tích lũy trước gọi chương trình Bài giải Thí dụ thí dụ kế minh họa số chương trình thơng dụng hệ vi tính có gắn thiết bị đầu cuối RS232: xuất k{ tự (OUTCHR) nhập k{ tự (INCHAR) OUTCHR: AGAIN: MOV CPL MOV JNB CLR MOV CLR RET C, P C ACC.7, C TI, AGAIN TI SBUF, A ACC.7 Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com ; đặt bit kiểm chẳn vào cờ C ; đổi sang kiểm tra lẽ ; thêm vào mã k{ tự ; TX có rảnh ? Khơng : kiểm tra lại ; Truyền  xóa cờ TI ; gửi k{ tự ; bỏ bit kiểm tra lẽ ; quay https://fb.com/tailieudientucntt 37 Thí dụ, lệnh sau phát mã ASCII cho chữ Z đến thiết bị nối tiếp gắn vào cổng nối tiếp 8051: MOV A, # ’Z’ CALL OUTCHR (tiếp tục) Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 38 Thí dụ 7: Chương trình nhập ký tự Viết chương trình INCHAR để nhập ký tự từ cổng nối tiếp 8051 trả với mã ASCII bit ghi tích lũy Bit kiểm tra lẽ đặt bit thứ nhận đặt cờ nhớ lên có sai kiểm tra chẳn lẽ INCHAR: JNB RI, $ ; đợi ký tự CLR RI ; xóa cờ MOV A, SBUF ; đọc ký tự vào A MOV C, P ; với kiểm tra lẽ A, P = CPL C ; bù để có lỗi CLR ACC.7 ; bỏ bit kiểm tra chẳn lẽ RET Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 39 Thí dụ • Giả sử 10-byte chuỗi liệu ASCII 8-bit lưu RAM nội từ địa 30H Viết chương trình phát chuỗi liệu cổng nối tiếp (4800 baud, crystal 11.0592 MHz) với cờ kiểm tra lẽ truyền bit thứ Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 40 Thí dụ ORG 0000H MOV SCON,#11010010B MOV TMOD,#00100000B MOV TH1,#-6 SETB TR1 MOV R2,#10 MOV R0,#30H LOOP: MOV A,@R0 MOV C,P CPL C MOV TB8,C ACALL SEND INC R0 DJNZ R2,LOOP SJMP DONE SEND: JNB TI,$ CLR TI MOV SBUF,A RET DONE: NOP END Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com ;Serial port mode (9-bit) ;Timer mode ;reload count for 4800 baud ;start Timer ;number of loops ;starting address ;get data ;put even parity bit in C flag ;convert to odd parity ;and move to the 9th data bit ;send data ;increase pointer ;loop 10 times ;check TI empty? No: check again ;yes: clear flag and ; send data ;return https://fb.com/tailieudientucntt 41 Thí dụ • Viết chương trình nhận 40-byte chuỗi liệu từ cổng nối tiếp dùng UART 8-bit, 4800 baud, 11.059-MHz crystal ghi RAM ngoại địa 5000H ORG 0000H MOV SCON,#01010010B MOV TMOD,#00100000B MOV TH1,#-6 SETB TR1 MOV R2,#40 MOV DPTR,#5000H LOOP: ACALL RECEIVE MOVX @DPTR,A INC DPTR DJNZ R2,LOOP SJMP DONE RECEIVE: JNB RI,$ CLR RI MOV A,SBUF RET DONE: NOP END Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com ;Serial port mode ;Timer mode ;reload count for 4800 baud ;start Timer ;number of loops ;starting address ;receive data ;store data ;increase pointer ;loop 20 times ;receive buffer full? No: check again ;yes: clear flag and ;receive data ;return https://fb.com/tailieudientucntt 42 Exercise • Viết chương trình nhận 50-byte chuỗi liệu từ cổng nối tiếp dùng UART 8-bit, 2400 bps, 11.059 MHz kiễm tra: – Nếu byte liệu số chẵn ghi vào RAM nội địa 40H – Nếu byte liệu số lẽ ghi RAM ngoại địa 2000H Bộ môn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 43 Tài liệu tham khảo • Hồ Trung Mỹ, Vi xử l{, Nhà xuất Đại học Quốc Gia Tp HCM - 2003 • I Scott MacKenzie , The 8051 Microcontroller, 2nd Edition, Prentice-Hall, 1995 • Slide giảng thầy Hồ Trung Mỹ • Slide giảng thầy Lê Chí Thơng Bộ mơn Kỹ Thuật Điện Tử - ĐHBK CuuDuongThanCong.com https://fb.com/tailieudientucntt 44 ... Điện Tử - ĐHBK CuuDuongThanCong. com space https://fb .com/ tailieudientucntt EIA- 232 -E or RS- 232 • EIA- 232 -E or RS- 232 can apply to the following data communication schemes: – Serial communications... ĐHBK CuuDuongThanCong. com https://fb .com/ tailieudientucntt Cơ đường truyền Signal pattern for letter “A” (41H) Start bit Stop bit 5V 0V 0 0 1 Serial port D0 D1 D2 D3 D4 D5 D6 D7 >+3V

Ngày đăng: 27/12/2022, 13:47

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

Tài liệu liên quan