这个中断程序 哪错了?

2019-07-15 09:31发布

void T0_time()interrupt 1
{
   TH0=(65536-9174)/256;
   TL0=(65536-9174)%256;
   num++;
   if (led == 0&& num== dc)
   {
       led = 1;
       num=0;
   }
   else if(led==1 && num== dcs)
   {
       num=0;
       led = 0;
   }
}




完整程序:
#include <reg52.h>
#define u8 unsigned char
#define u16 unsigned int
#define show P1//数码显示管
#define ad P2;//AD转换输出
sbit en1=P0^0;//锁存器1
sbit en2=P0^1;//锁存器2   
u16 shi,ge,shifen,baifen;
u8 code xianshi[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f ,
                   0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//共阴数码管
u8 time=25;//数码管显示 延时时间
sbit led=P3^4;//LED灯
u8 min=30;//下限
u8 max=50;//上限
u8 num;//定时器计时
u8 dc;//0 占空比
u8 dcs;// 1 占空比
void delay(u16 a)//延时程序 延时a ms
{
  u16 i,j;
  for(i=a;i>0;i--)
      for(j=110;j>0;j--);
}
void display(u16 shi,u16 ge,u16 shifen,u16 baifen)//数码管温度显示
{  
  en2=1;                 //段选
  show=xianshi[shi];
  en2=0;
  show=0xff;             //消影
  en1=1;                 //位选
  show=0x7f;
  en1=0;
  delay(time);
  en2=1;
  show=xianshi[ge+10];    //带小数点
  en2=0;
  show=0xff;
  en1=1;
  show=0xbf;
  en1=0;
  delay(time);
  
  en2=1;
  show=xianshi[shifen];
  en2=0;
  show=0xff;
  en1=1;
  show=0xdf;
  en1=0;
  delay(time);
  en2=1;
  show=xianshi[baifen];
  en2=0;
  show=0xff;
  en1=1;
  show=0xef;
  en1=0;
  delay(time);   
}
void inital()
{
TMOD |= 0x01;
TH0=(65536-9174)/256;
TL0=(65536-9174)%256;
EA=1;
ET0=1;
TR0=1;
}
void Close()
{
   TR0 = 0; //停止定时器
   ET0 = 0; //禁止中断
}
void main()
{
long int t;
long int tt;
while(1)
{
t=111;  
shi=t*10000/256/1000;
ge=((t*10000/256)%1000)/100;
shifen=(((t*10000/256)%1000)%100)/10;
baifen=(((t*10000/256)%1000)%100)%10;
tt=100*t/256;
dc=100*(max-t)/(max-min);
dcs=100-dc;
display(shi, ge, shifen, baifen);
if(tt<min)
{
  Close();
  led=0;
}
else if(tt>max)
{
  Close();
  led=1;
}
else if(min<=tt<=max)
{
  inital();
}
}

void T0_time()interrupt 1
{
   TH0=(65536-9174)/256;
   TL0=(65536-9174)%256;
   num++;
   if (led == 0&& num== dc)
   {
       led = 1;
       num=0;
   }
   else if(led==1 && num== dcs)
   {
       num=0;
       led = 0;
   }
}


Y3WULYA01368%MVY()E%GX4.png
0条回答

一周热门 更多>