Tải bản đầy đủ (.pdf) (26 trang)

VI ĐIỀU KHIỂN GIAO TIẾP TRUYỀN DỮ LIỆU pps

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1008.23 KB, 26 trang )

Đạ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 1

VI ĐIỀU KHIỂN GIAO TIẾP TRUYỀN DỮ LIỆU
 TRUYỀN DỮ LIỆU ĐỒNG BỘ VÀ KHÔNG ĐỒNG BỘ
TDL đồng bộ gồm các đường truyền dl và tín hiệu xung clock (CK) – chức năng của CK
dùng để dòch chuyển dữ liệu, mỗi 1 xung ck là 1 bit dữ liệu được truyền đi.
Trong hệ thống truyền dữ liệu đồng bộ, hệ thống nào cung cấp xung CK thì đóng vai trò là
master (chủ) – những hệ thống còn lại nhận xung ck đóng vai trò là slave (tớ).
Tốc độ truyền dữ liệu chính là tốc độ của xung ck – chính là tần số xung ck.
Ví dụ tần số xung ck là 1MHz thì tốc độ truyền dữ liệu là 1MBPS – 1M baud.

HT1
MASTER
TxD
HT2
SLAVE
CK
TxD
RxD
RxD
CK
GND GND

TDL không đồng bộ giống như hệ thống truyền DL đồng bộ nhưng không có xung CK.
HT1
TxD
HT2
CK
TxD
RxD


RxD
CK
GND GND

Không còn phân biệt chủ và tớ – các hệ thống là ngang cấp.
Mỗi 1 xung ck là 1 bit dữ liệu được truyền đi – bây giờ không còn xung Ck thì làm sao để
truyền dữ liệu ?
Để truyền DL thì mỗi hệ thống phải có 1 mạch dao động tạo xung CK – hai hệ thống với 2
mạch dao động độc lập nhưng phải cùng tần số hay cùng tốc độ.
Đạ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 2

 MẠCH ĐIỆN GIAO TIẾP – 2 VĐK TRUYỀN DỮ LIỆU


Chân T×D (P3.1) là ngõ xuất dữ liệu đi và chân R×D (P3.0) là ngõ nhận dữ liệu về.
Hai thanh ghi đệm SBUF và thanh ghi điều khiển SCON.

Đạ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 3

Tần số truyền dữ liệu nối tiếp còn gọi tốc độ BAUD (số lượng bit dữ liệu được truyền đi
trong một giây) có thể hoạt động cố đònh (sử dụng dao động trên chip) hoặc có thể thay đổi. Khi
cần tốc độ Baud thay đổi thì phải sử dụng Timer 1 để tạo tốc độ baud.
1. THANH GHI ĐIỀU KHIỂN TRUYỀN DỮ LIỆU NỐI TIẾP:
Cấu trúc của thanh ghi SCON – serial control như sau:
SM0
SM1
SM2
REN

TB8
RB8
TI
RI
Receive – nhận, Transmit – phát
Bit
Ký hiệu
Đòa chỉ
Mô tả hoạt động
7
SM0
9FH
Bit chọn kiểu truyền nối tiếp: bit thứ 0.
6
SM1
9EH
Bit chọn kiểu truyền nối tiếp: bit thứ 1.
5
SM2
9DH
Bit cho phép truyền kết nối nhiều vi xử lý ở mode 2 và 3;
RI sẽ không tích cực nếu bit thứ 9 đã thu vào là 0.
4
REN
9CH
Bit cho phép nhận kí tự. REN = 1 sẽ cho phép nhận kí tự.
3
TB8
9BH
Dùng để lưu bit 9 để truyền đi khi hoạt động ở mode 2 và 3.

TB8 bằng 0 hay 1 là do người lập trình thiết lập.
2
RB8
9AH
Dùng để lưu bit 9 nhận về khi hoạt động ở mode 2 và 3.
1
TI
99H
Cờ báo hiệu này lên mức 1 khi truyền xong 1 kí tự và xóa
bởi người lập trình để sẳn sàng truyền kí tự tiếp theo.
0
RI
98H

Cờ báo hiệu này lên mức 1 khi nhận xong 1 kí tự và xóa bởi
người lập trình để sẳn sàng nhận kí tự dữ liệu tiếp theo.
2. CÁC KIỂU TRUYỀN DỮ LIỆU NỐI TIẾP:
SM0
SM1
Kiểu
Mô tả
Tốc độ baud
0
0
0
Thanh ghi dòch
Cố đònh bằng tần số dao động f/12.
0
1
1

UART 8 bit
Tốc độ truyền DL thay đổi bởi Timer.
1
0
2
UART 9 bit
Cố đònh bằng tần số dao động f/32 or f/64
1
1
3
UART 9 bit
Tốc độ truyền DL thay đổi bởi Timer.
Bảng 4-12. Các kiểu truyền dữ liệu.
a. Truyền dữ liệu kiểu 0 – kiểu thanh ghi dòch 8 bit:
Dữ liệu nối tiếp nhận vào và dữ liệu truyền đi đều thông qua chân RxD.
Chân TxD thì dùng để tạo xung clock.
Đạ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 4

8 bit dữ liệu để truyền đi hoặc nhận về thì luôn bắt đầu với bit có trọng số nhỏ nhất LSB.
Tốc độ Baud được thiết lập cố đònh ở tần số bằng
1
12
tần số dao động thạch anh trên Chip.

Kết nối với thanh ghi dòch để mở rộng IO:

KHỞI TẠO:
MOV SCON,#00010000B ;SM0SM1=00 – MOD 0; REN = 1
KHÔNG CẦN THIẾT LẬP TỐC ĐỘ VÌ TD CỐ ĐỊNH LÀ BẰNG F

OSC
/12
GỞI DL ĐI: MOV SBUF,#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 5

Một ứng dụng cụ thể sử dụng mode 0 là dùng để mở rộng thêm số lượng ngõ ra cho
MCS51

b. Truyền dữ liệu kiểu 1 – Thu phát bất đồng bộ 8 bit với tốc độ Baud thay đổi :
Truyền dữ liệu nối tiếp hoạt động bất đồng bộ UART 8 bit có tốc độ Baud thay đổi.
Trong kiểu này, 10 bit dữ liệu sẽ phát đi ở chân TxD và dữ liệu nhận về ở chân RxD.
10 bit gồm có: 1 bit start, 8 bit data (LSB là bit đầu tiên), và 1 bit stop.
Đối với hoạt động nhận dữ liệu thì bit Stop được đưa vào bit RB8 trong thanh ghi SCON.
Tốc độ Baud được thiết lập bởi tốc độ tràn của Timer T1 hoặc timer T2 (MCS52) hoặc cả 2
timer T1 và T2: một timer cho máy phát và 1 timer cho máy thu.

KHỞI TẠO TRUYỀN DL MODE 1:
MOV SCON,#01010000B = 50H ;SM0SM1=01 – MOD 1; REN = 1
PHẢI THIẾT LẬP TỐC ĐỘ TRUYỀN DỮ LIỆU:
Đạ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 6

SỬ DỤNG TIMER1 ĐỂ THIẾT LẬP TỐC ĐỘ: “TỐC ĐỘ TRUYỀN DL BẰNG TỐC ĐỘ
TRÀN CỦA TIMER CHIA CHO 32 KHI BIT SMOD = 0 VÀ CHIA CHO 16 KHI BIT SMOD =
1”.
10
1632



SMODSMOD
TDTRANTDTRAN
TDTDL


TÍNH TOÁN TỐC ĐỘ TRUYỀN DỮ LIỆU VỚI BIT SMOD = 0
VÍ DỤ: CHỌN TỐC ĐỘ TRUYỀN LÀ 9600BPS = 9600BAUD, GIẢ SỬ BIT SMOD = 0:
10
1632


SMODSMOD
TDTRANTDTRAN
TDTDL

TÍNH TỐC ĐỘ TRÀN CỦA TIME1 LÀ:
HzBAUDTDTDLTDTRAN 200,30732960032 

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
307,200 LẦN.
GIÁ TRỊ BẮT ĐẦU:
25520.3
200,307
000,000,1
GTBD
LÀ CON SỐ LẺ SẼ GÂY SAI SỐ
ĐỂ GIẢM SAI SỐ THÌ TA TÍNH NGƯC LẠI. CHỌN GIÁ TRỊ BẮT ĐẦU LÀ 3
TÍNH TẦN SỐ CẤP CHO TIMER1 LÀ:
HzTSXUNG 600,921200,3073 


Đạ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 7

TÍNH ĐƯC TẦN SỐ CỦA TỤ THẠCH ANH:
MHzHzHzTSTA 0592,11200,059,1112921600 

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

×