做16对(16个计时器R_x、16个起动标记位B_x,16个计时常量寄存器C_x,x=1-16)+1个计时器,16对是为16路置1服务的,1个是周期计时器。
当T0中断时,做如下工作:
周期计时器:计满后(例如50ms),将16路输出清0,并复位16个计时器R_x=0,并起动这16个计时器B_X=1,同时将自已复位再计。
16路置1计时器:当B_X=1时,R_x+1计数;当B_X=0时,R_x不计数;当R_x=C_x时,将第X路输出置1,并清B_X=0。
如此只要在主程序中,将16个C_x付值(例0-50ms),16路PWM就OK了。 |