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 ...

pdf26 trang | Chia sẻ: havih72 | Lượt xem: 267 | Lượt tải: 0download
Nội dung tài liệu Bài giảng Vi điều khiển - Truyền dữ liệu nối tiếp - Nguyễn Đình Phú, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Ế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:

  • pdfbai_giang_vi_dieu_khien_truyen_du_lieu_noi_tiep_nguyen_dinh.pdf