串口通信的初始化
void uart_init(unsigned char baud) // baud 波特
{
TMOD |= 0x20 ; //0010 0000 设置计数器工作方式2
SCON = 0x50 ; //0101 0000 设置位工作方式1(包含REN = 1)
PCON = 0x80 ; //1000 0000 波特率加倍(SMOD = 1)
TH1 = baud ; //计数器初始值设置
TL1 = baud ;
ES = 1 ; //打开接收中断
EA = 1 ; //打开总中断
TR1 = 1 ; //打开定时器/计数器
}
关于为什么不将ET1 = 1
这里T1用作波特率发生器了,如果打开中断ET1的话,会很频繁的中断,造成单片机资源的大量浪费,并且这中断是没有任何作用的。如果你开了ET1,但没做服务程序,那么程序将紊乱!