Các vi điều khiển 8051 pps

14 320 1
Các vi điều khiển 8051 pps

Đ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

Đ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

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan