找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

求助!用51单片机计时器产生方波,可是改变不了占空比。

查看数: 2004 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-6-11 20:00

正文摘要:

用C语言实现方波占空比的改变,占空比有5挡,循环5次,每次100ms,比如在x=3时,P1口先高电平300ms,然后低电平200ms。用外部中断0让x+1,外部中断x-1。可是,仿真时无论如何占空比都是1:1,就是高电平和低电平的时 ...

回复

ID:541189 发表于 2019-6-12 16:44
好像没有外部中断触发源,怎么触发中断???
ID:207421 发表于 2019-6-12 14:24
你这是不了解什么叫占空比吧, 百度一下吧, 多看看别人怎么写的
ID:332444 发表于 2019-6-12 09:10
ID:123289 发表于 2019-6-12 08:54
本帖最后由 yzwzfyz 于 2019-6-13 08:22 编辑

1、用定时器做一个1T中断。
2、设置一个周期寄存器C,假设你需要的周期是100T,你就让C=100。
3、设置一个占空比寄存器P,假设你需要的占空比是70,你就让P=70。
关键点(方案):
定时器每次中断后将C-1,如果P<>0,再将P-1,否则P不动!
1、当C-1=0时,让IO口置1,同时将C复成100、将P复成70;否则不处理。
2、当P-1=0时,让IO口清0;否则不处理。
这样IO口的输出就如你所愿了。

更高级一点做成活的。
再增设两个寄存器M,N,将程序中的100用M替代、70用N替代。

这样你只要改变M、N的值就可以任意改变周期与占空比了。而且随时改变!不过要保证M>N,这很容易吧。

关键不是看你的程序,而是看你的构思!你的程序有什么看头。
如果你能理解并认为我的方案可行,你就试着写写程序。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表