这个程序三个关键变量:1.timer1是PWM周期,周期为1000*1us,因为定时中断实现的是1us定时,每次timer1++,然后主程序82行判断是否到达1000,如果到达则完成定时1000*1us,此时要重新清零timer1,同时在这里86行控制引脚PWM=P2.1输出正负电平。2:value确实是控制占空比的变量,正如你所说的现象是呼吸灯,那么这个占空比就不是定值了,需要程序设计占空比的更改,既要有占空比大小的更改,即value值要变化,同时也有方向的控制,即一会儿占空比变大,一会儿变小,用DIR正负来控制增减。3:count是控制value变化速度的,假如我们把value的增减周期和PWM的周期都设置成1000*1us,这个时候呼吸灯就会变化得相对很慢,试想一下每次PWM周期到了,value占空比仅仅增加或者减小1就很不明显了。所以count就是把value更改的时间缩短了,换言之,这样每次PWM周期到了,value占空比更改的数值+/- 10,这样呼吸灯的效果也好看 |