a_2012_m 发表于 2012-9-24 10:16:16

请教一个诡异的程序问题


                else
                {
                         j=0;
//                         speed_av=0;
                         kkk=kkk+1;                  //123
                         dispmap &= 0xDF;//不显示T1护航
                         if(kkk<3)
                         {
//                              kkk++;   //1234
                              speed_write(0,l_speed_gps);
//                              compass_drow(l_get_gpscompass);
                              beep=0;
                         }
                         else
                         {
                              if(kkk>2)
                              {
                                        kkk=5;
                              }
                beep=1;
                              speed_write(1,voltage);
                              compass_drow(l_get_gpscompass);   //闪烁显示
                              Delayms(100);
                            Delayms(100);
                              Delayms(100);
//                            Delayms(100);
//                              Delayms(100);

                              dispmap &= 0x30;
                dispmap &= 0x00;
                              Delayms(100);
                            Delayms(100);
                              Delayms(100);
//                            Delayms(100);
//                              Delayms(100);

                         }
                }

我用io口模拟串口收发程序,代码如上,注释123处的代码如果不屏蔽,
程序能接收PC串口发过来的数据,波特率是57600,但是回传给pc,速率特别慢,差不多是0.5秒一个字符
注释123处的代码如果屏蔽,收发就都正常
如果把123处得代码放在1234处,还是会出现上面的问题
变量kkk是一个全局变量,除了在开始初始化为0之外,就在代码的这个地方使用了
已经仔细查看代码n遍了,始终不知到其中的问题出在哪,请大家指教

lindabell 发表于 2012-9-24 10:37:56

if(kkk>2)
{
    kkk=5;
}
有可能执行吗
应该是逻辑有问题

a_2012_m 发表于 2012-9-24 10:45:08

lindabell 发表于 2012-9-24 10:37 static/image/common/back.gif
if(kkk>2)
{
    kkk=5;


这个地方测试仿真过,可以执行

lindabell 发表于 2012-9-24 11:01:39

本帖最后由 lindabell 于 2012-9-24 11:03 编辑

看错了   






























a_2012_m 发表于 2012-9-24 14:59:04

问题还未解决,继续求指教!

dboyzju 发表于 2012-9-24 20:46:43

kkk增加的话,如果kkk满足了else语句的条件,进入了else语句部分,里面那些延时函数延时会很长吧,好几百毫秒总有了。延时的时候CPU不能做其他事情了,你用USART口发的数据是不是要程序中写进去的?延时的时候就什么都没法做了,也没法写数据了,但是接收的数据是由计算机不断写的,所以正常。个人一点看法,不知道对不对,如有错误请指正。

a_2012_m 发表于 2012-9-25 08:02:37

楼上说的有道理,我改改程序看看!
页: [1]
查看完整版本: 请教一个诡异的程序问题