这时程序的缺陷 (bug) 导致的,
看从亮变暗的过程. 主程序执行 PWM_ON--;
定时中断周期性地检测 (count==PWM_ON) 的条件.
如果 上一次中断时, 正好 count = PWM_ON-1, 下一次中断时, count 加了一, 但如果在两次中断之间, 执行了一次 PWM_ON--; 那么就漏掉了一次 (count==PWM_ON) 的条件, 于是 LED = 0; 漏掉一次的执行机会, 结果就闪了一下.
可见这个判断方式是有缺陷的, 另外这里还漏掉了 count =0 时的判断机会, 导致 PWM_ON =0 时会常亮!
楼主写程序, 可要好好注意这些细节哪!
|