#include <reg51.h>
void UART_Init() { SCON = 0x50; // Mode 1: 8-bit UART, REN enabled TMOD |= 0x20; // Timer1 in Mode 2 (8-bit auto-reload) TH1 = 0xFD; // 9600 Baud Rate for 11.0592 MHz TL1 = 0xFD; TR1 = 1; // Start Timer1 } void UART_TxChar(char ch) { SBUF = ch; // Load data into UART buffer while (TI == 0); // Wait until transmission complete TI = 0; // Clear transmit interrupt flag } char UART_RxChar() { while (RI == 0); // Wait for reception to complete RI = 0; // Clear receive interrupt flag return SBUF; // Return received character } void UART_SendString(char *str) { while (*str) { UART_TxChar(*str++); } } void main() { char received; UART_Init(); UART_SendString("8051 Serial Ready\r\n"); while (1) { received = UART_RxChar(); // Wait for data UART_TxChar(received); // Echo it back } }
Post a Comment