找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1251|回复: 2
打印 上一主题 下一主题
收起左侧

C51单片机用俩个定时器来控制呼吸灯,代码写出来后波形不对。求解!

[复制链接]
跳转到指定楼层
楼主
#include"reg51.h"
typedef unsigned  int u16;
sbit PMW=P1^0;
u16 m=20;
u16 c=1;
unsigned Time_InitialTH(u16 n)
{
u16 x,y;
x=n*1000/12;
y=(65536-x)/256;
return y;
}
unsigned Time_InitialTL(u16 n)
{
u16 x,y;
x=n*1000/12;
y=(65536-x)%256;
return y;
}
void Time1_Init()
{
TMOD|=0x10;
TH1=Time_InitialTH(100-m);
TL1=Time_InitialTL(100-m);
ET1=1;
EA=1;
TR1=1;
}
void Time1() interrupt 3
{
PMW=0;
}
void Time0_Init()
{
TMOD|=0x01;
TH0=Time_InitialTH(100);
TL0=Time_InitialTL(100);
ET0=1;
EA=1;
TR0=1;
}
void Time0() interrupt 1
{
TH0=Time_InitialTH(100);
TL0=Time_InitialTL(100);
Time1_Init();
PMW=1;
if(c==1)
{
  m++;
  if(m>=90) {c=0;}
}
if(c==0)
{
  m--;
  if(m<=20) {c=1;}
}
}

void main()
{

Time0_Init();
while(1);

}


波形图片附上,占空比不对,而且周期性的一条高电平是怎么回是???



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:235200 发表于 2019-10-28 21:08 | 只看该作者
定时计数器1初始化程序Time1_Init()未执行,其中断程序未像定时计数器0一样重新装载初始值
回复

使用道具 举报

板凳
ID:140489 发表于 2019-11-4 15:12 | 只看该作者
定时器1的初始化没调用
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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