两个文件:定时器函数文件A,应用文件B<br />定时器0设置为每秒中断。<br />在应用文件中定义了一个全局变量BOOL型的FLAG。在定时器文件中extern声明。<br />定时器A文件:<br />extern bool flag;<br />static void __irq ISR_Timer0(void)<br />{<br />if(sec_time_auto==0)<br />{<br /> flag=0;<br />}<br />if(flag)<br />{ <br /> Show_TimeCutdown(Countdown_Hour,Countdown_Min,Countdown_Sec); <br />}<br /> sec_time_auto--;<br />}<br />应用B文件:<br />bool flag;<br />test()<br />{<br /> sec_time_auto=10;<br /> flag=1;<br /> while(sec_time_auto>0)<br /> {<br /> <br /> idx=getkey();<br /> if(idx==Key_Enter) //按ENTER键返回1-2<br /> { <br /> flag=0; <br /> break; <br /> } <br /> }<br />}<br /><br />当flag=1的时候显示。flag=0的时候不显示。<br />当倒计时没有到0的时候,我按下ENTER键,按道理应该flag=0,显示停止。但实际上flag并没有=0,而是一个错误的大于0的值,显示并没有停止。只有当倒计时走完,sec_time_auto=0后,flag才等于0。<br /><br />但当我把FLAG定义在定时器文件中,而在应用文件中extern的话,FLAG的值却没有发生错误。<br />请问:是什么原因呢?谢谢! |
|