/******單片機多任務(wù)模板******/
#include
#define TASK_NUM 2 //任務(wù)數(shù)量
#define FRE(x) 10000/x //定義頻率
unsigned char code s[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//數(shù)碼管0---9
unsigned int task_delay[TASK_NUM];//定義每個任務(wù)所需延時
unsigned int i=0;
void Init_Timer0(){
EA=1;
ET0=1;
TR0=1;
TMOD=0x02;
TH0=TL0=256-100; //12M晶振10000Hz
}
void task0(){ // 任務(wù)函數(shù)
P0=~P0;
}
void task1(){ // 任務(wù)函數(shù)
P1=~P1;
}
void main(){
Init_Timer0();
while(1){
if(task_delay[0]==0){task0();task_delay[0]=FRE(1);} // 掃描任務(wù)函數(shù)
if(task_delay[1]==0){task1();task_delay[1]=FRE(10);} // 掃描任務(wù)函數(shù)
}
}
void timer0()interrupt 1{
for(i=0;i
if(task_delay[i])
--task_delay[i];
}