为什么在输出波形时,不能达到两个极值0%和100%
本帖最后由 janeff 于 2017-4-29 13:30 编辑
占空比为零,PWM输出没有高电平,占空比100%,PWM输出没有低电平。
INTT1:
CLR TR1 ;脉宽调节结束
MOV OUT,#0FFH ;结束输出
RETI
执行CLR TR1这条指令后输出即为零,但后面又执行了两条指令,这两条指令的执行也需要时间。结果是PWM输出维持了一段时间的低电平,PWM当然不可能做到100%。
同样,定时器0中断里面执行MOV OUT之后退出中断也需要时间,所以占空比不可能做到零。
51单片机使用定时器0和定时器1实现PWM输出不能做到很准确,应该使用带硬件PWM输出的单片机。
为何不能很准确?以确定PWM频率的定时器0中断为例:从中断条件成立到执行中断例程,需要若干个机器周期,而倒底需要几个机器周期,则看中断条件成立时正在执行的那条指令以及下一条指令需要几个机器周期。
那在汇编语言中,要怎样才能实现PWM的0%和100%呢?
我在2楼已经说过,用51单片机定时器实现PWM不能很准确,应该使用带硬件PWM输出的单片机。