写了一个串口通信程序,主要部分也就传统那样:
a=0;
while(MESSAGE[i][a] != ' ') {
SBUF = MESSAGE[i][a];
while(!TI);
TI = 0;
a++;
}//while (MESSAGE[i][a] != ' ')
delay(100);
//i是(MESSAGE[][3]里的第 i 个字符串
一切正常,后来加了个ADXL345的程序,还没使用这个程序,串口就只能发送第一个字符,而且一直发送第一个字符,比如我打算发12341234...他就发1111111....
把C文件郑重地邀请进主函数,还是那样。同学说可能是发得太快,好吧,delay多一点,还是没用,感觉是SBUF只能被赋值一次,不知道是不是ADXL345的程序动了缓存。
看来看去也没懂,固来向大家讨教讨教。
下面是那段奇葩的程序(主函数已注释)
注释乱码,还是发文件吧。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
而你发送时只增加count,看看发的是啥。
SBUF = MESSAGE[numin][count]; //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
while(!TI); // 等特数据传送 (TI发送中断标志)
TI = 0; // 清除数据传送标志
count++;
你每次count++之后MESSAGE[i][count]就越界了,什么后果自己分析。
骂的好。我真不懂啥时P,啥是叉。
鼓励一下。
继续。
嗯,发现了一个没什么意义的错误。
问题我早就解决了,不是这里的问题,还是谢谢
一周热门 更多>