⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reshiqi.c

📁 该源程序是合泰46R47单片机做的热水器源程序。
💻 C
📖 第 1 页 / 共 2 页
字号:
	_delay(1);
	Ledstb=0;
	_delay(1);
   	Display1(); 
}
//------------------------------------------------------                 
void Led()
{     
      Led1();
      LedBuf=0b01000100;                                
        Display();
  if(Leddata>=9){Leddata=0;}                  		 
  LedBuf=LEDTAB3[Leddata];
  Display();
switch(Leddata)
     {
        case 0: LedBuf=L1;break;
        case 1: LedBuf=L2;break;
        case 2: LedBuf=L3;break;
        case 3: LedBuf=L4;break;
        case 4: LedBuf=L5;break;
        case 5: LedBuf=L6;break;
        case 6: LedBuf=L7;break;
        case 7: LedBuf=L8;break;
        case 8: LedBuf=L9;break;
     }
       Display1();
        LedBuf=0b00000010;                              
        Display();
        if(work==0){LedBuf=0b10000011;}
        else {LedBuf=0b10001011;}                       
        Display();
        Leddata++;
        Ledstb=1;
}

//------------------------------------------------------BeepCtl
void	BeepControl()
{ 
	if (BeepCnt||k6){BeepCnt--;EnBeep=1;}
	else {EnBeep=0;}
	if(Flag05s4)
	{
	Flag05s4=0;
	if(BeepTimes){BeepTimes--;k6=!k6;}
     else
      {k6=0;}
	}
 
}
//----------------------------------------------------  
 void 	TmrInt()

{ 
  if(Irin)
   {Irbit=1;}
   else{Irbit=0;}
   
   if(Irbit)
   {IrbitBuf++;}
   else
   {IrbitBuf=0;}
   
   if(IrbitBuf>=50)
   {yingdaoFlag=1;}
  
  if(x==1&&Irbit==0&&yingdaoFlag)
    { x=0;
     if(y==0){y=1;b=0;}
     else 
       {
        b++;
        if(b>5&&b<13)
        {
        if(a<4){IrBuf|=0x01;}else {IrBuf&=0xfe;}IrBuf<<=1;
        }
        a=0;
        if(b>=12)
		{y=0;
		if(IrBuf)
		{IrFlag=1;}
		else
		{IrFlag=0;}
		yingdaoFlag=0;}
       }
    }
  else 
 {if(Irbit)
    {x=1;}
  else
    {x=0;}
  if(y==1&&x==1)
    {a++;}
 }

		if(EnBeep){Buzzer=!Buzzer;}
		else {Buzzer=0;}

    if(++TmrCnt>=8){TmrCnt=0;Flag2ms=1;Flag2ms1=1;}
}
//------------------------------------------------------Keycan
void	Keycan()
{  
   if(IrFlag==0)
   {  KeyBuf=0;                                    
		_pac0=1;_pac2=1;_pac3=1;			            
		_pa0=1;_pa2=1;_pa3=1;			                
		_delay(10);     
		if(!_pa0){Key2=1;}
		if(!_pa3){Key3=1;}
		if(!_pa2){Key1=1;}
		_pac0=0;_pac2=0;_pac3=0;}
}
//------------------------------------------------------Keyprocess

void KeyProcess()

{	if (KeyBuf==0)
	{KeyValid=0;
	 KeyCnt=10;
	}
	else
		{if (KeyCnt!=0){KeyCnt--;}
		 else if(KeyValid==0)
		 	{
		 	KeyValid=1;
			if(Key3&&ErrorCode==0)	                                //PowerOff
				{ Rly=!Rly;
				   Buf=!Buf;
				 work=!work;
				BeepCnt=100;
				Time=0;
				k2=0;
				Key2Flag=0;
				reg1=0;
				reg2=0;
				k5=0;
				IrFlag=0;
				}
			if(Key1&&Buf)	                            //Inc
		{ 
             if(Key1Flag==0){Key1Flag=1;}
                else {if(Temp1<30||Temp1>=75){Temp1=30;}
                      else
                  {Temp1+=5;}}
                  k2=0;
                  Key1Flag1=1;
                BeepCnt=100;
                if(reg1==0){Temp2=Temp1;}
                reg1=8;
                IrFlag=0;
		}
			if(Key2&&Buf)	                            //dec
				{
            if(Key2Flag==0){Key2Flag=1;}
            else 
            {
             if(Time>=24){Time=0;}
             else {Time+=1;}
             
            }
            Key2Flag1=1;
			BeepCnt=100;
			if(reg2==0){Time1=Time;}
			reg2=8;
			IrFlag=0;
				}
		 	}
		}
}


//------------------------------------------------------Timecreate
void TimeCreate()
{
if(BeepCnt){BeepCnt--;}
if(++Cnt1==0)
  {
	Flag05s=1;
	Flag05s1=1;
	Flag05s2=1;
	Flag05s3=1;
	Flag05s4=1;
   }
}
//------------------------------------------------------
void Ircontrol()
{

  if(IrBuf&&IrFlag)
  { 
    if(IrBuf==0x08)
      {Key3=1;}
    if(IrBuf==0x04)
    {Key2=1;}
    if(IrBuf==0x10)
      {Key1=1;}
  IrBuf=0;
  }

}
//-----------------------------------------             A/Dsub
void AdSub()
{  _adcr=0b00001000;
	_start=0;_delay(2);_start=1;_delay(2);_start=0;
	while(_eocb){;}
	Adsum=Adsum+_adrh;
	if(++Adcnt>=64){Adcnt=0;Adavr=Adsum/64;Adsum=0;}

}
//------------------------------------------------------A/D
void GetTemperature()
{	 
if(Adavr>=16&&Adavr<206&&Flag05s==1&&reg1==0&&reg2==0)
		{
		Flag05s=0;
		Temp=TempTAB2[Adavr-16];
		DispBuf1=Temp/10;                             
        DispBuf2=Temp%10;
		Key1Flag=0;
		Key1Flag1=1;
		Key2Flag1=1;
		}
}
//------------------------------------------------------xianshi
void   Led1()
{
  if(Buf&&k2==0&&ErrorCode==0)                                          
      {                                               
          L1=LEDTAB1[DispBuf1];                         
          L2=LEDTAB2[DispBuf1];
          L3=LEDTAB1[DispBuf2];
          L4=LEDTAB2[DispBuf2];
      if(TempFlag)
          {
          if(reg2){L5=0x30;L6=0x08;}
          else {L5=0x20;L6=0x09;}
          L8=LEDTAB4[k];
          if(Flag05s2&&k<3){k++;}
          if(k>=3){k=0;}
          if(Flag05s2)
           {
            L7>>=1;
            if(++z==8){z=0;L7=0xF0;}
            Flag05s2=0;
           }
          L9=0x01;
          }
      else
         {if(reg1==0&&reg2==0)
           {L5=0x00;
           L6=0x03;
           L7=0x00;
           L8=0x00;
           L9=0x01;}
           if(Key2Flag)
           {
           L5=0x10;
           L6=0x00;
           }
         }
       }
}

//------------------------------------------------------flash
void Led2()
{
  if(reg1&&Flag05s1==1&&k5==0)
     { Flag05s1=0;
       if(reg2==0)
        {
        if(reg1<6){Key1Flag1=!Key1Flag1;}
         if(Key1Flag1==0){DispBuf1=DispBuf2=11;}
         else 
          {
           Temp=Temp1;
           DispBuf1=Temp/10;                             
           DispBuf2=Temp%10;
           reg1--;
          }
        }
        else
       {Temp1=Temp2;reg1=0;}
      }
   if(reg2&&Flag05s1==1)
       {Flag05s1=0;k5=1;
     if(reg1==0)
      {
      L5=0x10;
        L6=0x00;
         if(reg2<6){Key2Flag1=!Key2Flag1;}
         if(Key2Flag1==0){DispBuf1=DispBuf2=11;}
         else 
          {
           DispBuf1=Time/10;                             
           DispBuf2=Time%10;
           reg2--;
          }
        }
     else
    {Time=Time1;reg2=0;k5=0;}
    L1=LEDTAB1[DispBuf1];
    L2=LEDTAB2[DispBuf1];
    L3=LEDTAB1[DispBuf2];
    L4=LEDTAB2[DispBuf2];   
       }
    }
//------------------------------------------------------dingshixianshi
void   Led3()
{
 if(reg2==0&&Key2Flag&&ErrorCode==0)
 {
 k2=1;
 if(Key1Flag==0)
   {
   DispBuf1=Time/10;
   DispBuf2=Time%10;
   if(TimeF1){L5=0x10;}
   else
   {L5=0;}
   L6=0x00;
   }
 else
 {if(reg1>=6)
  {
  DispBuf1=Temp/10;                             
  DispBuf2=Temp%10;
  L5=0x00;
  L6=0x01;
  }
  
 }
 L1=LEDTAB1[DispBuf1];
 L2=LEDTAB2[DispBuf1];
 L3=LEDTAB1[DispBuf2];
 L4=LEDTAB2[DispBuf2];
 L7=0x00;
 L8=0x00;
 }
}
//------------------------------------------------------dingshi
void dingshi()
{ if(Time>0&&reg2==0)
  {k5=0;
   if(Flag05s3==1)
     {hrl++;TimeF1=!TimeF1;Flag05s3=0;}
   if(hrl==10)
     {hrl=0;hrh+=1;}
   if(hrh==2)
     { 
      Time--;
      hrh=0;
     }
  }
  if(Time==0&&reg2==0)
  {   k2=0;
      Key2Flag=0;
  }

  
}
//------------------------------------------------------baowen
void baowen()
{
if(reg1==0&&reg2==0&&ErrorCode==0&&Time==0)
{
if(TempTAB2[Adavr-16]>=Temp1)
  { if(k4==0){k4=1;BeepTimes=6;}
  TempFlag=0;
  Rly=0;  
  }
else
  {if(TempTAB2[Adavr-16]+3<Temp1)
    {
    TempFlag=1;
    Rly=1;
    k4=0;
    }
  }
}
}
//------------------------------------------------------
void baojing()
{
 if(work&&(TooHigh||ErrorCode))
 {
 Key2Flag=0;
 k2=1;
 Rly=0;
 Buf=0;
 
 if(Flag05s1)
 {
 Error=!Error;
 Flag05s1=0;
 }
 if(Error)
 {
    DispBuf1=10;
    if(TooHigh)
    {DispBuf2=1;}
    else
    {DispBuf2=2;}
 L5=0xc0;
 }
 else
 {
  DispBuf1=DispBuf2=11;
  L5=0x80;
 }
 L1=LEDTAB1[DispBuf1];
 L2=LEDTAB2[DispBuf1];
 L3=LEDTAB1[DispBuf2];
 L4=LEDTAB2[DispBuf2];
 L6=0;
 L7=0;
 L8=0;
 L9=0;
 }
}
//------------------------------------------------------
void ErrorDetect()
{
if((Adavr<=3||Adavr>253)&&work){if(ErrCnt!=0){ErrCnt--;}}
else{ErrCnt=120;}

if(ErrCnt==0&&ErrorCode==0)
 {ErrorCode=1;BeepTimes=10;}

if(Temp>=90&&work){if(TooHighCnt!=0){TooHighCnt--;}}
else { TooHighCnt=255;}

if(TooHighCnt==0&&ErrorCode==0)
  {TooHigh=1;
  ErrorCode=1;
  BeepTimes=10;}
  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -