|
我用的是ATMEL 89C51-20PC的单片机,晶振是采用的24MHZ,串口配置如下:
SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr
TMOD |= 0x21; //TMOD: timer 1, mode 2, 8-bit reload,timer 0 mode 1
PCON |= 0x80; //SMOD=1;
TH1 = 0xCC; //Baud:2400 fosc=24MHz
TH0 = 0xFE;
TL0 = 0x0C; //1ms = 5000 = 01F4H,10000H - 01F4H = FE0CH
IE |= 0x92; //Enable Serial Interrupt,timer0 Interrupt
TR1 = 1; // timer 1 run
我在单片机端用while循环不停的发0xA5,为啥每次我在PC机端用2400的波特率接收的时候,有时候接收到的是A5,有的时候是5A,2B,69中的一种
我是按照下面的公式计算的:波特率=(1+SMOD)*晶振频率/(384*(256-TH1))
|
|