|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
网上找到的一个单片机串口发送程序,有一个地方不理解
程序如下
#include<reg52.h>
#include<intrins.h>
void Uart0_transmit(unsigned char i) //向串口发送一个字节
{
ES=0;
TI=0;
SBUF=i; // 发送数据到uart0
while (!TI); / 等待发送1个字节数据完成
TI=0 ; // 清除中断标志
ES=1;
}
void SysInit(void)
{
PCON |=0x80;
SCON=0x50;
TMOD=0x21;
TH1=204;
TL1=204;
TR1=1;
ES=0;
TH0=0xB8;
TL0=0x00;
TR0=1;
ET0=1;
}
void main (void)
{
SysInit();
while (1)
}
Uart0_transmit(0x55);
}
}
在Uart0_transmit函数里面,首先ES=0;也就是禁止串口中断,
然后 while (!TI); 等待 TI变成1,也就是等待发送中断标志变成1,
前面已经把串口中断禁止了,TI是不是永远也不会变为1,while (!TI);这句
是不是个死循环? |
|