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