感觉有难度,请高手指点,thanks

2020-02-02 09:38发布

本帖最后由 yurinacn 于 2012-10-23 15:44 编辑

unsigned  char  a[10];
unsigned char *pA;
unsigned char count;

void ser() interrupt 4
{
    if (RI)
    {
        if(count)
        {
            count--;
            *pA++ = SBUF;
        }
        else
        {
             count = SBUF;  //未检查count可能超过数组a大小
             pA = a;
        }
    }
}

大概就是这个意思,可能不对,急着走
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
yurinacn
2020-02-02 10:54
本帖最后由 Eric_Xue 于 2012-10-23 19:36 编辑

在串口中断程序中加上发送字符的程序,接一个发一个,然后用串口调试助手看接受的数据是否正确。
    主要看len,还有楼主注意是以字符形式发的还是十六进制的。比如发数字"3":十六进制是"0x03",字符是0x33
       一次读中断不要读两次Sbuf,第二次读的可能不正确吧,改为len=sbuf;a[0]=len;
       初始化和读完数据各个全局变量要设置好。比如初始化flag应该设置为0,len设置为0。接收完数据k应该设置为0吧,不然串口又有数据读进来改怎么办啊。
  

一周热门 更多>