使用C语言table call , 功能类似switch...case语法。可省rom空间 

void TASK1(void); 

void TASK2(void); 

void TASK3(void); 

void (*const tab[])(void) = {TASK1,TASK2, TASK3}; 

char TabNo; /* 当TabNo=0时,运行TASK1(),当TabNo=1时,运行TASK2(),当TabNo=2时,运行TASK3() */ 

char TaskNo; 

void main(void)



TabNo = 0; 

while(1) 

{

(*tab[TabNo])(); 

TabNo = TabNo>=2?0:TabNo+1; 

/***************************************************** 

帮助 : 

****************************************************** 

上面的(*tab[TabNo])()这段程序跟下面的swutch... case操作是一模一样的结果,使用上方程序可省ROM Size 

switch(TabNo) 



case 0: 

TASK1(); 

break; 

case 1: 

TASK2(); 

break; 

case 2: 

TASK3(); 



****************************************************/ 

}



void TASK1(void)

{

TaskNo=0;



void TASK2(void)

{

TaskNo=1; 



void TASK3(void)

{

TaskNo=2;

  
 PIC单片机 www.pic16.com