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