用C8051F410, 需要從串口接收兩個字節(jié),收到后置標(biāo)志位,程序如下
vvoid comm0_rx(void) interrupt 4
{
m=0;
while(m<2)
{
if(RI0)
{
RI0=0;
recdata[m]=SBUF0;
m++;
}
}
m=0;
while(m<2)
{
SBUF0=recdata[m];
while(!TI0);
TI0=0;
m++;
}
flag0=1;
flag1=1;
ES0=0;
}
程序運(yùn)行后,接收及發(fā)送都沒問題,但就是最后置標(biāo)志位語句不是每次都能執(zhí)行,偶爾接收一次就能執(zhí)行,大多數(shù)要接收好幾次才能置位(次數(shù)不定)。開始時接收和發(fā)送是在一起,后來分開,甚至置位語句放在接收與發(fā)送之間也沒用。哪位大俠遇到過這種問題?
xuyaqi 發(fā)表于 2019-6-19 08:14
不能把中斷處理程序搞得這么復(fù)雜,會影響串口接收的,中斷里設(shè)標(biāo)志,復(fù)雜處理中斷外執(zhí)行。
xuyaqi 發(fā)表于 2019-6-19 08:14
不能把中斷處理程序搞得這么復(fù)雜,會影響串口接收的,中斷里設(shè)標(biāo)志,復(fù)雜處理中斷外執(zhí)行。
liuzanshui 發(fā)表于 2019-6-19 10:26
已經(jīng)盡力精簡了,收到數(shù)據(jù)后置標(biāo)志位,然后禁止串口通信,主程序執(zhí)行完相應(yīng)的任務(wù)后再重開串口
xuyaqi 發(fā)表于 2019-6-19 11:07
“收到數(shù)據(jù)后置標(biāo)志位,然后禁止串口通信”怎么能禁止串口通信,對方發(fā)送你不是漏掉了嘛,你應(yīng)該在接收中 ...
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |