51单片机咋样产生占空比,频率可变的PWM波

voidtimer0()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;t++;if(t==a){t=0;p... void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t==a)
{
t=0;
pwm=~pwm;
}
}
这是控制周期的,你帮我看看有什么问题吗
void timer1() interrupt 1
{
init1();
i++;
if(i==5000)
{
i=0;
j++;
j=j%100;
}
if(j<b)
{pwm=1;}
else
{pwm=0;}
}这是控制占空比的,再帮我看看
展开
 我来答
wjk_31057
2012-07-16 · TA获得超过579个赞
知道小有建树答主
回答量:139
采纳率:90%
帮助的人:21.1万
展开全部
就看你用的什么芯片了,看你也是新手,用的是51吧 ?
51的话 直接修改定时中断的定时时间就可以改变频率,
修改高电平的定时时间,就能改变 占空比。
-

ARM的话--直接修改匹配0的值 就能改变PWM频率(MR0),修改其他匹配就能改变占空比,
毕竟在ARM单边极性匹配中断时候,第一次复位时候,总是以高电平起始,会自动拉高!

希望回答能给你点帮助,
不过你问的问题不够仔细,都不知道你想做什么,所以也不知道如何回答的好!
追问
按键控制。你能帮我看看我的程序有什么问题吗*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?INIT0?TEXT1
*** WARNING L5: CODE SPACE MEMORY OVERLAP
FROM: 000BH
TO: 000DH
总显示有两个警告,程序烧进去么有反应,总是高电平。。。
北京晶宇兴科技
2020-02-18 广告
选择晶振,应综合考虑多方面因素。这里分享一些小经验,希望对你有所帮助。晶体振荡器被广泛应用到军、民用通信电台,微波通信设备,程控电话交换机,无线电综合测试仪,BP机、移动电话发射台,高档频率计数器、GPS、卫星通信、遥控移动设备等。它有多种... 点击进入详情页
本回答由北京晶宇兴科技提供
丶旮旯旭
2012-07-16 · TA获得超过177个赞
知道小有建树答主
回答量:125
采纳率:0%
帮助的人:90.6万
展开全部
看了下你的控制周期的函数,pwm是周期还是占空比?
只需要一个定时器就可以了

void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(ZQ)// 周期
{
ZQ--;
if(ZKB)//占空比
{
ZKB--;
IO = 1;//控制占空比的单片机输出口
}
else IO = 0;
}
else
{
ZQ=100;//如果你需要ZQ和ZKB可调可以定义一个变量a,b;ZQ=a;ZKB=b;
ZKB=30;//注意ZKB要小于ZQ
}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式