uint8 uc1s=0,ucwork0=0,ucwork1=0,ucwork2=0,ucwork3=0,ucwork4=0,ucwork5=0; uint16 untickcount1=0; uint8 uctickcount2=0;
/**************************************************************************** * 名称:IRQ_Time0() * 功能:定时器0中断服务程序,取反BEEPCON控制口。 * 入口参数:无 * 出口参数:无 ****************************************************************************/ void __irq IRQ_Time0(void) { untickcount1++; if(uctickcount2!=0) uctickcount2--; //定时约1秒 if(untickcount1%50==0) uc1s=1; //与多任务分配有关,可以分配6个任务,没有抢先机制 //任务之间的交互,依靠外部变量 if(untickcount1%WORK0==0)ucwork0=1; if(untickcount1%WORK1==0)ucwork1=1; if(untickcount1%WORK2==0)ucwork2=1; if(untickcount1%WORK3==0)ucwork3=1; if(untickcount1%WORK4==0)ucwork4=1; if(untickcount1%WORK5==0)ucwork5=1;
T0IR = 0x01; // 清除中断标志 VICVectAddr = 0x00; // 通知VIC中断处理结束
} /*************************************** ** 函数名称: delay,外部调用 ** 功能描述: 延时程序,延时量为a*0.02s ** 输 入: 延时量a ** 输 出: 无 ** 全局变量: uctickcount2 ***************************************/ /*void delay(uint8 a) { uctickcount2=a; while(uctickcount2!=0); }*/ /**************************************************************************** * 名称:DelayNS() * 功能:长软件延时 * 入口参数:dly 延时参数,值越大,延时越久 * 出口参数:无 ****************************************************************************/ void delay(uint32 dly) { uint32 i;
for(; dly>0; dly--) for(i=0; i<5000; i++); } |