Show pageOld revisionsBacklinksExport to PDFBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== UART on the 8051 ====== ===== Configuration ===== In order to configure the following registers must be initialized: ==== SCON (Serial port control register) ==== Configuration: 01010000 * SM0, SM1: 01 * Mode 1 (8-bit UART) * SM2: 0 * Disable multiprocessor communication (modes 2/3 only) * REN: 1 * Enable serial reception * TB8: 0 - 9th data bit to be sent - not used for 8-bit UART * RB8: 0 * 9th received data bit * Not used for 8-bit UART * TI: 0 * Transmit interrupt flag * Set by hardware when byte has been transmitted * Must be cleared by software * RI: 0 * Receive interrupt flag * Set by hardware when byte has been received * Must be cleared by software ==== TMOD (Timer/counter mode control register) ==== Since UART uses Timer 1, we only need to configure the upper nibble. Configuration: 0010XXXX * Timer 1 configuration * GATE: 0 * Disable gating control * C/T#: 0 * Select timer operation * M1, M0: 10 * Select mode 2 (auto reload) * Timer 0 configuration * Don't care ==== TCON ==== Configuration: 01XX0XXX * TCON.7: 0 * Timer 1 overflow flag * Set by hardware, should be cleared by software * TCON.6: 1 * Timer 1 run control bit * Set by software to start timer * TCON.3: 0 * Interrupt 1 edge flag * Set by hardware, should be cleared by software * TCON.2: X * Interrupt 1 type control bit - we are not using interrupts on timer 1. ==== TH1 ==== $$ TH1 = 256 - \frac{K(f_{OSC})}{384f_{BAUD}} $$ * For $f_{BAUD}=9600$, $K=1$, and $f_{OSC}=11.0592MHz$, $TH1=253$. ===== Receiving ===== * To receive a byte through UART, move the contents of the SBUF register to another register. <code asm> mov A, SBUF ; Store the received byte in the accumulator. </code> ===== Transmitting ===== * To transmit a byte through UART, move some data to the SBUF register. <code asm> mov SBUF, A ; Transmit the byte stored in the accmulator. </code> kb/8051_uart.txt Last modified: 2024-04-30 04:03by 127.0.0.1