1. Trang chủ
  2. » Tất cả

Bai_tp_ln_Vi_X_Ly_BKHCM

12 0 0

Đ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

Nội dung

ĐẠI HỌC QUỐC GIA TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM BÁO CÁO BÀI TẬP VI XỬ LÝ GVHD: SV: ĐOÀN HUỲNH QUÁT MSSV: 1914815 Phúmột Yên,chương 17 tháng 07thu nămchuỗi 2021ký tự từ 1.(Bài tâp chương thầy Lưu Phú)Viết trình cổng nối tiếp kết thúc mã NULL(thu mã NULL),cất vào RAM nội địa đầu 50H,sử dụng chương trình IN_CHR9 câu 2b.Chuỗi ký tự phát từ MCU 3.Sau thu xong chuỗi ký tự,xuất ký tự từ đầu đến cuối Port1 hiển thị barled LED,thời gian xuất ký tự cách 1s =>>Mô kết hợp: viết chương trình phát khoảng 10 ký tự tạo ORG 2000H MOV SCON,#11010000B MOV TMOD, #00100001B MOV TH1,#-3 MOV TL1,#-3 SETB TR1 MOV R0,#50H LOOP: ACALL IN_CHR9 MOV @R0,A MOV P2.0,C ;led tai chan P2.0 sang neu phat hien thu sai INC R0 JNZ LOOP XUAT: MOV R0,#50H LAP: MOV A,@R0 MOV P1,A ACALL DELAY1S INC R0 JNZ LAP SJMP $ IN_CHR9: JNB RI,$ CLR RI MOV A,SBUF MOV C,RB8 RET ;ctc thu ky tu bit bit thu la bit ;parity chan ;neu sai set bit c DELAY1S: MOV R7,#20 LAP1: MOV TH0,#HIGH(50000) MOV TL0,#LOW(50000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 DJNZ R7,LAP1 RET END CODE BÀI cho MCU thực chức phát ORG 2000H MOV SCON,#01000010B MOV TMOD, #00100001B MOV TH1,#-3 MOV TL1,#-3 SETB TR1 MOV R0,#30H LOOP: MOV A,@R0 MOV P2,A ACALL PHAT INC R0 CJNE A,#0,LOOP SJMP $ OUT_CHR9:JNB TI,$ CLR TI MOV TB8,C MOV SBUF,A RET END 2.( tập tập port nối tiếp thầy T.Phú ) Vẽ sơ đồ MCU8051 kết nối trực tiếp với đèn LCD 16 ký tự hai SW nhấn ký hiệu RE(thu) SE(phát).Viết chương trình thực cơng việc sau: - Nếu nhấn SW SE(tích cực mức 0),MCU xuất ký tự SO(0EH) cổng nối tiếp tiếp tục xuất 10 ký tự ASCII số 0,1…,9 kết thúc mã NULL cổng nối tiếp.Chuỗi ký tự phát cất nhớ code.Sau quay lại kiểm tra phím tiếp - Nếu nhấn SW RE(tích cực mức 0),MCU xuất ký tự SI(0FH) cổng nối tiếp chờ thu chuỗi ký tự ASCII kết thúc mã NULL cất RAM nội địa đầu 30H - Xuất chuỗi ký tự thu LCD,sau quay lại kiểm tra phím tiếp - Chống rung phím nhấn - Cho baudrate=9600 RS BIT P3.5 E BIT P3.4 RE BIT P1.0 SE BIT P1.1 LCDADDR EQU 8000H ; -ORG 2000H MOV SCON,#52H; che UART BIT BAUDRATR THAY DOI DUOC MOV TMOD ,#21H; timer mode MOV TH1,#-3 MOV TL1,#-3 SETB TR1 ;tao toc baud ACALL CLEAR ACALL INIT MAIN: CLR A KT_SE: JB SE,KT_RE ACALL DELAY100MS SJMP NHAN_SE KT_RE: JB RE,KT_SE ACALL DELAY100MS SJMP NHAN_RE NHAN_SE:ACALL MODE1 SJMP MAIN NHAN_RE:ACALL CLEAR ACALL MODE2 SJMP MAIN ; -MODE1: MOV A,#0EH ACALL SEND MOV DPTR,#TAB ;dua tro toi message L1: CLR A MOVC A,@A+DPTR ACALL SEND ;truyen ky tu INC DPTR JZ KT_PHAT ; ket thuc gap null (da truyen ky tu) SJMP L1 KT_PHAT: RET ; MODE2: MOV A,#0FH ACALL SEND L2: ky tu MOV R0,#30H ACALL RECV ;nhan MOV @R0,A JZ KT_THU ;neu ky tu la null thi ket thuc thu INC R0 SJMP L2 KT_THU: MOV R0,#30H L3: MOV A,@R0 JZ KT ACALL WRITETEXT INC R0 SJMP L3 KT: RET ; GUI VA NHAN PORT NT SEND: JNB TI,$ CLR TI MOV SBUF,A RET ; RECV: JNB RI,$ CLR RI MOV A,SBUF RET ; DELAY 100MS DELAY100MS: MOV R7,#2 LOOP: MOV TH0,#HIGH(-50000) MOV TL0,#LOW(50000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 DJNZ R7,LOOP RET ; -DELAY THUC HIEN CHO LCD ( TOC DO NHAN LENH THUC THI CHAM HON VDK) DELAY: MOV R7,#4 LAPP: MOV R6,#250 DJNZ R6,$ DJNZ R7,LAPP RET ; - KHOI DONG LCD INIT: MOV A,#38H ACALL WRITECOM MOV A,#10H ACALL WRITECOM MOV A,#0EH ACALL WRITECOM MOV A,#06H ACALL WRITECOM RET ; CHON MODE LCD WRITECOM: MOV DPTR,#LCDADDR SETB E CLR RS MOVX @DPTR,A CLR E ACALL DELAY RET ; - HIEN THI LEN LCD WRITETEXT: MOV DPTR,#LCDADDR SETB E SETB RS MOVX @DPTR,A CLR E ACALL DELAY RET ; XOA HIEN THI LCD CLEAR: MOV A,#01H ACALL WRITECOM RET TAB: DB 30H,31H,32H,33H,34H,35H,36H,37H, 38H,39H,0 END CODE BÀI TRONG BT THẦY LƯU PHÚ (hỗ trợ 2) : Vẽ sơ đồ kết nối MCU8051 trực tiếp với đèn LCD 16 ký tự.Viết chương trình thực cơng việc sau:  MCU chờ thu mã lệnh(từ MCU phát mã lệnh 5)từ cổng nối tiếp  Nếu nhận mã lệnh SO(0EH),MCU chờ nhận tiếp chuỗi ký tự từ cổng nối tiếp(chuỗi mã ASCII ký tự từ đến mã NULL)cất vào RAM nội địa đầu 30H,sau xuất chuỗi ký tự vừa thu LCD.Sau quay lại chờ nhận mã lệnh tiếp  Nếu nhận mã lệnh SI(0FH),MCU phát chuỗi 10 ký tự mã ASCII chữ A,B,C,…,I,J mã NULL cổng nối tiếp.Sau quay lại chờ nhận mã lệnh tiếp  Cho baurate=9600 RS BIT P3.5 E BIT P3.4 RE BIT P1.0 SE BIT P1.1 LCDADDR EQU 8000H ; -ORG 2000H MOV SCON,#52H; che UART BIT BAUDRATR THAY DOI DUOC MOV TMOD ,#21H; timer mode MOV TH1,#-3 MOV TL1,#-3 SETB TR1 ;tao toc baud ACALL CLEAR ACALL INIT WAIT: ACALL RECV CJNE A,#0EH,TT SJMP MODE1 TT: CJNE A,#0FH,WAIT SJMP MODE2 ; MODE NHÂN MÃ LÊNH SO ( THUC HIEN NHAN KY TU DEN SAU DO HIEN LEN LCD) MODE1: MOV R0,#30H LOOP1: ACALL RECV MOV @R0,A INC R0 JZ TT1 SJMP LOOP1 TT1: MOV R0,#30H LOOP2: MOV A,@R0 ACALL WRITETEXT JZ WAIT INC R0 SJMP LOOP2 ; MODE NHAN MÃ LÊNH SI SAU DO PHAT CHUOI KY TU ASCII A,B, I,J MODE2: MOV R0,#41H LOOP3: SEND: MOV A,R0 ACALL SEND INC R0 CJNE A,#4BH,LOOP3 MOV A,#0 ACALL SEND SJMP WAIT JNB TI,$ CLR TI MOV SBUF,A RET ; RECV: JNB RI,$ CLR RI MOV A,SBUF RET ; - DELAY THUC HIEN CHO LCD DELAY: MOV R7,#4 LAPP: MOV R6,#250 DJNZ R6,$ DJNZ R7,LAPP RET ; - KHOI DONG LCD INIT: MOV A,#38H ACALL WRITECOM MOV A,#10H ACALL WRITECOM MOV A,#0EH ACALL WRITECOM MOV A,#06H ACALL WRITECOM RET ; CHON MODE LCD WRITECOM: MOV DPTR,#LCDADDR SETB E CLR RS MOVX @DPTR,A CLR E ACALL DELAY RET ; - HIEN THI LEN LCD WRITETEXT: MOV DPTR,#LCDADDR SETB E SETB RS MOVX @DPTR,A CLR E ACALL DELAY RET ; XOA HIEN THI LCD CLEAR: MOV A,#01H ACALL WRITECOM RET TAB: DB 30H,31H,32H,33H,34H,35H,36H,37H, 38H,39H,0 END VIDEO THỰC HIỆN MÔ PHỎNG: https://drive.google.com/drive/folders/1lFR7EZ6ZgpXTKn1TUF_dvbv0if9iuut?usp=sharing 3.(Bài tập chương thầy Lưu Phú) Viết chương trình tạo chuỗi xung mã hóa bit data (nhập từ nibble thấp P2)điều chế sóng mang tần số 38KHz thời gian mức1(tương tự 2) hình đây, xuất chuỗi xung nối tiếp P1.0 Chu kỳ T=50ms,bit Tp=3/4T,bit Tp=1/4T,bit sync Tp=1/2T kết thúc chuỗi xung,Tp thời gian mức 1,MSB truyền trước.Ví dụ hình mạch mã hóa bit 0101 Hình ảnh mơ ví dụ ngõ vào P2 F3H ORG 0000H ; ctc khởi tạo sóng mang với LJMP MAIN giá trị R6 R7 nạp cho TH0 TL0 ORG 000BH SONGMANG:JB F0, THAP LJMP ISR_T0 ;bit F0 thực kiểm tra ORG 001BH CLR ET1 (tức không tạo xung 38khz) LJMP ISR_T1 SETB F0 MAIN: MOV R1,#5 SETB ET1 MOV TMOD,#11H RLC A LCALL CHECKP2 JC ONE SETB TF0 MOV R6,#HIGH(-12500) SETB TF1 MOV R7,#LOW(-12500) MOV IE,#10001010B MOV R0,#0 SJMP $ SJMP SYNC_ ONE: MOV R6,#HIGH(-37500) MOV R7,#LOW(-37500) MOV R0,#1 SYNC_: DJNZ R1,KT MOV R6,#HIGH(-25000) MOV R7,#LOW(-25000) MOV R0,#2 CHECKP2: MOV A,P2 SJMP KT MOV R7,P2 THAP: CLR F0 ANL A,#0FH CLR P1.0 SWAP A CLR ET1 RET CJNE R0,#0,TT ; MOV R6,#HIGH(-37500) ISR_T0: LCALL SONGMANG MOV R7,#LOW(-37500) CLR TR0 SJMP KT MOV TH0,R6 TT: CJNE R0,#1,TT1 MOV TL0,R7 MOV R6,#HIGH(-12500) SETB TR0 MOV R7,#LOW(-12500) RETI SJMP KT ; -ngắt timer tạo sóng TT1: MOV R6,#HIGH(-25000) 38khz MOV R7,#LOW(-25000) ISR_T1: CLR TR1 MOV R1,#5 MOV TH1,#HIGH(-13) LCALL CHECKP2 MOV TL1,#LOW(-13) ;thực lấy giá trị P2 SETB TR1 KT: RET CPL P1.0 ; -ctc Thực lấy nible thấp RETI port END Viết lại chương trình cho tổng quát, tức cho phép nhập P2 giá trị liên tục Khơng viết nhiều lệnh nhảy gọi chương trình ngắt Video mô phỏng: https://youtu.be/e9g0o5lizIg

Ngày đăng: 10/02/2022, 15:47

TÀI LIỆU CÙNG NGƯỜI DÙNG

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

TÀI LIỆU LIÊN QUAN

w