void Receive_Uart() interrupt 4
{
ES=0;
if(RI&&(a<=string_max))
{
RI=0;
buffer_uart[a++]=SBUF;
if(SBUF=='\r'||SBUF=='\n')//為了壓縮空間
a--;
if(buffer_uart[a]=='\0'||a>=string_max-1)
{// lcd(buffer_uartdelay(10););delay(10);
flag=1; }//收完的標識
if(a>string_max)
ES=0;
}
}
妳進了串口中斷就關閉了中斷使能ES,但直到中斷結束也沒有再次打開中斷,也就是說收到了壹個字符後就再也無法進入串口中斷,妳壹***就收到壹個‘E’,還沒機會打開flag標誌來啟動發送,居然能在串口收到“ER”,實在不懂。
1.建議妳在初始化程序中將flag和buffer_uart數組初始化為0。
2.中斷程序的最後要加上
ES=1;
位置就在最後壹個括號之前,改了先看看效果怎麽樣吧。