ÐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
KHOA CÔNG NGHỆ ðIỆN TỬ
BỘ MÔN ðIỆN TỬ CÔNG NGHIỆP
BÀI GIẢNG LÝ THUYẾT
VI XỬ LÝ
Giáo viên: PHẠM QUANG TRÍ
TP. HỒ CHÍ MINH
THÁNG 0909-2009
ÐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
KHOA CÔNG NGHỆ ðIỆN TỬ
BỘ MÔN ðIỆN TỬ CÔNG NGHIỆP
CHƯƠNG 5
HOẠT ðỘNG CỦA
PORT NỐI TIẾP
HOẠT ðỘNG CỦA PORT NỐI TIẾP
GIỚI THIỆU CHUNG
Chức năng
năng::
• Chuyển ñổi dữ liệu dạng song song sang dạng nối tiếp (khi phát dữ liệu)
liệu)..
• Chuyển ñổi dữ liệu dạng nối tiếp thành dạng song song (khi thu dữ liệu)
liệu)..
Giao tiếp phần cứng:
cứng:
• Chân TxD (Transmit Data
Data)): Phát dữ liệu dạng nối tiếp
tiếp..
• Chân RxD (Receive Data
Data)): Thu dữ liệu dạng nối tiếp
tiếp..
ðặc trưng
trưng::
• Hoạt ñộng song công (full duplex)
duplex)..
• ðệm dữ liệu khi thu
thu..
HOẠT ðỘNG CỦA PORT NỐI TIẾP
GIỚI THIỆU CHUNG
Các SFR sử dụng trong port nối tiếp:
tiếp:
• SBUF
SBUF:: Chứa dữ liệu thu và phát của port nối tiếp (Serial port Buffer)
Buffer)..
• SCON
SCON:: ðiều khiển hoạt ñộng cho port nối tiếp (Serial port Control)
Control)..
HOẠT ðỘNG CỦA PORT NỐI TIẾP
THANH GHI SBUF (SERIAL PORT BUFFER)
Cấu trúc SBUF
SBUF::
HOẠT ðỘNG CỦA PORT NỐI TIẾP
THANH GHI SCON (SERIAL PORT CONTROL)
Cấu trúc SCON
SCON::
HOẠT ðỘNG CỦA PORT NỐI TIẾP
CÁC CHẾ ðỘ HOẠT ðỘNG
Chế ñộ 0 (Mode 0 - 8 bit Shift Register):
Register):
Hình minh họa port nối tiếp ở chế ñộ thanh ghi dịch 8 bit.
HOẠT ðỘNG CỦA PORT NỐI TIẾP
CÁC CHẾ ðỘ HOẠT ðỘNG
Chế ñộ 0 (Mode 0 - 8 bit Shift Register):
Register):
• Chân RxD
RxD:: dùng ñể thu (nhận
nhận)) và phát (truyền
truyền)) dữ liệu nối tiếp
tiếp..
• Chân TxD
TxD:: dùng ñể tạo ra xung clock
clock..
• Tốc ñộ truyền (Baudrate
Baudrate)):
• ðịnh dạng dữ liệu
liệu:: DATA bit [D0 – D7].
HOẠT ðỘNG CỦA PORT NỐI TIẾP
CÁC CHẾ ðỘ HOẠT ðỘNG
Chế ñộ 0 (Mode 0 - 8 bit Shift Register):
Register):
• Quá trình phát dữ liệu (Transmit
Transmit)).
• Quá trình thu dữ liệu (Receive
Receive)). ðiều kiện ban ñầu:
ñầu: RI = 0, REN = 1.
HOẠT ðỘNG CỦA PORT NỐI TIẾP
CÁC CHẾ ðỘ HOẠT ðỘNG
Chế ñộ 1 (Mode 1 - 8 bit UART):
UART):
Hình minh họa port nối tiếp ở chế ñộ UART 8 bit.
HOẠT ðỘNG CỦA PORT NỐI TIẾP
CÁC CHẾ ðỘ HOẠT ðỘNG
Chế ñộ 1 (Mode 1 - 8 bit UART):
UART):
• Chân RxD
RxD:: dùng ñể thu (nhận
nhận)) dữ liệu nối tiếp
tiếp..
• Chân TxD
TxD:: dùng ñể phát (truyền
truyền)) dữ liệu nối tiếp
tiếp..
• Tốc ñộ truyền (Baud rate
rate)):
• ðịnh dạng dữ liệu
liệu:: START bit [0] – DATA bit [D0 – D7] – STOP bit [1].
HOẠT ðỘNG CỦA PORT NỐI TIẾP
CÁC CHẾ ðỘ HOẠT ðỘNG
Chế ñộ 1 (Mode 1 - 8 bit UART):
UART):
• Quá trình phát dữ liệu (Transmit
Transmit)).
• Quá trình thu dữ liệu (Receive
Receive)). ðiều kiện ban ñầu:
ñầu: RI = 0, REN = 1.
HOẠT ðỘNG CỦA PORT NỐI TIẾP
CÁC CHẾ ðỘ HOẠT ðỘNG
Chế ñộ 2 (Mode 2 - 9 bit UART):
UART):
Hình minh họa port nối tiếp ở chế ñộ UART 9 bit.
HOẠT ðỘNG CỦA PORT NỐI TIẾP
CÁC CHẾ ðỘ HOẠT ðỘNG
Chế ñộ 2 (Mode 2 - 9 bit UART):
UART):
• Chân RxD
RxD:: dùng ñể thu (nhận
nhận)) dữ liệu nối tiếp
tiếp..
• Chân TxD
TxD:: dùng ñể phát (truyền
truyền)) dữ liệu nối tiếp
tiếp..
• Tốc ñộ truyền (Baud rate
rate)):
• ðịnh dạng dữ liệu
liệu:: START bit [0] – DATA bit [D0 – D7] – 9th bit –
STOP bit [1].
HOẠT ðỘNG CỦA PORT NỐI TIẾP
CÁC CHẾ ðỘ HOẠT ðỘNG
Chế ñộ 2 (Mode 2 - 9 bit UART):
UART):
• Quá trình phát dữ liệu (Transmit
Transmit)).
• Quá trình thu dữ liệu (Receive
Receive)). ðiều kiện ban ñầu:
ñầu: RI = 0, REN = 1.
HOẠT ðỘNG CỦA PORT NỐI TIẾP
CÁC CHẾ ðỘ HOẠT ðỘNG
Chế ñộ 3 (Mode 2 - 9 bit UART):
UART):
Hình minh họa port nối tiếp ở chế ñộ UART 9 bit.
HOẠT ðỘNG CỦA PORT NỐI TIẾP
CÁC CHẾ ðỘ HOẠT ðỘNG
Chế ñộ 3 (Mode 2 - 9 bit UART):
UART):
• Chân RxD
RxD:: dùng ñể thu (nhận
nhận)) dữ liệu nối tiếp
tiếp..
• Chân TxD
TxD:: dùng ñể phát (truyền
truyền)) dữ liệu nối tiếp
tiếp..
• Tốc ñộ truyền (Baud rate
rate)):
• ðịnh dạng dữ liệu
liệu:: START bit [0] – DATA bit [D0 – D7] – 9th bit –
STOP bit [1].
HOẠT ðỘNG CỦA PORT NỐI TIẾP
CÁC CHẾ ðỘ HOẠT ðỘNG
Chế ñộ 3 (Mode 2 - 9 bit UART):
UART):
• Quá trình phát dữ liệu (Transmit
Transmit)).
• Quá trình thu dữ liệu (Receive
Receive)). ðiều kiện ban ñầu:
ñầu: RI = 0, REN = 1.
HOẠT ðỘNG CỦA PORT NỐI TIẾP
TỐC ðỘ BAUD (BAUD RATE)
ðược xác ñịnh bằng số lượng bit ñược thu/phát trong mỗi
giây (bps
bps:: bit per second
second)).
Tốc ñộ baud cho Mode 0:
Tốc ñộ baud cho Mode 2:
Tốc ñộ baud cho Mode 1 và Mode 3:
HOẠT ðỘNG CỦA PORT NỐI TIẾP
TỐC ðỘ BAUD (BAUD RATE)
Sử dụng Timer 1 làm bộ tạo tốc ñộ baud:
baud:
• Bước 1: Cấm hoạt ñộng tính năng ngắt cho Timer 1.
• Bước 2: ðặt Timer 1 ở chế ñộ 8 bit tự ñộng nạp lại (Mode 2).
MOV TH1, #20H
• Bước 3: Tùy thuộc vào tốc ñộ baud cần thiết mà ghi vào thanh ghi TH
TH1
1
giá trị tương ứng (M)
(M)..
Trong ñó
ñó::
fOSC (MHz)
(MHz):: Tần số thạch anh
anh..
Baud rate (bps)
(bps):: Tốc ñộ baud
baud..
M: Giá trị cần ghi vào thanh ghi TH
TH1
1.
HOẠT ðỘNG CỦA PORT NỐI TIẾP
TỐC ðỘ BAUD (BAUD RATE)
Sử dụng Timer 1 làm bộ tạo tốc ñộ baud:
baud:
•
Ví dụ:
dụ: Viết lệnh ñể có thể sử dụng Timer 1 làm bộ tạo tốc ñộ baud cho
port nối tiếp với tốc ñộ là 1200
1200bps
bps.. Cho biết tần số thạch anh là 12
12MHz
MHz..
Giải
• Chọn SMOD = 0, áp dụng công thức
thức::
• Ta có:
có: M = - 26,
26,0416 ≈ - 26
• ðoạn lệnh như sau
sau::
MOV TMOD, #20H
20H
MOV TH1
TH1, #(#(-26)
26)
HOẠT ðỘNG CỦA PORT NỐI TIẾP
TỐC ðỘ BAUD (BAUD RATE)
Bảng so sánh sự khác nhau khi dùng thạch anh 12MHz
12MHz và
11,
11,0592
0592Mz
Mz::
Sử dụng thạch anh 11,0592MHz thay cho 12MHz
HOẠT ðỘNG CỦA PORT NỐI TIẾP
TRUYỀN THÔNG ðA XỬ LÝ
Ứng dụng trong truyền dữ liệu giữa hai vi ñiều khiển (d ng
Master – Slave
Slave)).
Hệ thống ña xử lý sử dụng 1 Master và nhiều Slave.
Slave.
ðược cho phép bằng cách thiết lập bit SM2
SM2 trong SCON.
SCON.
Hoạt ñộng ở Mode 2 và 3 (UART 9 bit
bit)) của port nối tiếp.
tiếp.
Khi truyền dữ liệu, nếu:
nếu:
Bit thứ 9 = 1: thông tin ñóng vai trò là ñịa chỉ (Address).
(Address).
Bit thứ 9 = 0: thông tin ñóng vai trò là dữ liệu (Data).
(Data).
Ngắt port nối tiếp sẽ ñược yêu cầu chỉ trong trường hợp
bit RB8
RB8 = 1 (bit th 9).
HOẠT ðỘNG CỦA PORT NỐI TIẾP
TRUYỀN THÔNG ðA XỬ LÝ
Giai ñoạn xác ñịnh ñịa chỉ:
chỉ:
Giai ñoạn truyền dữ liệu
liệu::
HOẠT ðỘNG CỦA PORT NỐI TIẾP
LẬP TRÌNH THU VÀ PHÁT DỮ LIỆU QUA PORT NỐI TIẾP
Lập trình 8051 truyền (phát) dữ liệu nối tiếp:
tiếp:
• Chọn chế ñộ hoạt ñộng cho port nối tiếp
tiếp::
MOV SCON, #...(1)…
• Chọn chế ñộ hoạt ñộng Timer 1, cho bit GATE = 0 và C/T = 0:
MOV TMOD, #...(2)…
• Chọn giá trị thích hợp (căn cứ vào tốc ñộ baud) cho Timer 1:
MOV TH1, #...(3)…
• Cho Timer 1 chạy
chạy::
SETB TR1
• Kiểm tra xem ñã phát toàn bộ dữ liệu hay chưa?
JNB TI,
TI, $
• Xoá cờ ngắt phát TI
TI::
CLR TI
• Ghi dữ liệu cần phát vào port nối tiếp ñể phát ñi:
ñi:
MOV SBUF, ...(4)…
...(4)…
• Quay trở lại bước 5 ñể phát một dữ liệu tiếp theo
theo..