1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

8051 chap5 serial VI XỬ LÝ

17 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề The 8051 Microcontroller Chapter 5 Serial Port Operation
Tác giả Lê Chí Thông
Trường học ĐH Bách Khoa TP.HCM
Thể loại Bài giảng
Thành phố TP.HCM
Định dạng
Số trang 17
Dung lượng 1,29 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Scott Mackenzie, The 8051 Microcontroller Serial Port • RXDP3.0 and TXDP3.1 pins • Full Duplex: simultaneous transmission and reception • 2 special function registers: SCONand SBUF • SCO

Trang 1

Chapter 5 Serial Port Operation

The 8051 Microcontroller

Lê Chí Thông chithong@hcmut.edu.vn 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: SCONand 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

Trang 2

Serial port block diagram

Writing to SBUF loads data to be transmitted Reading SBUF accesses received data

P→ →S buffer S→ →P buffer

Ref I Scott Mackenzie Lê Chí Thông 3

SCON Register

Trang 3

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

• TXDoutputs the shift clock

• Baud rate = 1/12 fOSC

Trang 4

Mode 0: 8-Bit Shift Register

• Transmissionis 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

• Receptionis 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

Trang 5

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

Trang 6

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

MOV SBUF,A ;Send character

synchronization event stop

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

MOV A,SBUF ;Read character

Trang 7

Serial Port Baud Rates

1MHz (12 MHz crystal)

To set SMOD:

375K/187.5K (12 MHz crystal)

Ref I Scott Mackenzie Lê Chí Thông 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

Trang 8

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

Trang 9

Initialize the Serial Port

ORG 0000H MOV SCON,#01010010B ;Serial port mode 1 MOV TMOD,#00100000B ;Timer 1 mode 2 MOV TH1,#-26 ;reload count for 1200 baud

Ref I Scott Mackenzie Lê Chí Thông 17

Initialize the Serial Port (SMOD=1)

ORG 0000H MOV SCON,#01010010B ;Serial port mode 1 MOV A,PCON

MOV PCON,A MOV TMOD,#00100000B ;Timer 1 mode 2 MOV TH1,#-26 ;reload count for 2400 baud

Trang 10

Example 1: Transmission

ORG 0000H MOV SCON,#01010010B ;Serial port mode 1 MOV TMOD,#00100000B ;Timer 1 mode 2 MOV TH1,#-24 ;reload count for 1200 baud

MOV R2,#10 ;number of loops MOV R0,#30H ;starting address

DJNZ R2,LOOP ;loop 10 times SJMP DONE

SEND: JNB TI,$ ;transmit buffer empty? No:check again

MOV SBUF,A ; send data

DONE: NOP

END

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)

19

Lê Chí Thông Ref I Scott Mackenzie

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.

Trang 11

Ref I Scott Mackenzie Lê Chí Thông 21

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

END

Example 2: Reception

ORG 0000H MOV SCON,#01010010B ;Serial port mode 1 MOV TMOD,#00100000B ;Timer 1 mode 2 MOV TH1,#-12 ;reload count for 2400 baud

MOV R2,#20 ;number of loops MOV R0,#40H ;starting address LOOP: ACALL RECEIVE ;receive data

DJNZ R2,LOOP ;loop 20 times SJMP DONE

RECEIVE:

JNB RI,$ ;receive buffer full? No: check again

MOV A,SBUF ; receive data

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.

Trang 12

Your Turn!

Ref I Scott Mackenzie Lê Chí Thông 23

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

Problem 1

Trang 13

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 9thbit is whatever has been put in TB8 in SCON

• On reception, the 9thbit received is placed in RB8

in SCON

• Baud rate is either fOSC/64 (SMOD=0)

or fOSC/32 (SMOD=1)

Trang 14

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 9thbit is to add parity to a character

• The P bit in PSW register is set or cleared to establish even paritywith 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 9 th data bit MOV SBUF,A;move from A to SBUF to transmit

Trang 15

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 9 th 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 9 th bit

Trang 16

Example 3

Ref I Scott Mackenzie Lê Chí Thông 31

ORG 0000H MOV SCON,#11010010B ;Serial port mode 3 (9-bit) MOV TMOD,#00100000B ;Timer 1 mode 2

MOV TH1,#-6 ;reload count for 4800 baud

MOV R2,#10 ;number of loops MOV R0,#30H ;starting address

MOV C,P ;put even parity bit in C flag CPL C ;convert to odd parity

MOV TB8,C ;and move to the 9 th data bit

DJNZ R2,LOOP ;loop 10 times SJMP DONE

SEND: JNB TI,$ ;check TI empty? No: check again

MOV SBUF,A ; send data

DONE: NOP

END

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 8 th bit

ORG 0000H MOV SCON,#01010010B ;Serial port mode 1 (8-bit) MOV TMOD,#00100000B ;Timer 1 mode 2

MOV TH1,#-6 ;reload count for 4800 baud

MOV R2,#10 ;number of loops MOV R0,#30H ;starting address

DJNZ R2,LOOP ;loop 10 times SEND: JNB TI,$ ;check TI empty? No: check again

MOV A,SBUF ; send data

END

Trang 17

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 9 th

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 9 th 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ả

Ngày đăng: 13/04/2023, 08:09

w