Bài giảng Vi xử lý - Chương 3 - Cổng nối tiếp (Serial Port)

Truyền dữ liệu khoảng cách xa

• Tốc độ truyền dữ liệu thấp

• Truyền dữ liệu nối tiếp đồng bộ

– Dùng tín hiệu clock riêng để đồng bộ hóa mạch thu và phát.

– Thường dùng khung dữ liệu lớn hơn và nhanh hơn.

• Truyền dữ liệu nối tiếp bất đồng bộ

– Không cần tín hiệu clock riêng để đồng bộ hoáchuyển dữ liệu.

– Dựa trên ký tự. Mỗi ký tự được đóng khung bằng “start bit” và “stop bit”.

– Bên thu cần nhận dạng “start bit” và “stop bit” để nhận đúng ký tự dữ liệu.

pdf 39 trang thom 08/01/2024 2780
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Vi xử lý - Chương 3 - Cổng nối tiếp (Serial Port)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Vi xử lý - Chương 3 - Cổng nối tiếp (Serial Port)

Bài giảng Vi xử lý - Chương 3 - Cổng nối tiếp (Serial Port)
1CHƯƠNG 3
HỌ VI ĐiỀU KHIỂN 8051
Hiệu đính từ slide của thầy Hồ Trung Mỹ
Bộ môn Điện tử - DH BK TPHCM
23.6 Cổng nối tiếp 
(Serial Port)
3Các hoạt động cổng nối tiếp của 8051
• Giới thiệu
• Chuẩn EIA(Electronic Industries 
Association)-232E hoặc RS232
• Giao tiếp cổng nối tiếp MCS-51/52
• Ứng dụng của chế độ 0
• Ứng dụng của chế độ 1
• Ứng dụng của chế độ 2 & 3
4Truyền dữ liệu nối tiếp
• Truyền dữ liệu khoảng cách xa
• Tốc độ truyền dữ liệu thấp
• Truyền dữ liệu nối tiếp đồng bộ
– Dùng tín hiệu clock riêng để đồng bộ hóa mạch thu 
và phát.
– Thường dùng khung dữ liệu lớn hơn và nhanh hơn.
• Truyền dữ liệu nối tiếp bất đồng bộ
– Không cần tín hiệu clock riêng để đồng bộ hoá
chuyển dữ liệu.
– Dựa trên ký tự. Mỗi ký tự được đóng khung bằng 
“start bit” và “stop bit”.
– Bên thu cần nhận dạng “start bit” và “stop bit” để
nhận đúng ký tự dữ liệu.
5Truyền dữ liệu nối tiếp đồng bộ (synchronous) 
và bất đồng bộ (asynchronous) với 8051
6Đường truyền dữ liệu cơ bản
• Người ta có thể sử dụng đường điện thoại công cộng 
hoặc dành riêng làm môi trường truyền dữ liệu nối 
tiếp bất đồng bộ.
• Modem được dùng để chuyển đổi dữ liệu số thành 
dạng sóng analog thích hợp cho việc truyền trên 
đường dây điện thoại và ngược lại.
• Có 2 kiểu đường truyền: Điểm đến điểm và Đa điểm.
DTE DCE DCE DTE
Computer or
terminal
Modem Modem Computer or
terminal
Communication linkDTE: Data Terminal EquipmentDCE: Data Communications Equipmnent
7Đường truyền Điểm đến điểm
và Đa điểm
Master
Slave 1 Slave 2 Slave n
Address 1 Address 2 Address n
Station Station
Peer Peer
Tx
TxRx
Rx
8• Hệ thống 2 dây và 4 dây:
– 2 dây: tín hiệu và đất.
– 4 dây: 2 bộ 2 dây.
• Các kiểu đường truyền:
– Đơn công (Simplex link): đường dây dành riêng 
cho thu hoặc phát chứ không cả hai.
– Bán song công (Half-duplex link): đường dây có
thể dùng cho phát hoặc thu nhưng mỗi lần chỉ
có 1 chiều. 
– Song công (Full-duplex link): Phát và thu có thể
tiến hành đồng thời. Đường truyền cần 4 dây. 
Cơ bản về các đường truyền
9Cơ bản về các đường truyền
5V
0V
>+3V
<-3V
mark space
0 01 00000 1 1
Start bit Stop bit
Signal pattern for letter “A” (41H)
Serial port
RS232
D0 D2D1 D7D6D5D4D3
10
EIA-232-E or RS-232
• EIA-232-E or RS-232 can apply to the 
following data communication schemes:
– Serial communications
– Synchronous and asynchronous
– Dedicated leased or private lines
– Switched service
– Two wire or four wire
– Point to point or multipoint
• 4 aspects in EIA-232-E interface: 
mechanical, functional, procedural, and 
electrical.
11
EIA-232-E Mechanical 
Characteristics
• 25-pin DB25 /9-pin DB9 plug connector.
12
DB-9 Signals
13
Signal direction
to DCE
to DTE
to DTE
to DTE
to DCE
to DCE
to DTE
to DTE
Both
to DCE
Signal Name
Secondary TxD
Tx clock
Secondary RxD
Rx clock
unassigned
Secondary Request To Send
Data Terminal Ready
Signal Quality Detect
Ring indicator
Data Rate Select
Tx clock
unassigned
Signal direction
Both
to DCE
to DTE
to DCE
to DTE
to DTE
Both
to DTE
to DTE
to DTE
Signal Name
protective ground
TxD
RxD
Request To Send
Clear To Send
Data Set Ready
Signal ground
Carrier Detect
Reserved
Reserved
Unassigned
Secondary Carrier Detect
Secondary Clear To Send
EIA-232-E Connector and Pin 
Assignment
14 1
15 2
16 3
17 4
18 5
19 6
20 7
21 8
22 9
23 10
24 11
25 12
13
14
Functions of EIA-232-E Interchange Circuits
1 - Shield
2 BA Transmitted data
3 BB Received data
4 CA/CJ Request to send/ready for receiving
5 CB Clear to send
6 CC DCE
7 AB Signal common
8 CF Received line signal detector
9,10,11 - (Reserved for testing, unassigned)
12 SCF/CI Secondary received line signal detection/data range selector (DCE source)
13 SCB Secondary clear to send
14 SBA Secondary transmitted data
15 DB Transmitter signal element timing (DCE source)
16 SBB Secondary received data
17 DD Received signal element timing
18 LL Local loopback
19 SCA Secondary request to send
20 CD DTE ready
21 RL/CG Remote loopback/signal quality detector
22 CE Ring indicator
23 CH/CI Data signal rate selector (DTE/DCE source)
24 DA Transmitter signal element timing (DTE source)
25 TM Test mode
15
EIA-232-E Procedural Characteristics
Signal GND (7) Signal GND (7)
DTE ready (20) -> <- DTE ready (20)
Request to send(4) -> carrier on carrier detect (8) ->
<- clear to send (5) 
data send (2) -> data send data receive (3) ->
send timing (24) -> receive timing (17) ->
EOT send (2) -> EOT send EOT receive (3) ->
send timing (24) -> receive timing (17) ->
RTS off (4) -> error check
carrier off carrier off (8) ->
-< CTS off (5) <- RTS (4)
<- carrier detect (8) carrier on
clear to send (5) ->
<- ACK message (3) modulated ACK MSG <- ACK message (2)
<-receive timing (17) <- send timing (24)
<- EOT received (3) modulate EOT send <- EOT send (2)
<- receive timing (17) <- send timing (24)
<- carrier off (8) carrier off <-RTS off (4)
CTS off (5) ->
DTE
X
DCE
X
DCE
Y
DTE
YEIA-232 EIA-232
16
Data Transmission Errors
• Framing error: when a received 
character is improperly framed by the 
start and stop bits; it is set by the 
absence of stop bit.
• Receive overrun: one or more 
characters in the data stream were lost.
• Parity error: received character parity 
error.
17
Null Modem Connection
Pin Circuit name DTE X DTE Y
22 Ring indicator CE CE
20 Data terminal ready CD CD
8 Data carrier detect CF CF
6 Data set ready CC CC
5 Clear to send CB CB
4 Request to send CA CA
3 Receive data BB BB
2 Transmit data BA BA
24 Transmitter timing DA DA
17 Receiver timing DD DD
7 Signal ground AB AB
When 2 DTEs are very close, no need to use modems to connect them.
18
Interfacing a μp with 232
• Transmission:
– Convert data from parallel to serial format
– Add start, stop, and optional parity bits to 
the serial data.
– Translate the voltage levels to those of the 
EIA-232-E standard. (transceiver chip: MAX 
232, MC145403, etc.)
• Reception:
– Translate the voltage levels of the incoming 
data stream to those used in the μp.
– Detect the start and stop bits.
– Optionally perform parity checking
– Convert serial data into parallel format.
19
Sơ đồ khổi cổng nối tiếp của 8051
Cùng địa chỉ
20
Các đặc tính của cổng nối tiếp 8051
• Song công (ful-duplex)
• Có đệm khi thu (bộ đệm 1 byte)
• Có 4 chế độ làm việc (0 - 3)
• Lập trình dễ dàng để: 
• Chọn tốc độ (cố định (on-chip OSC/12 hoặc OSC/64), 
hoặc thay đổi được (T1)) 
• Chọn chế độ làm việc
• Cho chạy (SCON)
• Dễ sử dụng
• Truyền dữ liệu: MOV SBUF, A
• Nhận dữ liệu: MOV A, SBUF
21
Thanh ghi điều khiển cổng nối tiếp 
SCON
22
Các chế độ hoạt động 
của cổng nối tiếp
Trước khi sử dụng cổng nối tiếp, SCON được khởi tạo trị
với chế độ đúng, và v.v... Thí dụ, các lệnh sau
MOV SCON, #01010010B
khởi tạo trị cho cổng nối tiếp ở chế độ 1 (SM0/SM1=0/1), 
cho phép bộ thu (REN=1) và đặt cờ ngắt phát (T1=1) để
chỉ bộ phát sẵn sàng hoạt động.
23
Chế độ 0:Thanh ghi dịch 8 bit (1/2)
24
Chế độ 0:Thanh ghi dịch 8 bit (2/2)
25
Chế độ 1: UART 8 bit có tốc độ 
baud thay đổi được (1/3)
• Ở chế độ 1, 10 bit được phát đi trên TXD hoặc được thu vào 
ở RXD. Các bit này bao gồm 1 bit bắt đầu (luôn luôn là 0), 8 
bit dữ liệu (LSB đi trước), và 1 bit dừng (luôn luôn là 1). 
• Để hoạt động bộ thu, bit dừng đi vào RB8 trong SCON. 
Trong 8051, tốc độ baud được đặt bằng tốc độ tràn của 
Timer 1.
26
• Việc phát được khởi động bằng cách ghi vào SBUF, nhưng không 
thật sự bắt đầu cho đến khi cạnh xuống kế của bộ đếm chia 16 cung 
cấp tốc độ bau cổng nối tiếp. Dữ liệu được dịch ra trên đường TXD 
bắt đầu bằng bit bắt đầu (start bit), theo sau là 8 bit dữ liệu, và kế 
đến là bit dừng. Chu kỳ của mỗi bit là nghịch đảo của tốc độ baud 
được lập trình trong timer. Cờ ngắt để phát (TI) được đặt lên 1 ngay 
khi bit dừng xuất hiện trên TXD . 
Chế độ 1: UART 8 bit có tốc độ 
baud thay đổi được (2/3)
sự kiện đồng bộ hóa
27
• Việc thu được khởi động bởi chuyển tiếp 1 sang 0 ở RXD. Bộ đếm chia 
16 được reset tức thời để đồng chỉnh các số đếm với chuỗi bit đến. Chuỗi 
bit đến được lấy mẫu ở giữa 16 lần đếm.
• Giả sử bộ thu phát hiện bit bắt đầu hợp lệ thì tiếp tục nhận ký tự. Bit bắt 
đầu được bỏ qua và 8 bit dữ liệu được nhịp vào thanh ghi dịch cổng nối 
tiếp. Khi tất cả 8 bit đã được nhịp vào thì xảy ra:
• Bit thứ 9 (bit dừng) được nhịp vào RB8 trong SCON.
• SBUF được nạp với 8 bit dữ liệu, và
• Cờ ngắt của bộ thu (RI) được đặt lên 1.
• Tuy nhiên các điều trên chỉ xảy ra nếu có các điều kiện sau:
• RI = 0, và
• SM2 = 1, và bit dừng nhận được = 1, hoặc SM2=0.
• Yêu cầu RI = 0 để bảo đảm rằng phần mềm đã đọc ký tự trước (và đã 
xóa RI).kiện thứ 2 thì hơi phức tạp, nhưng chỉ áp dụng trong chế độ
truyền thông đa xử lý. Nó hàm ý “Không được đặt RI lên 1 trong chế độ
truyền thông đa xử lý khi bit dữ liệu thứ chín là 0”.
Chế độ 1: UART 8 bit có tốc độ 
baud thay đổi được (3/3)
28
• Khi SM0 =1 và SM1 = 0, cổng nối tiếp hoạt động 
ở chế độ 2 như UART 9 bit với tốc độ baud cố 
định. 
• Mười một bit được phát hoặc thu: 1 bit bắt đầu, 
8 bit dữ liệu, 1 bit dữ liệu thứ 9 lập trình được, 
và 1 bit dừng. 
• Khi phát, bit thứ 9 là nội dung của bit TB8 trong 
SCON. 
• Khi thu, bit thứ 9 thu được được đặt trong RB8. 
• Tốc độ baud ở chế độ 2 là 1/32 hay 1/64 tần số
mạch dao động trên chip (xem thêm mục tốc độ
baud cổng nối tiếp).
Chế độ 2: UART 9 bit có tốc độ
baud cố định 
29
Chế độ 3: UART 9 bit có
tốc độ baud thay đổi được
• Chế độ 3 giống với chế độ 2 ngoại trừ tốc 
độ baud được lập trình và được cung cấp 
bởi timer. 
• Thật ra các chế độ 1, 2, và 3 rất giống 
nhau. Sự khác biệt là tốc độ baud (cố định 
trong chế độ 2, thay đổi được trong chế độ
1 và 3) và số bit dữ liệu (8 trong chế độ 1, 
9 trong chế độ 2 và 3)
30
Khởi tạo trị và truy cập các 
thanh ghi cổng nối tiếp
• Các tác vụ với cổng nối tiếp
– Cho phép bộ thu
– Truyền (thu/phát) dữ liệu nối tiếp
– Thêm bit kiểm tra chẳn lẽ
– Các cờ ngắt
– Đặt tốc độ baud cho cổng nối tiếp
– Truyền thông đa xử lý
31
Sử dụng các bit trong thanh ghi SCON
• Cho phép bộ thu (REN – bit 4)
SETB REN Hoặc
MOV SCON, #xxx1xxxxB ; với x=0/1
• Các cờ ngắt RI, TI: Các cờ này được bật lên bởi phần 
cứng nhưng phải được xóa bằng phần mềm.
• RI = 1: Bộ đệm nhận đầy; TI = 1: Bộ đệm phát rỗng
Cho phép bộ thu – Truyền dữ liệu nối tiếp
1. Thu nối tiếp:
WAIT: JNB RI, WAIT 
CLR RI
MOV A, SBUF
2. Phát nối tiếp:
WAIT: JNB TI, WAIT
CLR TI
MOV SBUF,A
32
– bit kiểm tra chẳn lẽ - TB8 
• kiểm tra chẳn/lẽ (nếu không có dòng (*) là chẳn)
; qua bit nhớ C
MOV C, P
CPL C ; kiểm tra lẽ (*)
MOV TB8, C
MOV SBUF, A
; ở chế độ 1: 7-bit + 1 parity-bit
CLR ACC.7
MOV C, P
MOV ACC.7, C
MOV SBUF, A
• Nếu Parity luôn luôn bằng 1 ⇒ có 2 bit dừng 
Thêm bit kiểm tra chẳn lẽ
33
Đặt tốc độ baud cho cổng nối tiếp
Cách đặt SMOD lên 1
MOV A,PCON
SETB ACC.7
MOV PCON,A
34
• Khởi tạo trị TMOD ở chế độ timer 8 bit tự động nạp lại trị đầu (chế độ 2 của 
timer) và đặt giá trị nạp lại vào TH1 để cho tốc độ tràn bằng tốc độ baud. 
TMOD được khởi tạo trị như sau:
MOV TMOD, #0010xxxxB
với “x” có giá trị 0 hay 1 cần cho Timer 0.
• Đặt tốc độ baud rất thấp bằng cách dùng Timer 1 chế độ 16 bit , với 
TMOD = #0001xxxxB. Tuy nhiên phải khởi tạo trị lại các thanh ghi TL1/TH1 
sau mỗi lần tràn. Việc này sẽ được thực hiện trong chương trình phục vụ
ngắt. 
• Một lưa chọn khác là cung cấp xung nhịp Timer1 bằng xung nhịp bên ngoài 
qua chân T1 (P3.5). Tốc độ baud là 1/32 tốc độ tràn của Timer 1.
• Do đó công thức để xác định tốc độ baud trong các chế độ 1 và 3 là
Tốc độ baud = 1/32 Tốc độ tràn của Timer 1 
Thí dụ: hoạt động 1200 baud cần tốc độ tràn như sau
1200 = 1/32 Tốc độ tràn của Timer 1
Tốc độ tràn của Timer 1 = 32 x 1200 = 38400 = 38.4 KHz 
Với XTAL=12 MHz thì trị nạp cho T1 là 1000KHz/38.8KHz=26.04 ~ 26
Sử dụng Timer 1 làm xung nhịp tốc độ baud
35
36
Thí dụ: Khởi tạo trị cho cổng nối tiếp
Viết chuỗi lệnh để khởi tạo trị cổng nối itếp hoạt động như UART 8 
bit với tốc độ 2400 baud. Sử dụng Timer 1 để cung cấp xung nhịp 
tốc độ baud.
Bài giải.
Với thí dụ này, có 4 thanh ghi phải được khởi tạo trị là: SCON, 
TMOD, TCON, và TH1. Giá trị cần để khởi tạo trị cho các thanh ghi 
như sau
37
Thí dụ: Chương trình xuất ký tự
Viết chương trình con OUTCHR để phát mã ASCII 7 bit trong thanh ghi tích 
lũy A ra cổng nốitiếp của 8051 với bit kiểm tra lẽ được thêm vào như bit thứ 8. 
Trở về từ chương trình con không làm thay đổi trị của thanh ghi tích lũy trước 
khi gọi chương trình con.
Bài giải.
Thí dụ này và thí dụ kế minh họa 2 trong số các chương trình con thông dụng 
nhất trên các hệ vi tính có gắn thiết bị đầu cuối RS232: xuất ký tự (OUTCHR) 
và nhập ký tự (INCHAR).
ORG 8100H
OUTCHR: MOV C, P ; đặt bit kiểm ra chẳn vào cờ C
CPL C ; đổi sang kiểm tra lẽ
MOV ACC.7, C ; thêm vào mã ký tự
AGAIN: JNB TI, AGAIN ; TX có rảnh ? Không : kiểm tra lại
CLR TI ; Truyền được Æ xóa cờ TI và
MOV SBUF, A; gửi ký tự
CLR ACC.7 ; bỏ bit kiểm tra lẽ và
RET ; quay về
END
38
Thí dụ, các lệnh sau phát mã ASCII cho 
chữ Z đến thiết bị nối tiếp gắn vào cổng 
nối tiếp của 8051:
MOV A, # ’Z’
CALL OUTCHR
(tiếp tục)
39
Thí dụ: Chương trình con nhập ký tự
Viết chương trình con INCHAR để nhập 1 ký tự từ cổng nối 
tiếp của 8051 và quay về với mã ASCII 7 bit trong thanh ghi 
tích lũy. Ngoại trừ bit kiểm tra lẽ trong bit thứ 8 nhận được 
và đặt cờ nhớ lên 1 nếu có sai về kiểm tra chẳn lẽ.
ORG 8100H
INCHAR: JNB RI, $ ; đợi ký tự
CLR RI ; xóa cờ
MOV A, SBUF ; đọc ký tự vào A
MOV C, P ; với kiểm tra lẽ trong A, P sẽ = 1
CPL C ; bù để chỉ có lỗi
CLR ACC.7 ; bỏ bit kiểm tra chẳn lẽ
RET
END

File đính kèm:

  • pdfbai_giang_vi_xu_ly_chuong_3_cong_noi_tiep_serial_port.pdf