我用的是周立功公司的easyarm2114,ADS1.2,EasyJTAG.<br />参考板子的程序,我稍微改动拉一下,发现有个问题.这个问题我不知道是C语言规则的问题,还是其他问题,大伙看看.<br />我主程序实现的目的是当key1键按下是,led亮一下后熄灭.<br />我的程序如下: <br />void Delay(uint8 x)<br />{ uint8 i;<br /> for(;x>0;x--)<br /> for(i=0;i<50000;i++);<br />}<br />void Waitkey(void)<br />{ uint32 i; <br /> while(1)<br /> { while((IO0PIN&key1)!=0); //等待key1键按下,按下为低电平<br /> <br /> for(i=0;i<50000;i++); //延迟去抖<br /> if((IO0PIN&key1)==0) break; //若按键有效,跳出while循环<br /> <br /> }<br /> while((IO0PIN&key1)==0); //等待key1键松开<br />}<br />int main()<br />{ <br /> PINSEL0=0x00000000;<br /> PINSEL1=0x00000000;<br /> IO0SET=ledcon;<br /> IO0DIR=ledcon;<br /> <br /> <br /> InitUART0(115200);<br /> while(1)<br /> { <br /> Waitkey();<br /> IO0CLR=ledcon;<br /> for(i=0;i<500000;i++);<br /> // Delay(10);<br /> IO0SET=ledcon;<br /> // Delay(10);<br /> for(i=0;i<500000;i++);<br /> <br /> }<br />return(0);<br />}<br />我在main()函数的while中用for(i=0;i<500000;i++);程序没问题,运行正常.<br />但如果我在while中调用Delay(10);实现延迟,程序运行是没有问题,但按下key1键后,led一直亮,不熄灭.我单步执行程序是执行到IO0CLR=ledcon;还是正常的,但接下拉就跳不出Delay(10).<br />是不是我调用函数有问题啊,我很是不明白.<br />希望大家给些建议 |
|