Bài giảng Vi điều khiển - Truyền dữ liệu nối tiếp - Nguyễn Đình Phú
Tóm tắt Bài giảng Vi điều khiển - Truyền dữ liệu nối tiếp - Nguyễn Đình Phú: ... trong mode 1 và mode 3 là: BAUD RATE = TIMER 1 OVERFLOW RATE 32 c. Truyền dữ liệu kiểu 2 – Thu phát bất đồng bộ 9 bit với tốc độ Baud cố định : Khi SM1 SM0 = 10 thì truyền dữ liệu hoạt động ở kiểu 2 có tốc độ Baud cố định. Có 11 bit được phát hoặc thu : 1 bit ... 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 NẾU KHÔNG DÙNG NGẮT THÌ TA VIẾT NHƯ SAU: ...t tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 18 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 THẬP ...
ẾU SỬ DỤNG THẠCH ANH NÀY THÌ SAI SỐ LÀ 0% TÍNH TOÁN TỐC ĐỘ TRUYỀN DỮ LIỆU VỚI BIT SMOD = 1 VÍ DỤ: CHỌN TỐC ĐỘ TRUYỀN LÀ 9600BPS = 9600BAUD, GIẢ SỬ BIT SMOD = 0: TÍNH TỐC ĐỘ TRÀN CỦA TIME1 LÀ: HzBAUDTDBAUDTDT 600,15316960016 CHO TẦN SỐ THẠCH ANH LÀ 12MHz, SAU KHI QUA BỘ CHIA 12 THÌ CÒN 1MHz = 1,000,000Hz. TÌM GIÁ TRỊ BẮT ĐẦU NẠP CHO TIMER1 ĐỂ ĐẾM SAO CHO TRONG THỜI GIAN 1S THÌ NÓ TRÀN 153,600 LẦN. GIÁ TRỊ BẮT ĐẦU: 5104.6 600,153 000,000,1 GTBD LÀ CON SỐ LẺ SẼ GÂY SAI SỐ CHỌN GIÁ TRỊ LÀ -7. SẼ GÂY RA SAI SỐ Thiết lập tốc độ Baud dùng timer 1: Muốn có tốc độ Baud thì ta khởi tạo thanh ghi TMOD ở kiểu tự động nạp 8 bit (kiểu 2) và đặt giá trị nạp lại vào thanh ghi TH1 của Timer 1 để tạo ra tốc độ tràn chính xác để thiết lập tốc độ Baud. Thanh ghi tmod được khởi tạo để thiết lập tốc độ baud như sau: MOV TMOD,#0010××××B ;chỉ quan tâm đến timer 1 Một cách khác để tạo tốc độ baud là nhận tín hiệu xung clock từ bên ngoài đưa đến ngõ vào T1. Công thức chung để xác định tốc độ Baud trong mode 1 và mode 3 là: BAUD RATE = TIMER 1 OVERFLOW RATE 32 c. Truyền dữ liệu kiểu 2 – Thu phát bất đồng bộ 9 bit với tốc độ Baud cố định : Khi SM1 SM0 = 10 thì truyền dữ liệu hoạt động ở kiểu 2 có tốc độ Baud cố định. Có 11 bit được phát hoặc thu : 1 bit Start, 8 bit data, 1 bit data thứ 9 được lập trình và 1 bit Stop. Khi phát thì bit thứ 9 được đặt vào TB8 của SCON (có thể bit parity). Khi thu thì bit thứ 9 được đặt vào bit RB8 của thanh ghi SCON. Tốc độ Baud trong mode 2 bằng 1/12 hoặc 1/64 tần số dao động trên Chip. Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 8 d. Truyền dữ liệu kiểu 3 – Thu phát bất đồng bộ 9 bit với tốc độ Baud thay đổi : Khi SM1 SM0 = 11 thì truyền dữ liệu hoạt động ở kiểu 3 là kiểu UART 9 bit có tốc độ Baud thay đổi. Kiểu 3 tương tự kiểu 2 ngoại trừ tốc độ Baud được lập trình và được cung cấp bởi Timer. Các kiểu 1, kiểu 2 và kiểu 3 rất giống nhau, những điểm khác nhau là ở tốc độ Baud (kiểu 2 cố định, kiểu 1 và kiểu 3 thay đổi) và số bit dữ liệu (kiểu 1 có 8 bit, kiểu 2 và kiểu 3 có 9 bit data). 3. KHỞI TẠO VÀ TRUY XUẤT CÁC THANH GHI TRUYỀN DỮ LIỆU NỐI TIẾP: Bảng tóm tắt tốc độ Baud ứng với 2 loại thạch anh 12 MHz và 11,059 MHz : Tốc độ baud Tần số thạch anh SMOD Giá trị nạp cho TH1 Tốc độ thực Sai số 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ự động nạp 8 bit) : Mode 2 là mode tự động nạp 8 bit, byte thấp TLx của Timer hoạt động như một Timer 8 bit trong khi byte cao THx của Timer dùng để lưu trữ giá trị để nạp lại cho thanh ghi TLx. Khi bộ đếm TLx chuyển trạng thái từ FFH sang 00H: thì cờ tràn được set và giá trị lưu trong THx được nạp vào TLx. Bộ đếm TLx tiếp tục đếm từ giá trị vừa nạp từ THx lên và cho đến khi có chuyển trạng thái từ FFH sang 00H kế tiếp và cứ thế tiếp tục. Sơ đồ minh họa cho timer hoạt động ở mode 2 như hình 4-12. Hình 4-12. Timer 1 hoạt động ở mode 2. Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 9 BÀI SỐ 1: YÊU CẦU: CẢ 2 VĐK TRUYỀN DỮ LIỆU CHO NHAU VỚI TỐC ĐỘ CHỌN LÀ 2400BAUD VĐK A GỞI DỮ LIỆU SANG VĐK B VĐK B NHẬN DỮ LIỆU RỒI GỞI RA PORT 0 VIẾT CHƯƠNG TRÌNH ;CHUONG TRINH TRUYEN DL VDK A – PHÁ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 ;P0 MAINA: MOV SBUF,P0 ;GOI DL DI JNB TI,$ ;CHO TI=1 CLR TI Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 10 CALL DELAY1S INC P0 JMP MAINA ;NHAY VE TRUYEN TIEP $INCLUDE(TV_DELAY.ASM) END ;CHUONG TRINH NHAN DL VDK B NHẬN – KHỞI TẠO GIỐNG NHƯ BÊN TRUYỀ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 BÀI SỐ 2: VĐK GIAO TIẾP VỚI MÁY TÍNH: TỐC ĐỘ CHỌN LÀ 9600 BAUD MÁY TÍNH GỞI DỮ LIỆU CHO VĐK VĐK NHẬN DỮ LIỆU RỒI GỞI RA PORT 0 ĐIỀU KHIỂN LED ĐƠN VIẾT CHƯƠNG TRÌNH Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 11 ;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 Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 12 END BÀI SỐ 3: VĐK GIAO TIẾP VỚI MÁY TÍNH: MÁY TÍNH GỞI DỮ LIỆU CHO VĐK, VĐK NHẬN DỮ LIỆU RỒI GỞI RA PORT 0 ĐIỀU KHIỂN LED ĐƠN, SỬ DỤNG NGẮT ĐỂ NHẬN DỮ LIỆU –NGỒI RA VI ĐIỀU KHIỂN LUƠN THỰC HIỆN ĐIỀU KHIỂN PORT1 CHĨP TẮT. TỐC ĐỘ CHỌN LÀ 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 NẾU KHÔNG DÙNG NGẮT THÌ TA VIẾ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 Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 13 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 BÀI SỐ 1: YÊU CẦU: CẢ 2 VĐK TRUYỀN DỮ LIỆU CHO NHAU VỚI TỐC ĐỘ CHỌN LÀ 2400BAUD VĐK A GỞI DỮ LIỆU CHO VĐK B LÀ 2 BYTE: BYTE THỨ NHẤT GỞI RA PORT0, BYTE THỨ 2 GỞI RA PORT1 VĐK B NHẬN DỮ LIỆU LẦN LƯỢC RỒI GỞI RA PORT0 VÀ PORT1 VIẾT CHƯƠNG TRÌNH Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 14 GIẢI PHÁP THỰC HIỆN BẮT TAY BẰNG PHẦN MỀM - ĐẦU TIÊN LÀ KIỂM TRA XEM HAI HỆ THỐNG CÓ KẾT NỐI KHÔNG BẰNG CÁCH GỞI 1 BYTE MÃ QUY ĐỊNH ĐẾN HỆ THỐNG NHẬN VÀ HỆ THỐNG NHẬN NẾU CÓ KẾT NỐI THÌ SAU KHI NHẬN XONG SẼ GỞI MÃ TRẢ LỜI. - NẾU KHÔNG THÌ THÔNG BÁO KHÔNG KẾT NỐI – NGỪNG - NẾU CÓ THÌ TIẾN HÀNH TIẾP: - TIẾN HÀNH GỞI BYTE BÁO SỐ LƯỢNG BYTE CẦN GỞI – NẾU SỐ LƯỢNG BYTE LÀ 00 CÓ NGHĨA LÀ NGỪNG LUÔN. - TIẾN HÀNH GỞI DỮ LIỆU THEO ĐÚNG SỐ LƯỢNG BYTE ĐÃ BẮT TAY. ;CHUONG TRINH TRUYEN DL VDK A – PHÁ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 Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 15 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 Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 16 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 NHẬN – KHỞI TẠO GIỐNG NHƯ BÊN TRUYỀ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 Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 17 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,$ Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 18 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 THẬP PHÂN NHỊ PHÂ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 Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 19 CPL DC2 JNB INV,$ ; CALL DELAY10MS JMP LB2 $INCLUDE(TV_DELAY.ASM) END ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX BÀI SỐ X: YÊU CẦU: ĐIỀU KHIỂN 48 LED SANG DAN LEN VA TAT DAN ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX VIẾT CHƯƠNG TRÌNH ;PROGRAM MCU A LED0 EQU P0 ;MCU A LED1 EQU P1 ;MCU A LED2 EQU P2 ;MCU A LED3 EQU R0 ;SEND TO MCU B =>P0 LED4 EQU R1 ;SEND TO MCU B =>P1 Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 20 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 Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 21 MOV SBUF, LED4 ;SEND R1 JNB TI,$ ;WAIT UNTIL TI = 1 CLR TI MOV SBUF, LED5 ;SEND R2 JNB TI,$ ;WAIT UNTILTI = 1 CLR TI RET ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ;ROTATE 48 LED ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx XOAY6PORT: MOV A,P0 RLC A MOV P0,A MOV A,P1 RLC A MOV P1,A MOV A,P2 RLC A MOV P2,A MOV A, LED3 RLC A MOV LED3,A MOV A, LED4 RLC A MOV LED4,A MOV A, LED5 RLC A MOV LED5,A RET $INCLUDE(TV_DELAY.ASM) END Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 22 PROGRAM MCU B ORG 0000H MOV SCON,#50H MOV TMOD,#20H SETB TR1 MOV TH1,#-3 ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx MAIN: JNB RI,$ ;WAIT UNTIL RECEIVE DATA CLR RI MOV P0,SBUF ; LED3 JNB RI,$ CLR RI MOV P1,SBUF ; LED4 JNB RI,$ CLR RI MOV P2,SBUF ; LED5 JMP MAIN END Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 23 ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X ;CHUONG TRINH DIEU KHIEN DEN GIAO THONG HIEN THI THOI GIAN TREN LED 7 DOAN ;PORT 1 DIEU KHIEN CAC DEN XANH VANG DO; PORT0 VA PORT2 DIEU KHIEN LED 7 DOAN ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X PCON EQU 87H ;DINH NGHIA TG PCON MADK EQU R4 ;LUU BYTE THU 1 TG1 EQU R1 ;LUU BYTE THU 2 - BIEN LUU THOI GIAN HT1 TG2 EQU R2 ;LUU BYTE THU 3 - BIEN LUU THOI GIAN HT2 QUET EQU P2 MA7D EQU P0 ORG 0000H JMP MAIN ;NHAY DE TRANH DUNG CHTR CON NHAN DLIEU ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X ;BAT DAU KIEM TRA DU LIEU TU MAY TINH VA TIEN HANH NHAN ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X ORG 0023H JB RI,TRUYEN ;NHAY DEN NOI TRUYEN CLR RI MOV MADK,SBUF ;NHAN BYTE 1 JNB RI,$ ;CHO NHAN BYTE THU 2 CLR RI MOV TG1,SBUF ;NHAN BYTE 2 JNB RI,$ ;CHO NHAN BYTE THU 3 CLR R MOV TG2,SBUF ;NHAN BYTE 3 TRUYEN: RETI ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X ;BAT DAU CHTR CHINH ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X MAIN: MOV SCON,#50H MOV TMOD,#21H MOV TH1,#-3 MOV 87H,#80H SETB TR1 MOV SP,#70H Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 24 MOV IE,#10010000B ;CHO PHEP NGAT TRUYEN DU LIEU MOV P1,#07FH ;CHO 1 LED SANG DE BAO HIEU CHTR DA CHAY TOT MOV 22H,#0FFH ;XOA CAC O NHO HIEN THI MOV 23H,#0FFH MOV 24H,#0FFH MOV 25H,#0FFH MOV TG1,#6 MOV TG2,#2 MOV MADK,#0FFH ;MAC NHIEN LA NGUNG MOV DPTR,#MA7DOAN ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X ;XU LY CAC DU LIEU GOI XUONG TU MAY TINH: BYTE THU I DIEU KHIEN CAC DEN XANH VANG DO ;BYTE THU II LA THONG SO THOI GIAN CUA DEN X1,V1,D1 DANG SO HEX ;BYTE THU III LA THONG SO THOI GIAN CUA DEN X2,V2,D2 DANG SO HEX ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X MOV R0,#10H ;NAP DCHI LUU CAC DU LIEU MAIN1: CJNE MADK,#0FFH,MAIN2 ;KIEM TRA MADK MOV P1,#07FH ;CHO 1 LED SANG SJMP MAIN1 ;NEU DUNG BANG FF THI NGUNG CHO CHAY LAI MAIN2: MOV P1,MADK CALL HEXTOBCD CALL GIAIMA CALL HIENTHI SJMP MAIN1 ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X ; CHUONG TRINH CON CHUYEN SO HEX SANG SO BCD ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X HEXTOBCD: MOV A,TG1 MOV B,#10 DIV AB ;B LUU HANG DON VI SWAP A ; ORL A,B MOV 37H,A MOV A,TG2 MOV B,#10 DIV AB ;B LUU HANG DON VI Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 25 SWAP A ; ORL A,B MOV 36H,A RET ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ; CHUONG TRINH CON GIAI MA ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX GIAIMA: MOV A,37H ANL A,#0FH MOVC A,@A+DPTR MOV 20H,A MOV A,37H ANL A,#0F0H SWAP A MOVC A,@A+DPTR MOV 21H,A MOV A,36H ANL A,#0FH MOVC A,@A+DPTR MOV 26H,A MOV A,36H ANL A,#0F0H SWAP A MOVC A,@A+DPTR MOV 27H,A RET ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ;CHUONG TRINH CON HIEN THI ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX HIENTHI: MOV R3,#11111110B ;MA QUET MOV R0,#27H ;NAP DIA CHI QUAN LY VUNG MA 7DOAN VAO R0 MOV R5,#8 HT1: MOV MA7D,@R0 MOV QUET,R3 CALL DELAY1 MOV QUET,#0FFH ;CHONG LEM DEC R0 MOV A,R3 Đại học sư phạm kỹ thuật tp HCM khoa điện – điện tử Nguyễn Đình Phú Bộ môn điện tử công nghiệp bài giảng vi xử lý: truyền dữ liệu nối tiếp 26 RL A MOV R3,A DJNz R5,HT1 ;CHI CO 2 SO NEN SO SANH VOI 62H DE KET THUC RET ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ;CHUONG TRINH CON DELAY1 ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX DELAY1: MOV R7,#0FH DJNZ R7,$ RET ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ;VUNG MA 7 DOAN ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX MA7DOAN: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H END
File đính kèm:
- bai_giang_vi_dieu_khien_truyen_du_lieu_noi_tiep_nguyen_dinh.pdf