为什么工程里加了一个没有引用的C文件,串口就疯了?

2020-01-30 13:37发布

写了一个串口通信程序,主要部分也就传统那样:

                         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的程序动了缓存。
看来看去也没懂,固来向大家讨教讨教。
下面是那段奇葩的程序(主函数已注释)

注释乱码,还是发文件吧。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
owenhunter
1楼-- · 2020-02-01 04:34
welcome_cool 发表于 2013-4-30 19:54
楼上说得对,先看你怎么定义的这个数组MESSAGE[][1],你用while(MESSAGE[a] != '')来判断结束,可是你每个 ...

非常感谢你的回答,不会让我对阿莫有前两个回答带来的误解,可惜程序不是像你的错,那里早就注释掉了,这个问题自己已经解决了
owenhunter
2楼-- · 2020-02-01 06:22
qllaoda1 发表于 2013-5-2 12:27
C51会对代码做内存覆盖的优化分析,没有调用的函数仍然会被连接,但是不会参加优化分析,导致大量RAM被浪费 ...

谢谢回答,问题早已自行解决,可惜看到前两个回答纯粹乱骂人,无心看帖。
此外,此为正解。
owenhunter
3楼-- · 2020-02-01 12:21
问题早已解决。内存问题,给程序减减肥,还有一些内存数据计算不该加进来,注释掉就好了。

一周热门 更多>