标题: C51单片机用俩个定时器来控制呼吸灯,代码写出来后波形不对。求解! [打印本页]

作者: 龙门国主    时间: 2019-10-28 19:21
标题: 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);

}


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




作者: csmyldl    时间: 2019-10-28 21:08
定时计数器1初始化程序Time1_Init()未执行,其中断程序未像定时计数器0一样重新装载初始值
作者: lids    时间: 2019-11-4 15:12
定时器1的初始化没调用




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1