找回密码
 立即注册

QQ登录

只需一步,快速开始

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

为什么我如果在一个定时器上用两个中断控制时间的时候,在温度高于27和低于27时,...

[复制链接]
跳转到指定楼层
楼主
为什么我如果在一个定时器上用两个中断控制时间的时候,在温度高于27和低于27时,流水灯间隔闪烁的时间一样,都是间隔了1秒?

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit DS=P2^2;            
uint temp;              
uchar  mm;            
sbit dula=P2^6;
sbit wela=P2^7;

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char code table1[]={ 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
                        0x87,0xff,0xef};

void delay(uint count)      
{
  uint i;
  while(count)
  {
    i=200;
    while(i>0)
    i--;
    count--;
  }
}
void dsreset(void)        
{
  uint i;
  DS=0;
  i=103;
  while(i>0)i--;
  DS=1;
  i=4;
  while(i>0)i--;
}

bit tmpreadbit(void)      
{
   uint i;
   bit dat;
   DS=0;i++;           
   DS=1;i++;i++;
   dat=DS;
   i=8;while(i>0)i--;
   return (dat);
}

uchar tmpread(void)   
{
  uchar i,j,dat;
  dat=0;
  for(i=1;i<=8;i++)
  {
    j=tmpreadbit();
    dat=(j<<7)|(dat>>1);   
  }
  return(dat);
}

void tmpwritebyte(uchar dat)   
{
  uint i;
  uchar j;
  bit testb;
  for(j=1;j<=8;j++)
  {
    testb=dat&0x01;
    dat=dat>>1;
    if(testb)      
    {
      DS=0;
      i++;i++;
      DS=1;
      i=8;while(i>0)i--;
    }
    else
    {
      DS=0;        
      i=8;while(i>0)i--;
      DS=1;
      i++;i++;
    }

  }
}

void tmpchange(void)   
{
  dsreset();
  delay(1);
  tmpwritebyte(0xcc);   
  tmpwritebyte(0x44);   
}

uint tmp()               
{
  float temp;
  uchar  a,b;
   

  dsreset();
  delay(1);
  tmpwritebyte(0xcc);
  tmpwritebyte(0xbe);
   
  
  a=tmpread();
  b=tmpread();
//  temp=b;
//  temp<<=8;              
//  temp=temp|a;
//  tt=temp*0.0625;
//   temp=tt*10+0.5;

   
    temp=((b<<8)|a)*(0.0625*10);
     return temp;
}

void readrom()           
{
  uchar sn1,sn2;
  dsreset();
  delay(1);
  tmpwritebyte(0x33);
  sn1=tmpread();
  sn2=tmpread();
}


void delay10ms(uint z )            
  {
    uchar a,b;
    for(a=10;a>0;a--)
      for(b=60;b>0;b--);
   }

void display(uint temp)            
{
   uchar A1,A2,A2t,A3;
   A1=temp/100;
   A2t=temp%100;
   A2=A2t/10;
   A3=A2t%10;
   dula=0;
   P0=table[A1];         
   dula=1;
   dula=0;

   wela=0;
   P0=0xfe;
   wela=1;
   wela=0;
   delay(1);

   dula=0;
   P0=table1[A2];         
   dula=1;
   dula=0;

   wela=0;
   P0=0xfd;
   wela=1;
   wela=0;
   delay(1);

   P0=table[A3];         
   dula=1;
   dula=0;

   P0=0xfb;
   wela=1;
   wela=0;
   delay(1);
}
void xianshi( )
{
        dula=1;
     P0=table[3];
     dula=0;
     P0=0xff;
     wela=1;
     P0=0xf7;
     wela=0;
     delay10ms(1);
     dula=1;
     P0=table1[0];
     dula=0;
     P0=0xff;
     wela=1;
     P0=0xef;
     wela=0;
     delay10ms(1);
     dula=1;
     P0=table[0];
     dula=0;
     P0=0xff;
     wela=1;
     P0=0xdf;
     wela=0;
     delay10ms(1);   
}
void deal()
{
//  if(mm==20)
//  {
//   
//    mm=0;
    if(temp<270)
     {  
        if(mm==20)
       {
   
         mm=0;
         P1=~P1;
         
         }
        }
     else  
      {
         
        if(mm==60)
        {
   
         mm=0;
         P1=~P1;
         
         }
        }
        
//     else
//      {
//       P1=0xff;}
      }
     


void main()
{  uchar a;
   TMOD=0x01;
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256;
   TR0=1;
   EA=1;
   ET0=1;
   do
  {
    tmpchange();
    for(a=10;a>0;a--)
      {   
          display(tmp());
        xianshi( );
        deal();
         
      }
                     
  }    while(1);
  }
   
void time0() interrupt 1
{
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256;
   mm++;
   
   
//   if(temp<300)
//  {
//   
//    if(mm==20)
//     {
//       mm=0;
//       P1=~P1}

////          }  
   
   
  }  
  

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

使用道具 举报

沙发
ID:7485 发表于 2017-4-3 20:52 | 只看该作者
你的文字叙述要让别人能够明白你的意思才行。
回复

使用道具 举报

板凳
ID:185903 发表于 2017-4-3 23:44 | 只看该作者
参观参观
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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