|
<br />俺先抛块转头,各位有什么好的方法希望不要吝啬,一块来聊聊:<br /><br />无中断PIC程序的书写,比较麻烦的就是时间的调度,俺采用的方法是:在主循环的起始位置,放置Function1ms(),记录TMR0的某一位的变化以起到计时的作用。<br /><br />要求是:FunctionOther()的执行周期必须少于Function1ms()的调度时间,可以通过把程序切割分段,然后分时(如用switch)调用来达到目的;<br /><br />例子如下:<br /><br />#define TMR0_4 (TMR0&0x04)<br />void main(void)<br />{<br /> FunctionMainInitial();//初始化:256分频,4M工作频率<br /> while(1)<br /> {<br /> Function1ms();<br /> FunctionOther();<br /> }<br />void Function1ms(void)<br />{<br /> if(TMR0_4)<br /> {<br /> while(TMR0_4)<br /> {<br /> ;//工作没有到1MS,等待<br /> }<br /> }<br /> else<br /> {<br /> while(!TMR0_4)<br /> {<br /> ;//工作没有到1MS,等待<br /> }<br /> }<br />}<br /><br /> |
|