zhangmangui 发表于 2013-10-18 17:04 
你说的查询模式是什么啊
查询模式一般是指查询接收中断标志位是否置位
也就是不进入中断而已
我这的查询就是通过查询它的接收和发送标志位例如下面的程序
for(;;)
{
/*查询方式实现发送功能*/
if((SciaTx_Ready() == 1) && (Send_Flag == 1)) //发送准备已经就绪而且有数据需要发送
{
SciaRegs.SCITXBUF = Sci_VarRx; //发送数据
Send_Flag = 0; //清标志位
i++;
if(i == 100)
{
i = 0;
}
}
/*查询方式实现接收功能*/
if(SciaRx_Ready() == 1) //接收数据准备已经就绪
{
Sci_VarRx = SciaRegs.SCIRXBUF.all; //接收数据
Send_Flag = 1; //标志位置位,有数据等待发送
}
}
其中的SCIatx_Ready函数是:
int SciaTx_Ready(void)
{
unsigned int i;
if(SciaRegs.SCICTL2.bit.TXRDY == 1)
{
i = 1;
}
else
{
i = 0;
}
return(i);
}
简单的说就是查询相应的标志位,我就发现通过串口调试的时候,它必须遵行相应的通信模式,即必须发送的事8个字符或数字
但是若果我用SCI中断实现的时候,就可以随便发送几个数据,都能接收
就是这个地方不是很理解,谢谢斑竹解答一下。。。
|