发表于:2020/8/31 21:45:49
#0楼
如题,想用底层操作屏与自己设计的控制板进行通讯,需要可以用C写底层,就是可以通过读状态字知道屏是否收到了数据,收到了多少个数据。之前用信捷的屏测试,发现这个品牌的屏写是没有问题的,但是读的时候,是一直读,相当于C里面的while(读),这样的话,太费时间了,有没有哪家的屏,可以通过状态字知道屏到底有没有收到数据的,收到了多少数据。
例如下面的这段程序,只需要在程序里判断RX_EN_B是不是为1,如果为1,说明已经收到了新的数据,再判断RX_DATA_TIME是不是为0,如果是,就开始读缓冲区的数据就可以了,并且通过RxNum识别出接收到了多少个数据。
/*----------------------------
UART4 中断服务程序
-----------------------------*/
void Uart4() interrupt 18 using 1 //串口4中断
{
IE2=0x00;
if(S4CON&0x01)
{
S4CON=0x10; //清除S4RI位
if(RxNum<30)
{
XT_RX_DATA[RxNum]=S4BUF;
RxNum++;//接收到的数据个数
}
RX_DATA_TIME=2;//接收到数据后的延迟
RX_EN_B=1;//接收到新数据标志位
}
if(S4CON&0x02)
{
S4CON=0x10;//清除S4TI位
}
IE2=0x10;
}
例如下面的这段程序,只需要在程序里判断RX_EN_B是不是为1,如果为1,说明已经收到了新的数据,再判断RX_DATA_TIME是不是为0,如果是,就开始读缓冲区的数据就可以了,并且通过RxNum识别出接收到了多少个数据。
/*----------------------------
UART4 中断服务程序
-----------------------------*/
void Uart4() interrupt 18 using 1 //串口4中断
{
IE2=0x00;
if(S4CON&0x01)
{
S4CON=0x10; //清除S4RI位
if(RxNum<30)
{
XT_RX_DATA[RxNum]=S4BUF;
RxNum++;//接收到的数据个数
}
RX_DATA_TIME=2;//接收到数据后的延迟
RX_EN_B=1;//接收到新数据标志位
}
if(S4CON&0x02)
{
S4CON=0x10;//清除S4TI位
}
IE2=0x10;
}
遇到SB,请不要和他争辩,认同他所有的观点,让他变成一个大SB。