串口通信的初始化
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,但没做服务程序,那么程序将紊乱!
博客围绕单片机串口通信初始化展开,解释了为何不将ET1置为1。因T1用作波特率发生器,打开ET1中断会频繁中断,浪费单片机资源且无作用,若开了ET1却没服务程序,还会导致程序紊乱。
1万+

被折叠的 条评论
为什么被折叠?



