电子产业一站式赋能平台

PCB联盟网

搜索
查看: 2962|回复: 1
收起左侧

51单片机请教大佬!

[复制链接]

568

主题

922

帖子

4783

积分

四级会员

Rank: 4

积分
4783
发表于 2022-12-27 17:41:30 | 显示全部楼层 |阅读模式
51单片机请教大佬!-1.jpg

关于定时器设置初值的问题,这是个pwm呼吸灯的历程,下面红圈里面我如果用注释中的写法灯就会肉眼可见的在闪,好像周期边长了,但我感觉这两个设置方法得到的定时器初值应该是一样的啊,请教各位大佬
51单片机请教大佬!-2.jpg
回复

使用道具 举报

2

主题

849

帖子

722

积分

二级会员

Rank: 2

积分
722
发表于 2022-12-27 17:41:52 | 显示全部楼层
void Timer0_IRQ() interrupt 1
{
TL0 = 0xf7;//设置定时初值
TH0 = 0xff;//设置定时初值
count++;
if(count<Cycle)
{
if(count<=pwm)
LED1=0;
else
LED1=1;
}
else
count=0;
}
void delay_lms(uint n)
{
uint i,j;
for(i=n;i>0;i--)
for(j=550;j>0;j--);
}
void display_pwm()
{
uint i,j;
smg_buf[0]=pwm%10;
smg_buf[1]=pwm/10%10;
smg_buf[2]=pwm/100;
for(i=0;i<(100/3);i++)
{
for(j=0;j<3;j++)
{
P2=smg_wei[j];
P0=smg_duan[smg_buf[j]];
delay_lms(1);
P0=0xFF;
}//消除重影
}
}
void pwm_serve()
{
uint m,k;
for(m=0;m<100;m++)
{
pwm=m;
display_pwm();
}
for(k=98;k>0;k--)
{
pwm=k;
display_pwm();
}
}
void main()
{
Timer0Init();
while(1)
{
pwm_serve();
}
}
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表