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