#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