intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Nguyễn Quang Hòa | Ngày: | Loại File: PDF | Số trang:14

251
lượt xem
92
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Đây là tài liệu thiết bị điện - điện tử, vi điều khiển 8051- bộ thu phát nối tiếp 8501 gửi đến các bạn độc giả tham khảo.

Chủ đề:
Lưu

Nội dung Text: Các vi điều khiển 8051

  1. ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile The 8051 Microcontroller Chapter 5 Serial Port Operation 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 Lê Chí Thông 2 1
  2. ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 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 Lê Chí Thông 4 2
  3. ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 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 Lê Chí Thông 6 3
  4. ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 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 Lê Chí Thông 8 4
  5. ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 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 Lê Chí Thông 10 5
  6. ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 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 Lê Chí Thông 12 6
  7. ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile Serial Port Baud Rates 1MHz (12 MHz crystal) 375K/187.5K (12 MHz crystal) To set SMOD: MOV A,PCON SETB ACC.7 MOV PCON,A 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 Ref. I. Scott Mackenzie Lê Chí Thông 14 7
  8. ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 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 Lê Chí Thông 16 8
  9. ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 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 Lê Chí Thông 17 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 Lê Chí Thông 18 9
  10. ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 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 ;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 Ref. I. Scott Mackenzie Lê Chí Thông 19 END 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 ;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: I. Scott Mackenzie NOP Ref. Lê Chí Thông 20 END 10
  11. ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 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 Lê Chí Thông 21 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 22 11
  12. ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 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 Lê Chí Thông 23 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 24 12
  13. ĐH Bách Khoa 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 ;Serial port mode 3 (9-bit) MOV TMOD,#00100000B ;Timer 1 mode 2 MOV TH1,#-6 ;reload count for 4800 baud SETB TR1 ;start Timer 1 MOV R2,#10 ;number of loops MOV R0,#30H ;starting address LOOP: MOV A,@R0 ;get data MOV C,P ;put even parity bit in C flag CPL C ;convert to odd parity ;and move to the 9th data bit MOV TB8,C ACALL SEND ;send data INC R0 ;increase pointer DJNZ R2,LOOP ;loop 10 times SEND: JNB TI,$ ;check TI empty? No: check again CLR TI ;yes: clear flag and MOV A,SBUF ; send data RET ;return Ref. I. Scott Mackenzie Lê Chí Thông 25 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 8th 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 SETB TR1 ;start Timer 1 MOV R2,#10 ;number of loops MOV R0,#30H ;starting address LOOP: MOV A,@R0 ;get data ;clear the 8th bit of A CLR ACC.7 MOV C,P ;put even parity bit in C flag CPL C ;convert to odd parity ;and move to the 8th bit of A MOV ACC.7,C ACALL SEND ;send data INC R0 ;increase pointer DJNZ R2,LOOP ;loop 10 times SEND: JNB TI,$ ;check TI empty? No: check again CLR TI ;yes: clear flag and MOV A,SBUF ; send data RET ;return END Ref. I. Scott Mackenzie Lê Chí Thông 26 13
  14. ĐH Bách Khoa TP.HCM Lê Chí Thông www.tinyurl.com/thongchile 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 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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2