Thông tin tài liệu
ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 1 Chapter 5 Serial Port Operation The 8051 Microcontroller Lê Chí Thông 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 2Lê Chí Thông ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 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 3Lê Chí Thông SCON Register Ref. I. Scott Mackenzie 4Lê Chí Thông ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 3 SCON Register Ref. I. Scott Mackenzie 5Lê Chí Thông 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 f OSC Ref. I. Scott Mackenzie 6Lê Chí Thông ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 4 Mode 0: 8-Bit Shift Register • Transmission is initiated by instruction that writes data to SBUF (eg. MOV SBUF,A) Ref. I. Scott Mackenzie 7Lê Chí Thông 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 8Lê Chí Thông ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 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 9Lê Chí Thông 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 10Lê Chí Thông ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 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 CLR TI ;Clear TI MOV SBUF,A ;Send character synchronization event stop Ref. I. Scott Mackenzie 11Lê Chí Thông 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 12Lê Chí Thông ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 7 Serial Port Baud Rates 1MHz (12 MHz crystal) To set SMOD: MOV A,PCON SETB ACC.7 MOV PCON,A 375K/187.5K (12 MHz crystal) Ref. I. Scott Mackenzie 13Lê Chí Thông 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) • f OSC = 12 MHz f CLK = 1 MHz T CLK = 1 μs • Assume SMOD=0: Timer 1 overflow rate = 1200 x 32 = 38.4 KHz T overflow = 1/38.4 kHz = 26.04 μs • An overflow requires T overflow /T CLK ≈ 26 clocks The reload value for Timer 1 is -26 Ref. I. Scott Mackenzie 14Lê Chí Thông ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 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) • f OSC = 11.0592 MHz T CLK = 12/11.0592 μs • Assume SMOD=0: Timer 1 overflow rate = 1200 x 32 = 38.4 KHz T overflow = 1/0.0384 [μs] • An overflow requires T overflow /T CLK = 24 clocks The initial value for Timer 1 is -24 Ref. I. Scott Mackenzie 15Lê Chí Thông Baud Rate Summary Ref. I. Scott Mackenzie 16Lê Chí Thông ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 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 SETB TR1 ;start Timer 1 … Ref. I. Scott Mackenzie 17Lê Chí Thông Initialize the Serial Port (SMOD=1) ORG 0000H MOV SCON,#01010010B ;Serial port mode 1 MOV A,PCON SETB ACC.7 ;SMOD=1 MOV PCON,A MOV TMOD,#00100000B ;Timer 1 mode 2 MOV TH1,#-26 ;reload count for 2400 baud SETB TR1 ;start Timer 1 … Ref. I. Scott Mackenzie 18Lê Chí Thông ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 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 SETB TR1 ;start Timer 1 MOV R2,#10 ;number of loops MOV R0,#30H ;starting address LOOP: MOV A,@R0 ;get data ACALL SEND ;send data INC R0 ;increase pointer DJNZ R2,LOOP ;loop 10 times SJMP DONE SEND: JNB TI,$ ;transmit buffer empty? No:check again CLR TI ;yes: clear flag and MOV A,SBUF ; send data RET ;return 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) 19Lê Chí ThôngRef. I. Scott Mackenzie 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 SETB TR1 ;start Timer 1 MOV R2,#20 ;number of loops MOV R0,#40H ;starting address LOOP: ACALL RECEIVE ;receive data MOV @R0,a ;store data INC R0 ;increase pointer DJNZ R2,LOOP ;loop 10 times SJMP DONE RECEIVE: JNB RI,$ ;receive buffer full? No: check again CLR RI ;yes: clear flag and MOV SBUF,A ; send data RET ;return DONE: NOP END 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. Ref. I. Scott Mackenzie 20Lê Chí Thông [...]... 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 27 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 Lê Chí Thông 28 14 ... clear flag and ; send data ;return Lê Chí Thông 25 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... TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 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 ORG 0000H MOV SCON,#11010010B MOV TMOD,#00100000B MOV TH1,#-6 SETB TR1 MOV R2,#10 MOV R0,#30H LOOP: MOV A,@R0 MOV . 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. www.tinyurl.com/thongchile 1 Chapter 5 Serial Port Operation The 8051 Microcontroller Lê Chí Thông Ref. I. Scott Mackenzie, The 8051 Microcontroller Serial Port • RXD (P3.0) and TXD (P3.1) pins •. 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
Ngày đăng: 11/07/2014, 13:20
Xem thêm: Các vi điều khiển 8051 pps, Các vi điều khiển 8051 pps