[求助] 89c51单片机的汇编语言写出pwm的占空比在0~100%变化可控制按键暂停,启动的

janeff   2017-4-29 13:02 楼主
为什么在输出波形时,不能达到两个极值0%和100% 本帖最后由 janeff 于 2017-4-29 13:30 编辑

回复评论 (4)

2推荐 maychang 

占空比为零,PWM输出没有高电平,占空比100%,PWM输出没有低电平。
INTT1:
      CLR  TR1           ;脉宽调节结束
      MOV  OUT,#0FFH     ;结束输出
      RETI
执行CLR  TR1这条指令后输出即为零,但后面又执行了两条指令,这两条指令的执行也需要时间。结果是PWM输出维持了一段时间的低电平,PWM当然不可能做到100%。
同样,定时器0中断里面执行MOV  OUT之后退出中断也需要时间,所以占空比不可能做到零。
点赞  2017-4-29 13:48

2推荐 maychang 

51单片机使用定时器0和定时器1实现PWM输出不能做到很准确,应该使用带硬件PWM输出的单片机。
为何不能很准确?以确定PWM频率的定时器0中断为例:从中断条件成立到执行中断例程,需要若干个机器周期,而倒底需要几个机器周期,则看中断条件成立时正在执行的那条指令以及下一条指令需要几个机器周期。
点赞  2017-4-29 13:39
那在汇编语言中,要怎样才能实现PWM的0%和100%呢?
点赞  2017-4-29 15:06
引用: janeff 发表于 2017-4-29 15:06
那在汇编语言中,要怎样才能实现PWM的0%和100%呢?

我在2楼已经说过,用51单片机定时器实现PWM不能很准确,应该使用带硬件PWM输出的单片机。
点赞  2017-4-29 21:09
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复