串口发送以下哪个正确?
请教一下大虾们, 串口发送函数以下哪个正确(while里面的写法怎么理解)?说明理由。1.void SendByte(unsigned char dat)//发送一个字节函数
{
SBUF = dat;
while(TI!=1); //等待发送完成
TI = 0; //清除发送中断标志位
}
2.void SendByte(unsigned char dat)//发送一个字节函数
{
SBUF = dat;
while(!TI);
TI = 0;
}
3.void UART_T (unsigned char UART_data)//发送一个字节函数
{
SBUF = UART_data;
while(TI == 0); //检查发送中断标志位
TI = 0; //清发送中断标志位为0
} 本帖最后由 chinmel 于 2012-11-13 18:08 编辑
发送完毕时,TI=1
那说明未发送完毕时,TI=0
则需要在TI=0时等待。
所以,上述三种写法都是对的
//===================
编辑原因:修改错别字:是 --> 时 谢谢楼上,while(TI!=1); 和while(!TI);不好理解。TI!=1是把1赋给!TI,而!TI是0还是1?
是while()为真执行下面的语句还是while()为假执行下面的语句? while(TI!=1);这个判断TI是否等于1
while(!TI);这个给TI取反
页:
[1]