mc8051fun/uart_init.c

50 lines
979 B
C
Raw Normal View History

2024-05-17 23:49:24 +02:00
#include "mc8051fun.h"
//#include <stc12.h>
#include <at89c51ed2.h>
void uart_init(long fosc, long baud)
{
2024-05-18 02:11:47 +02:00
TMOD = 0x20; // Timer 1 in Mode 2
TH1 = 0xFD; // 9600 baud rate
TL1 = 0xFD; // Initial value (not necessary)
TR1 = 1; // Start Timer 1
SCON = 0x50; // 8-bit data, 1 stop bit, REN enabled
return;
2024-05-17 23:49:24 +02:00
TMOD = 0; /* Timer 1, 8-bit auto reload mode */
// P_SW1 |= (1 << 6); // move UART1 pins -> P3_6:rxd, P3_7:txd
// UART1 use Timer2
// T2L = (65536 - (fosc / 4 / baud)) & 0xFF;
// T2H = (65536 - (fosc / 4 / baud)) >> 8;
SM0 = 0;
SM1 = 1; // serial mode 1: 8-bit async
2024-05-18 02:11:47 +02:00
// AUXR |= 0x14; // T2R: run T2, T2x12: T2 clk src sysclk/1
// AUXR |= 0x01; // S1ST2: T2 is baudrate generator
SCON = 0x50;
TMOD |= T1_M1;
TI=1;
TCLK=0;
RCLK=0;
// TBCK=0;
// RBCK=0;
//
TH1=0xFD;
2024-05-17 23:49:24 +02:00
2024-05-18 02:11:47 +02:00
//SMOD0=0;
ES = 1; // enable uart1 interrupt
2024-05-17 23:49:24 +02:00
EA = 1; // enable interrupts
REN = 1;
2024-05-18 02:11:47 +02:00
2024-05-17 23:49:24 +02:00
}