打印

求救:谁能告诉我如何用80C51实现PWM!

[复制链接]
2356|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
弟儿|  楼主 | 2008-12-12 20:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
原野之狼| | 2008-12-12 20:40 | 只看该作者

假设做一个这样的PWM

分度为1MS,周期是1S的PWM.

设全局变量
t 累加计数器
th 正脉宽

开一个1MS定时器,
中断服务程序里t++,
若:t>th则在PWM管脚输出高电平
否则:在PWM管脚输出低电平

使用特权

评论回复
板凳
ayb_ice| | 2008-12-12 20:50 | 只看该作者

建议先搞懂什么是PWM

使用特权

评论回复
地板
弟儿|  楼主 | 2008-12-12 20:52 | 只看该作者

再次求救

我懂什么是PWM,但是如何用汇编语言实现哪?

使用特权

评论回复
5
原野之狼| | 2008-12-12 20:55 | 只看该作者

我倒,有这样请教问题的么?

使用特权

评论回复
6
弟儿|  楼主 | 2008-12-12 20:57 | 只看该作者

抱歉

我没学过C语言,我只学过汇编语言!

使用特权

评论回复
7
lyjian| | 2008-12-12 21:23 | 只看该作者

楼主是懂PWM这三个字母的意思而已吧

懂什么是PWM的话就不用这样问了

使用特权

评论回复
8
兴隆| | 2008-12-12 21:35 | 只看该作者

假设你要做一个8位分辨率的PWM.精度1/256

1,设定一个定时中断时钟。
2,RAM中定义2个单元,假设为X和Y,这里X作为256计数器用,Y就是你要输出的PWM值。使用时把输出的PWM值(0-255)装入Y单元就好。
3,程序中,定时中断里,X加一,
              X<Y,引脚输出1.
              X>=Y引脚输出0. 
          中断返回。
4,同样道理可以做16位的PWM。

使用特权

评论回复
9
原野之狼| | 2008-12-12 21:39 | 只看该作者

建议楼主先去阅读一些程序

不管是汇编写的还是C写的,
仔细分析每一条语句的作用,
然后在此基础上修改并调试。
积累多了自然就知道该如何用语言去实现算法。

使用特权

评论回复
10
平常人| | 2008-12-12 21:53 | 只看该作者

PWM = Please Waive Me

Please Wake Me up.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

24

帖子

0

粉丝