注意:
①TCMPBn的值用于脉冲宽度调制(PWM)。 当递减计数器值与定时器控制逻辑中比较寄存器的值匹配时,定时器控制逻辑将更改输出电平。 因此,比较寄存器确定PWM输出的开启时间(或关闭时间)。此时不会产生定时器中断,只会使得输出电平发生反转。
②每个定时器都有自己的16位递减计数器,由定时器时钟驱动。 当递减计数器达到零时,将产生定时器中断请求,以通知CPU定时器操作已完成。当计时器计数器达到零时,相应的TCNTBn的值将自动加载到递减计数器中,以继续进行下一个操作。 但是,如果定时器停止运行(例如,通过在定时器运行模式期间将TCONn的定时器使能位清零),则不会将TCNTBn的值重新加载到计数器中。因此,此时当递减计数器减小到0时,可以产生定时器中断。
1、 定时器具有TCNTBn,TCNTn,TCMPBn和TCMPn。
2、当定时器到0时,将TCNTBn和TCMPBn装入TCNTn和TCMPn。
3、当TCNTn到0时,中断 如果中断使能,将发生请求。
为了使如果再添加中断不再修改中断服务程序,可以采用函数指针的方式注册各个中断处理函数,其格式如下:
中断注册函数:
将需要注册的中断号、中断处理函数放入中断数组中,并使能相应位的中断位。当调用中断处理函数时,直接从函数数组中调用相应的函数。