标题:
关于单片机RC522程序中和上位机串口中断的问题
[打印本页]
作者:
gw422342988
时间:
2021-9-22 16:40
标题:
关于单片机RC522程序中和上位机串口中断的问题
RI软件清0后,!RI为1,一直在while语句中循环,直到j=1001,那下面的那些语句还有什么用?
void isr_UART(void) interrupt 4 using 1
{
unsigned char len, i;
unsigned int j=0;
if(RI)
{
len=SBUF;
RI=0;
for(i=0;i<len;i++)
{
while(!RI)
{
j++;
if(j>1000)
{
break;
}
}
if(j<1000)
{
RevBuffer[ i]=SBUF;
RI=0;
j=0;
}
else
{
break;
}
}
if(i==len)
{
REN=0;
CmdValid=1;
}
}
作者:
188610329
时间:
2021-9-22 19:08
这是判断超时的,如果上位机是发送 连续数据,那么在 j>1000 之前,RI会再次变1,就会 跳出 While(!RI) 就会在 RevBuffer[i] 里面存入新的数据,从目的上主要是,为了完整地接受上位机发过来的指令。当然,一般不会用这个写法,不过这样写也可以。
作者:
yzwzfyz
时间:
2021-9-23 09:01
沙发是高手!
要点:你要知道RI何时会变1。
这个程序的缺点是,在通讯时,除了接收数据,不能做其它事,浪费严重系统资源。给人【卡顿】的感觉。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1