Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh
Trang 35
CHƯƠNG V : HOẠT ĐỘNG CỦA PORT NỐI TIẾP
1. MỞ ĐẦU :
Chức năng cơ bn của port ni tiếp là thực hiện việc chuyển đổi d
liu song song thành nối tiếp khi phát và chuyển đổi d liệu nối tiếp thành
song song khi thu.
Các mạch phần cng bên ngoài truy xuất port nối tiếp thông qua các
chân TxD ( phát d liệu ) và RxD ( thu d liệu ), các chân này đa hợp vi
hai chân của port 3 : P3.1 ( TxD ) và P3.0 ( RxD ).
Đặc trưng của port nối tiếp hoạt động song công ( full duplex ),
nghĩa là có kh năng thu và phát đồng thời. Ngoài ra port nối tiếp còn có một
đặc trưng khác, việc đệm d liệu khi thu của port này cho phép một ký t
được nhnlưu tr trong b đệm thu trong khi ký t tiếp theo được nhận
vào. Nếu CPU đọc ký t th nhất trước trước khi ký t th hai được nhận
đầy đủ, d liệu s không b mt.
Phn mm s dụng hai thanh ghi chức năng đặc biệt SBUF và SCON
để truy xuất port nối tiếp. B đệm của port nối tiếp SBUF có địa ch byte là
99H, trên thực tế bao gồm hai b đệm. Việc ghi lên SBUF s nạp d liu để
phát và việc đọc SBUF s truy xut d liệu đã nhận được. Điu này có nghĩa
là tahai thanh ghi riêng r và phân biệt : thanh ghi phát ( ch ghi ) thanh
ghi thu ( ch đọc ) hay b đệm thu.
Thanh ghi điu khin port nối tiếp SCON có địa ch byte là 98H là
thanh ghi được định địa ch từng bit, thanh ghi này các bit trng thái và các
bit điều khin. Các bit điều khin s thiết lp chế độ hot động cho port nối
tiếp cònc bit trng thái ch ra s kết thúc việc thu hoặc phát một ký t.
Các bit trạng thái được kim tra bởi phần mm hoặc được lập trình để tạo ra
ngắt.
Tần s hoạt động của port nối tiếp hay còn gi là tốc độ baud ( baud
rate ) có th c định hoặc thay đổi. Khi tốc độ baud thay đổi được s dụng,
b định thời 1 được s dụng để cung cấp xung clock tốc độ baud. Trên chip
8052 b định thi 2 cũngth được lập trình để cung cấp xung clock tốc
độ baud.
Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh
Trang 36
2. THANH GHI ĐIU KHIỂN PORT NỐI TIẾP ( SCON ) :
Chế độ hoạt động của port ni tiếp được thiết lập bng cách tác động
lên thanh ghi chế độ SCON của port ni tiếp địa ch byte 99H.
Bit Ký hiệu Địa ch
t
SCON.7
SM0 9FH Bit 0 chọn chế độ của port nối tiếp
SCON.6
SM1 9EH Bit 1 chọn chế độ của port nối tiếp
SCON.5
SM2 9DH Bit 2 chọn chế độ của port nối tiếp
Bit này cho phép truyn thông đa x
SCON.4
REN 9CH Cho phép thu, bit này phải được set để
nhận ký t.
SCON.3
TB8 9BH Bit phát 8, bit th 9 được phát chế độ 2
và 3, được set và xoá bi phần mm.
SCON.2
RB8 9AH Bit thu 8, bit th 9 nhận đựơc
SCON.1
TI 99H C ngắt phát, c này được set ngay khi kết
thúc việc phát một ký t, được xoá bi
phần mm
SCON.0
RI 98H C ngắt thu, c này được set ngay khi kết
thúc việc thu một ký t, được xoá bi
phần mm
1. CÁC CH ĐỘ HOẠT ĐỘNG :
Port ni tiếp của 8051 có 4 chế độ hoạt động, các chế độ được chn
bằng cách tác động lên các bit SM0,SM1 trong thanh ghi SCON. Ba trong s
các chế độ hoạt động cho phép truyền kng đồng b ( asynchronous ) trong
đó mỗi ký t được thu hoặc phát s cùng vi một bit start và một bit stop tạo
thành một khung ( frame ).
SM0 SM1
Chế độ
t Tốc độ baud
0 0 0 Thanh ghi dịch C định ( tn s dao động/12)
0 1 1 UART 8 bit Thay đổi ( thiết lập bi b định
thời )
1 0 2 UART 9 bit C định ( tần s dao động/12 hoặc
/64)
1 1 3 UART 9 bit Thay đổi ( thiết lập bi b định
thời )
Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh
Trang 37
UART 8 bit có tốc độ baud thay đổi ( chế độ 1 ) :
Trong chế độ 1 port nối tiếp hoạt động như mt b thu phát không
đồng b ( universal asynchronous receiver transmitter ) có tốc độ baud thay
đổi. UART là một b thu và phát d liệu ni tiếp vi mỗi một ký t d liu
được đứng trước bi một bit start ( logic 0 ) đứng sau bởi một bit stop (
logic 1 ).Thỉnh thoảng một bit chn lẻ được chèn vào giữa bit dữ liu sau
cùng và bit stop.
Hoạt động chủ yếu của một UART là biến đổi dữ liệu phát từ song
song thành nối tiếp và biến đổi dữ liệu thu từ nối tiếp thành song song.
Ở chế độ 1 ta 10 bit được thu trên chân RxD và 10 bit dược phát
trên chân TxD cho mỗi ký tự dữ liệu, bao gồm 1 bit start ( luôn luôn là 0 ), 8
bit dliệu ( bit LSB trước tiên ) và 1 bit stop ( luôn luôn là 1 ).
Khi hoạt động thu, bit stop được đưa đến bit RB8 của SCON. Với
8051 tốc độ baud được thiết lp bởi tốc độ tràn ( overflow rate ) của bộ định
thời 1 còn ở 8052 tốc độ baud được thiết lập bởi tốc độ tràn ca bộ định thời
1 hoc 2 hoặc tổ hợp của cả hai ( một cho phát và một cho thu ).
Việc phát được khởi động bằng cách ghi dữ liệu vào thanh ghi SBUF.
Thời gian phát của mỗi một bit là giá trnghịch đảo của tốc độ baud (1/baud
rate), cờ ngắt phát TI được set bằng 1 ngay khi bit stop xuất hiện trên chân
TxD. Việc nhận được khởi động bởi một chuyển trạng thái từ 1 xuống 0
trên đường RxD ( bit start ) và 8 bit dliu thu được nạp vào thanh ghi
SBUF.
2. KHỞI ĐỘNGTRUY XUẤT CÁC THANH GHI :
Cho phép thu:
Bit cho phép thu REN trong thanh ghi SCON phi được set bằng 1 bởi
phần mềm để cho phép nhận các ký tự .
Ex : SETB REN
MOV SCON,#xxx1xxxxB
Các cờ ngắt :
Các cngắt thu RI và ngắt phát TI trong thanh ghi SCON đóng vai trò
quan trng trong việc truyền dữ liệu nối tiếp của 8051. Cả hai bit đều được
set bằng phần cứng nhưng phải được xóa bằng phần mm.
Cờ RI được set bằng 1 khi kết thúc việc nhận một ký tự và chỉ ra rằng
bộ đệm thu đầy. Nếu phn mềm muốn nhận một ký tự từ port nối tiếp, phần
mm phải chờ cho đến khi RI được set bằng 1 kế đến phần mềm xóa RI và
đọc ký tự từ SBUF.
Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh
Trang 38
Ex : WAIT : JNB RI,WAIT
CLR RI
MOV A,SBUF
CTI được set bằng 1 khi kết thúc việc phát một ký tvà chỉ ra rằng
bộ đệm phát rỗng. Nếu phần mềm muốn phát một ký tự trước tiên phần mềm
phải kiểm tra để biết port nối tiếp đã sẵn sàng hay chưa.
Ex : WAIT : JNB TI,WAIT
CLR TI
MOV SBUF,A
3. TỐC ĐỘ BAUD CỦA PORT NỐI TIẾP :
Sử dụng bộ định thời 1 là xung clock tốc độ baud :
Kỹ thuật thường dùng để tạo xung clock tốc độ baud là thiết lập timer
1 hoạt động ở chế dộ 8bit tự nạp lại ( chế độ định thời 2) và đặt giá trị nạp
thích hợp vào thanh ghi TH1để có tốc độ tràn đúng, từ đó tạo ra tốc độ baud.
Tốc độ baud = ( Tốc độ tràn bộ định thời 1) / 32
Ex : Nếu tốc độ baud là 9600
tốc độ tràn của bộ định thới = 9600*32 = 307200 Hz
và nếu mạch dao động là 11.059 MHz
xung clock của bộ định thời = 11.059 M/12 = 921583 Hz
giá trị nạp cho TH1= 921583/307200 = 3
Tốc độ baud Tần số thạch anh Giá trị nạp cho TH1
9600 11.059 MHz -3(FDH)
2400 11.059 MHz -12(F4H)
1200 11.059 MHz -24(E8H)
Ex : Viết một chuỗi lệnh để khởi động port nối tiếp sao cho port này hoạt
động ở chế độ UART 8 bit với tốc độ baud 9600, sử dụng bộ định thời 1 để
cung cấp xung clock tốc độ baud. Dao động thạch anh là 11.059 MHz.
MOV SCON,#01010010B
MOV TMOD,#001000000B
MOV TH1,# (-3)
SETB TR1