求解,51单片机如何输出可调占空比的pwm信号

#include<reg51.h>sbitpwm=P1^1;//输出端口unsignedinta=0.8;//设置占空比voidInit(void)//初始化定时器{TM... #include <reg51.h>

sbit pwm=P1^1; //输出端口
unsigned int a=0.8; //设置占空比

void Init(void) //初始化定时器
{
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
TR0=1;
}

main()
{
Init();
pwm=1;
while(1);
}

void Timer_0(void) interrupt 1 //定时器设置
{
if(pwm==1)
{
pwm=0; //设置暗的时间
TH0=(65536-1000*a)/256;
TL0=(65536-1000*a)%256;
}
else
{
pwm=1; //设置亮的时间
TH0=(65536-1000*(1-a))/256;
TL0=(65536-1000*(1-a))%256;
}
}

这个是我写的程序,请大神帮忙看看,主要是想通过调节变量a来更改占空比调节led亮度,不过现在写进去单片机内后亮度调节变暗了一半,而且led灯会有明显的闪烁,不知道怎么解决。
展开
 我来答
linnjing
2016-03-29 · TA获得超过2632个赞
知道大有可为答主
回答量:1230
采纳率:91%
帮助的人:517万
展开全部
1、不要在中断程序中做复杂计算,事先计算好,在中断里面只做赋值。
2、a是整型,不能给0.8这种值。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式