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

📄 lx11a.c

📁 一个热水器程序!三星9454单片机
💻 C
📖 第 1 页 / 共 2 页
字号:
//********************************
//产品名称: NEW_KJ09H
//使用MCU: S3F9488
//FOSC = 3.2MHZ
//********************************
//#include "ioS3C9454.h"//
//#include "iobit.h"      //IO端口位操作定义文件
//#include "intrinsics.h"//包含内部函数
//#include "stdio.h"//
//#include "math.h"//
//*************************************************************************
#include "Define1.h"

uchar Key=0;
uchar Biao_Zi=0;

uchar ArchDATA=0x07;
uchar TemperDATA1=0;
uchar Error_LED_DATA=0x02;
uchar SMGDATA2;//数码管第二位特殊处理  有故障E显示

#define Error_Bi_zi                 (Biao_Zi=Biao_Zi|0x01)
#define Ja_re_Bi_zi                 (Biao_Zi=Biao_Zi|0x02)
#define Set_Chao_wen_Bi_zi          (Biao_Zi=Biao_Zi|0x04)
#define Set_LO_diang_Bi_zi          (Biao_Zi=Biao_Zi|0x08)

#define Ok_Bi_zi                    (Biao_Zi=Biao_Zi& ~0x01)
#define No_Ja_re_Bi_zi              (Biao_Zi=Biao_Zi& ~0x02)
#define Clr_Chao_wen_Bi_zi          (Biao_Zi=Biao_Zi& ~0x04)
#define Clr_LO_diang_Bi_zi          (Biao_Zi=Biao_Zi& ~0x08)

#define Test_Biao_Zi                (Biao_Zi&0x01)
#define Test_Ja_re_Biao_Zi          (Biao_Zi&0x02)
#define Test_Chao_wen_Bi_zi         (Biao_Zi&0x04)
#define Test_LO_diang_Bi_zi         (Biao_Zi&0x08)


#define Set_KeyDown   (Key=Key|0x01)
#define On_ONOFFKey   (Key=Key|0x02)
#define Clr_KeyDown   (Key=Key& ~0x01)
#define Off_ONOFFKey  (Key=Key& ~0x02)
#define Test_KeyDown  (Key&0x01)
#define ONOFFKey      (Key&0x02)


#define SMGDATA1  ArchDATA
#define SMGDATATS_Error_E  (TemperDATA1/10)//数码管第二位特殊处理  有故障E显示  SMGDATA2
#define SMGDATA3  (TemperDATA1%10)



#define DECKey 0x01
#define ONOFF 0x02
#define INCKey 0x03


#define Error_LED_Chao_wen  0x01
#define Ok_LED_Ja_re  0x02
#define Error_LED_LO_diang   0x03


#define Error_SMG_Chao_wen  0x1
#define Error_SMG_LO_diang   0x2


  

//**************************************************************************
//========================主程序控制===========================

uchar IRQLed=0x0; 
uchar T0count=0x0;
uchar T0count2=0x0;
uchar T0count3=0x0;
uchar T0count4=0x0;
uchar T0count5=0x0;

uchar XNDlay1=0;
uchar XNDlay2=0;
uchar XNDlay3=0;
uchar XNDlay4=0;
uchar XNDlay5=0;


uchar LOOP1=0x04;
uchar LOOP2_160us=0;
uchar LOOP3_120ms=0;
uchar LOOP4_1s=0;
uchar LOOP5_3s=0;
uchar LOOP6_6s=0;
uchar INT0BZ=0;//INT0中断标志
uchar E2BJ=0;//E2标志
uchar E2=0;//E2返回值
uchar ZJBZ=0;//自检标志
uchar LO=0;//漏电标志
uchar ZJSD=0;//自检闪灯标志

/*
uchar INT1AJ=0x0;
uchar INT1sing=0x00;
*/

//uchar Data=((~0xbe)&0xfe);//=='---0x40';////0//0x06;//1//40;//0x06;//0xca;//0x65;//0x77;9//0x2e;0//0x3;//;0x1f;0xbe;//0x40;//
//uchar Data2=5;
//uchar LEDcount=5;

void main(void)
{
//   uchar INC_key=0x1;  

  //***填充系统SMART OPTION***/
//  uchar buffer = SmartOption[0];
 
  //***初始化过程***// 

  chip_init();


//main_start:
  //***主循环开始***//

  //         LedScan2(DigitCode[0]);
  //         iic_DelayNS2(1);
     

    
      Set_P25; 
      Set_P00;//VG54123复位
      Clr_P23;//蜂鸣器No响!!
 
       


      
  
          
                      
         
  
     while(1)
     { ei;
     
      /*//////////////////Error check!//////////////////////// */
  
    /* 

      Error_Bi_zi;
      
      Clr_Chao_wen_Bi_zi;
      Set_LO_diang_Bi_zi;
     if(XNDlay3==1)
        {
        Set_Chao_wen_Bi_zi;
        Clr_LO_diang_Bi_zi;
        XNDlay3=0;
        }
        
     */   
        
      Error_check();
 
    
      KeyScan();
      TemperDATA1=TempRSET(177);//TempADcon()   
     //TemperDATA1=14;
    
      //Clr_P26;
   /*
     E2=1;
     iic_DelayNS (30); 
     E2=0;
     iic_DelayNS (30); 
    */  
    
    if(XNDlay5==1)//3S zi ji one!
        {XNDlay5=0;
        E2=E2ZJ(2);//E2ZJ(5);//自检高电平时间 短了 自检不到  长了 自检30R电阻发热10
       }//iic_DelayNS (30); //不加延时声音没那么纯!!!!!! 30!!!!!!!!!
           
     
     /*  
         if(ZJSD)//自检闪灯标志3S闪灯!
          {Set_P21;} //LED deng  
         else
          {Clr_P21;}
          
        
  
         if(E2!=0)
        {FMQ(3);}
     
    
        else//指示灯闪
        { //Clr_P26;
         if(XNDlay1)//计时
          {Set_P10;} //LED deng  
         else
         {Clr_P10;}
        }
         
       
     
     
      if(LO==1)
        {Set_P26;//LO diang 长鸣 只有断电源才可以复位
       }//LO=0;
      */  
  /*
      if(LOOP6_6s)//计时
        {Set_P21;} //LED deng  
      else
        {Clr_P21;}
 
   */   
   
     
 /*     
     
        Set_P25;
        iic_DelayNS (1);
        Clr_P25;
        iic_DelayNS (3);
  
  */ 
   /*
       
       Set_P25;
      if(LOOP5)//3S
        {Clr_P25; 
         if(LOOP3)//120MS
        {Set_P25;}
         }
         */ 
      

/*  
      
      if(INT0BZ!=0)
      {Clr_P26;

      Set_P21; //LED deng
      iic_DelayNS (2);
      Clr_P21;//
      iic_DelayNS (2);
      
      Set_P21; //LED deng
      iic_DelayNS (2);
      Clr_P21;//
      iic_DelayNS (2);
      
      Set_P21; //LED deng
      iic_DelayNS (2);
      Clr_P21;//
      iic_DelayNS (2);
     
      Set_P20;//每中断一次 要复位一次VG54123
      INT0BZ=0;
      
      }

*/

   /*
      else
     {
      Set_P26; //蜂鸣器响!!!
      while(LOOP3_120ms);
      Clr_P26;
      while(LOOP4_1s);    
     }
      
   */  
   
   
 /*  
   
      else
     {    
      Clr_P26;
      //LOOP4=0;
      if(LOOP4_1s)//1s
         { Set_P26;
          //LOOP3=0;
           if(LOOP3_120ms)//120MS
             {Clr_P26;} //蜂鸣器响!!!} 
     }}
      
 */   

   /*  if(LOOP4==0)
       {} */ 
       
       
      /*     
       if(LOOP3==0)
          {Set_P26;}
       else
          {Clr_P26;}
      
      iic_DelayNS (10);  
       
        if(LOOP3==0)
          {Set_P26;}
       else
          {Clr_P26;}
      iic_DelayNS (10);  
      */


     /*       
      if(ONOFF==0x00)
      { Set_P22; 
        Set_P10;
        Set_P11;} 
     else     
     {  Clr_P22; 
        Clr_P10;
        Clr_P11;}   
             
          ei; 
     if (IRQLed==0x1)
        {di;
        if((LEDcount<15)&&(LEDcount>0))
          { LedScan2(DigitCode[LEDcount]);//display 0,1,2,3,--f      中断将引起程序只走前两步
          //iic_DelayNS2(1);
          }
          else
          {LEDcount=0;
          LedScan2(DigitCode[LEDcount]);}
          
          IRQLed=0x0;
          ei;}
        */ 
  
                    
}}//  goto  main_start;





float TempRSET(float TempAD)
{     float TempRSET2;
      uchar AA,BB;
      AA=(uchar)(((TempAD*5.00/255.00)*22.00));//137254901960784313725490196078;//
      BB=(uchar)((5.00-(TempAD*5.00/255.00)));//0.0196078143725490196078431372549);//
      //TempRSET2=(float)((uchar)(((TempAD*5.00/255.00)*22.00))/(uchar)((5.00-(TempAD*5.00/255.00))));
      TempRSET2=(float)AA/BB;//((uchar)(((TempAD*5.00/255.00)*22.00))/(uchar)((5.00-(TempAD*5.00/255.00))));
      /*TempRSET2=(char)(((TempAD*5/255)*22)/(5-(TempAD*5/255)));*/
      return (TempRSET2);      
}


void KeyScan(void)
     {uchar TempKey1,TempKey3;//TempKey2,
        // di;可以不禁止中断
       Clr_WatchDog;
       TempKey1=ADcon();
      Delay(4);//iic_DelayNS2(1); //
       /*
       TempKey2=ADcon();
       if(TempKey1!=TempKey2)
       goto Key_back;
       Delay(2);*/
       TempKey3=ADcon();
       if(TempKey1!=TempKey3)
       goto Key_back;
       
       /**********一定要有按键按下和弹起识别标志  不然数据更新太快 看不清************/
       if(TempKey3==0xff)
       {Clr_KeyDown;
       goto Key_back;}
       if(Test_KeyDown)goto Key_back;
       Set_KeyDown;
       E2=1;
       
       
                     
    switch(TempKey3)
     {case 0xff:
           break;
      case DECKey:
           {if(ONOFFKey)
           {ArchDATA--;
           if(ArchDATA>9)ArchDATA=0;
           }
           break;}
      case ONOFF:
        {  if(ONOFFKey)
           {Off_ONOFFKey;
           Clr_P22; 
           Clr_P21;
           Clr_P20; }


           else

⌨️ 快捷键说明

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