打印
[ZLG-ARM]

大家帮我看个程序啊,谢谢

[复制链接]
1285|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
uuuren|  楼主 | 2008-9-4 16:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
IO, pc, EPC, se, pi
void  DelayNS(uint32  dly)
{  uint32  i;

   for(; dly>0; dly--) 
      for(i=0; i<3000; i++);
}
//持续蜂鸣
int  persist(void)
{  
    uint32 m;
    uint32 n;
    uint32 k;
    k=0;
    n=30;
    for(m=30;m>0;m--)
    {                             
    IO0SET = BEEPCON;            // BEEPCON = 1
      DelayNS(n);
      IO0CLR = BEEPCON;            // BEEPCON = 0
      DelayNS(3);
      n--;
      if(n==0)
    n++;
     while( (IO0PIN&PIN_P014)==0 )
                { IO0SET = BEEPCON;
                k=k+1;
                }
      while( (IO0PIN&PIN_P014)==1 )
                   if(k>0) IO0SET = BEEPCON;                
                   else break;
       if((IO0PIN&PIN_P014)==0)k=0;
            
   }
   
   return(0);
}
我单步执行看的,运行到最后一个while语句中,判定条件为真,且k=0x00000009时,语句if(k>0) IO0SET = BEEPCON; 不会执行,直接跳出while了,应该是执行了else。是怎么回事阿,k是大于0的呀。

相关帖子

沙发
gavin_he| | 2008-9-4 17:15 | 只看该作者

程序格式也得整漂亮一点吧!

使用特权

评论回复
板凳
zlg_lly| | 2008-9-4 20:11 | 只看该作者

RE:uuuren

你好,不防反汇编一下吧,看看汇编代码是怎么回事。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

74

帖子

0

粉丝