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

8051 chap5 serial VI XỬ LÝ

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 (1.29 MB, 17 trang )

ĐH Bách Khoa TP.HCM

Lê Chí Thơng

The 8051 Microcontroller
Chapter 5
Serial Port Operation
Lê Chí Thơng

sites.google.com/site/chithong
Ref. I. Scott Mackenzie, The 8051 Microcontroller

Serial Port






RXD (P3.0) and TXD (P3.1) pins
Full Duplex: simultaneous transmission and reception
2 special function registers: SCON and SBUF
SCON: status bits and control bits
SBUF: same address but 2 buffers; 1 buffer for
transmission and 1 buffer for reception
• Baud rate (serial port frequency of operation) is
supplied and programmed by Timer1

Ref. I. Scott Mackenzie

sites.google.com/site/chithong



Lê Chí Thông

2

1


ĐH Bách Khoa TP.HCM

Lê Chí Thơng

Serial port block diagram
P→
→S buffer

S→
→P buffer

Writing to SBUF loads data to be transmitted
Reading SBUF accesses received data
Ref. I. Scott Mackenzie

Lê Chí Thơng

3

SCON Register

Ref. I. Scott Mackenzie


sites.google.com/site/chithong

Lê Chí Thơng

4

2


ĐH Bách Khoa TP.HCM

Lê Chí Thơng

SCON Register

Ref. I. Scott Mackenzie

Lê Chí Thơng

5

Mode 0: 8-Bit Shift Register
• RXD is used for both data input and output
• Serial data enter and exit (LSB first) through RXD
• TXD line serves as the clock
• TXD outputs the shift clock
• Baud rate = 1/12 fOSC

Ref. I. Scott Mackenzie


sites.google.com/site/chithong

Lê Chí Thơng

6

3


ĐH Bách Khoa TP.HCM

Lê Chí Thơng

Mode 0: 8-Bit Shift Register
• Transmission is initiated by instruction that writes
data to SBUF (eg. MOV SBUF,A)

Ref. I. Scott Mackenzie

Lê Chí Thơng

7

Mode 0: 8-Bit Shift Register
• Reception is initiated when REN is 1 and RI is 0
• Set REN at the beginning of a program
• Clear RI to begin a data input operation

Ref. I. Scott Mackenzie


sites.google.com/site/chithong

Lê Chí Thơng

8

4


ĐH Bách Khoa TP.HCM

Lê Chí Thơng

Mode 0: 8-Bit Shift Register
• One application of shift register mode is to expand the
out capability of the 8051
• A serial-to-parallel shift register IC can be
connected to the 8051 TXD and RXD lines to
provide an extra output lines

Ref. I. Scott Mackenzie

Lê Chí Thơng

9

Mode 1: 8-Bit UART with Variable Baud Rate
• UART: Universal Asynchronous Receiver/Transmitter
• A data frame includes a start bit (low), data bits,

and a stop bit (high).
• A parity bit is sometimes inserted between the last
data bit and the stop bit.
• Mode 1: 10 bits are transmitted on TXD or received on
RXD, including a start bit (0), 8 data bits (LSB first),
and a stop bit (1).
• The stop bit goes into RB8 in SCON.
• Baud rate is set by the Timer 1 overflow rate.
Ref. I. Scott Mackenzie

sites.google.com/site/chithong

Lê Chí Thơng

10

5


ĐH Bách Khoa TP.HCM

Lê Chí Thơng

Mode 1: 8-Bit UART with Variable Baud Rate
• Transmission is initiated by writing to SBUF.
• TI is set at the end of character transmission and
indicates “transmit buffer empty”.
WAIT:JNB TI,WAIT ;Check TI until set
CLR TI
;Clear TI

MOV SBUF,A ;Send character
stop

synchronization event
Ref. I. Scott Mackenzie

Lê Chí Thơng

11

Mode 1: 8-Bit UART with Variable Baud Rate
• Reception is initiated by a 1-to-0 transition on RXD.
1. The stop bit goes into RB8 in SCON.
2. SBUF is loaded with 8 data bits.
3. RI is set at the end of character reception and
indicates “receiver buffer full”.
• Conditions for reception:
1. RI=0, and
2. SM2=0, or SM2=1 and the received stop bit = 1
WAIT:JNB RI,WAIT ;Check RI until set
CLR RI
;Clear RI
MOV A,SBUF ;Read character
Ref. I. Scott Mackenzie

sites.google.com/site/chithong

Lê Chí Thơng

12


6


ĐH Bách Khoa TP.HCM

Lê Chí Thơng

Serial Port Baud Rates
1MHz (12 MHz crystal)

375K/187.5K (12 MHz crystal)

Ref. I. Scott Mackenzie

Lê Chí Thơng

To set SMOD:
MOV
A,PCON
SETB
ACC.7
MOV
PCON,A

13

Using Timer 1 as the Baud Rate Clock






Usually use Timer 1 Mode 2 to provide baud rate clock
Baud Rate = Timer 1 overflow rate / 32 (SMOD=0)
Baud Rate = Timer 1 overflow rate / 16 (SMOD=1)
Eg. Calculate Timer 1 overflow rate to provide 1200
baud operation (12 MHz crystal)
• fOSC = 12 MHz  fCLK = 1 MHz  TCLK = 1 μs
• Assume SMOD=0: Timer 1 overflow rate = 1200 x
32 = 38.4 KHz  Toverflow = 1/38.4 kHz = 26.04 μs
• An overflow requires Toverflow/TCLK ≈ 26 clocks
 The reload value for Timer 1 is -26

Ref. I. Scott Mackenzie

sites.google.com/site/chithong

Lê Chí Thơng

14

7


ĐH Bách Khoa TP.HCM

Lê Chí Thơng

Error in Baud Rate

• Due to rounding, there is a slight error. Generally, a 5%
error is tolerable.
• Exact baud rates are possible using an 11.0592 MHz
crystal.
• Eg. Calculate Timer 1 overflow rate to provide 1200
baud operation (11.0592 MHz crystal)
• fOSC = 11.0592 MHz  TCLK = 12/11.0592 μs
• Assume SMOD=0: Timer 1 overflow rate = 1200 x
32 = 38.4 KHz  Toverflow = 1/0.0384 [μs]
• An overflow requires Toverflow/TCLK = 24 clocks
 The initial value for Timer 1 is -24
Ref. I. Scott Mackenzie

Lê Chí Thơng

15

Baud Rate Summary

Ref. I. Scott Mackenzie

sites.google.com/site/chithong

Lê Chí Thơng

16

8



ĐH Bách Khoa TP.HCM

Lê Chí Thơng

Initialize the Serial Port
ORG 0000H
MOV SCON,#01010010B
MOV TMOD,#00100000B
MOV TH1,#-26
SETB TR1


Ref. I. Scott Mackenzie

;Serial port mode 1
;Timer 1 mode 2
;reload count for 1200 baud
;start Timer 1

Lê Chí Thông

17

Initialize the Serial Port (SMOD=1)
ORG 0000H
MOV SCON,#01010010B
MOV A,PCON
SETB ACC.7
MOV PCON,A
MOV TMOD,#00100000B

MOV TH1,#-26
SETB TR1


Ref. I. Scott Mackenzie

sites.google.com/site/chithong

;Serial port mode 1
;SMOD=1
;Timer 1 mode 2
;reload count for 2400 baud
;start Timer 1

Lê Chí Thơng

18

9


ĐH Bách Khoa TP.HCM

Lê Chí Thơng

Example 1: Transmission
Assume a 10-byte string of data is stored in the internal RAM from the location 30H.
Write a program that sends this string to the 8051 serial port (1200 baud, crystal
11.0592 MHz)
ORG 0000H

MOV SCON,#01010010B
MOV TMOD,#00100000B
MOV TH1,#-24
SETB TR1
MOV R2,#10
MOV R0,#30H
LOOP: MOV A,@R0
ACALL SEND
INC R0
DJNZ R2,LOOP
SJMP DONE
SEND: JNB TI,$
CLR TI
MOV SBUF,A
RET
DONE: NOP
END
Ref. I. Scott Mackenzie

;Serial port mode 1
;Timer 1 mode 2
;reload count for 1200 baud
;start Timer 1
;number of loops
;starting address
;get data
;send data
;increase pointer
;loop 10 times
;transmit buffer empty? No:check again

;yes: clear flag and
;
send data
;return
Lê Chí Thơng

19

Your Turn!
Assume that a string of data is stored in internal RAM at address
30H to 50H. Write a program that sends this string to serial port
using UART 8-bit, 2400 baud, 11.059-MHz crystal.

Ref. I. Scott Mackenzie

sites.google.com/site/chithong

Lê Chí Thơng

20

10


ĐH Bách Khoa TP.HCM

Lê Chí Thơng

Solution
Assume that a string of data is stored in internal RAM at address

30H to 50H. Write a program that sends this string to serial port
using UART 8-bit, 2400 baud, 11.059-MHz crystal.
ORG 0000H
MOV SCON,#01010010B
MOV TMOD,#00100000B
MOV TH1,#-12
SETB TR1
MOV R0,#30H
LOOP: MOV A,@R0
ACALL SEND
INC R0
CJNE R0,#51H,LOOP
SJMP DONE
SEND: JNB TI,$
CLR TI
MOV SBUF,A
RET
DONE: NOP
Ref. I. Scott Mackenzie
END

Lê Chí Thơng

21

Example 2: Reception
Write a program that receives a 20-byte string from the 8051 serial port (2400 baud,
crystal 11.0592 MHz) and then stores in the internal RAM from the location 40H.
ORG 0000H
MOV SCON,#01010010B

MOV TMOD,#00100000B
MOV TH1,#-12
SETB TR1
MOV R2,#20
MOV R0,#40H
LOOP: ACALL RECEIVE
MOV @R0,A
INC R0
DJNZ R2,LOOP
SJMP DONE
RECEIVE:
JNB RI,$
CLR RI
MOV A,SBUF
RET
DONE: NOP
END
Ref. I. Scott
Mackenzie

sites.google.com/site/chithong

;Serial port mode 1
;Timer 1 mode 2
;reload count for 2400 baud
;start Timer 1
;number of loops
;starting address
;receive data
;store data

;increase pointer
;loop 20 times

;receive buffer full? No: check again
;yes: clear flag and
;
receive data
;return
Lê Chí Thơng

22

11


ĐH Bách Khoa TP.HCM

Lê Chí Thơng

Your Turn!
Write a program that receives a 20-byte string from serial port using
UART 8-bit, 4800 baud, 11.059-MHz crystal, and then writes data to
internal RAM from address 40H

Ref. I. Scott Mackenzie

Lê Chí Thơng

23


Problem 1

Ref. I. Scott Mackenzie

sites.google.com/site/chithong

Lê Chí Thơng

24

12


ĐH Bách Khoa TP.HCM

Lê Chí Thơng

Problem 2

Ref. I. Scott Mackenzie

Lê Chí Thơng

25

Mode 2: 9-Bit UART with Fixed Baud Rate
• Mode 2: 11 bits are transmitted on TXD or received on
RXD, including a start bit (0), 9 data bits (LSB first),
and a stop bit (1).
• On transmission, the 9th bit is whatever has been

put in TB8 in SCON.
• On reception, the 9th bit received is placed in RB8
in SCON.
• Baud rate is either fOSC/64 (SMOD=0)
or fOSC/32 (SMOD=1)

Ref. I. Scott Mackenzie

sites.google.com/site/chithong

Lê Chí Thông

26

13


ĐH Bách Khoa TP.HCM

Lê Chí Thơng

Mode 3: 9-Bit UART with Variable Baud Rate
• 9-bit UART: same as mode 2
• Variable baud rate: same as mode 1

Ref. I. Scott Mackenzie

Lê Chí Thơng

27


Adding a Parity Bit
• A common use for the 9th bit is to add parity to a
character.
• The P bit in PSW register is set or cleared to establish
even parity with 8 bits in A register.
• Eg. Put even parity bit in TB8, which becomes the 9th
data bit to be transmitted:
MOV C,P

;put even parity bit in C flag

MOV TB8,C ;and move to the 9th data bit
MOV SBUF,A;move from A to SBUF to transmit

Ref. I. Scott Mackenzie

sites.google.com/site/chithong

Lê Chí Thơng

28

14


ĐH Bách Khoa TP.HCM

Lê Chí Thơng


Adding a Parity Bit
• Eg. Put odd parity bit in TB8, which becomes the 9th
data bit to be transmitted:
MOV C,P

;put even parity bit in C flag

CPL C
;convert to odd parity
MOV TB8,C ;and move to the 9th data bit
MOV SBUF,A;move from A to SBUF to transmit

Ref. I. Scott Mackenzie

Lê Chí Thơng

29

Example 3
Assume a 10-byte string of 8-bit ASCII codes is stored in internal RAM from the
location 30H. Write a program that transmits this string out the 8051 serial port (4800
baud, crystal 11.0592 MHz) with odd parity added as the 9th bit

Ref. I. Scott Mackenzie

sites.google.com/site/chithong

Lê Chí Thơng

30


15


ĐH Bách Khoa TP.HCM

Lê Chí Thơng

Example 3
ORG 0000H
MOV SCON,#11010010B
MOV TMOD,#00100000B
MOV TH1,#-6
SETB TR1
MOV R2,#10
MOV R0,#30H
LOOP: MOV A,@R0
MOV C,P
CPL C
MOV TB8,C
ACALL SEND
INC R0
DJNZ R2,LOOP
SJMP DONE
SEND: JNB TI,$
CLR TI
MOV SBUF,A
RET
DONE: NOP
END

Ref. I. Scott Mackenzie

;Serial port mode 3 (9-bit)
;Timer 1 mode 2
;reload count for 4800 baud
;start Timer 1
;number of loops
;starting address
;get data
;put even parity bit in C flag
;convert to odd parity
;and move to the 9th data bit
;send data
;increase pointer
;loop 10 times
;check TI empty? No: check again
;yes: clear flag and
;
send data
;return

Lê Chí Thơng

31

Example 4
Assume a 10-byte string of 7-bit ASCII codes is stored in internal RAM from the
location 30H. Write a program that transmits this string out the 8051 serial port (4800
baud, crystal 11.0592 MHz) with odd parity added as the 8th bit
ORG 0000H

MOV SCON,#01010010B
MOV TMOD,#00100000B
MOV TH1,#-6
SETB TR1
MOV R2,#10
MOV R0,#30H
LOOP: MOV A,@R0
CLR ACC.7
MOV C,P
CPL C
MOV ACC.7,C
ACALL SEND
INC R0
DJNZ R2,LOOP
SEND: JNB TI,$
CLR TI
MOV A,SBUF
RET
END
Ref. I. Scott Mackenzie

sites.google.com/site/chithong

;Serial port mode 1 (8-bit)
;Timer 1 mode 2
;reload count for 4800 baud
;start Timer 1
;number of loops
;starting address
;get data

;clear the 8th bit of A
;put even parity bit in C flag
;convert to odd parity
;and move to the 8th bit of A
;send data
;increase pointer
;loop 10 times
;check TI empty? No: check again
;yes: clear flag and
;
send data
;return
Lê Chí Thơng

32

16


ĐH Bách Khoa TP.HCM

Lê Chí Thơng

Multiprocessor Communications
• When SM2=1, reception is done only if RB8=1.
• The master first sends out an address byte that has 1 in the 9th
bit. So all slave can receive the address byte and examine it to
test if it is being addressed.
• The addressed slave will clear its SM2 bit and prepare to receive
the data bytes that follow. The 9th bit in data byte is 0.

• The slaves that were not addressed leave their SM2 bits set and
ignore the incoming data bytes

Ref. I. Scott Mackenzie

Lê Chí Thơng

33

References
• I. Scott Mackenzie, The 8051 Microcontroller
• Các tài liệu trên Internet khơng trích dẫn hoặc khơng ghi tác
giả

Ref. I. Scott Mackenzie

sites.google.com/site/chithong

Lê Chí Thơng

34

17



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×