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

📄 x20gdnzh1.c

📁 51的典型应用于传感器程序编程架构
💻 C
📖 第 1 页 / 共 5 页
字号:
                         12,     //19     //100
                         13,     //20     //105
                         14,     //21     //110
                         15,     //22     //115
                         17,     //23     //120
                         18,     //24     //125
                         19,     //25     //130
                         21,     //26     //135
                         22,     //27     //140
                         24,     //28     //145
                         25,     //29     //150
                         27,     //30     //155
                         28,     //31     //160
                         30,     //32     //165
                         31,     //33     //170
                         32,     //34     //175
                         34,     //35     //180
                         36,     //36     //185
                        };
//****************************************************
//看门狗 1.4s
//****************************************************
void dog(void)
{
 EECS=0;
 _nop_();
 EECS=1;
}
//****************************************************
//特殊功能寄存器初始化
//****************************************************
void rest(void)
{
 IP=0x02;//ET0,hige IP
 TMOD=0x11;//T0 = MOD1 timer   T1 = MOD1 timer
 SCON=0;
 PCON=0;
 TCON=0x55;
 RCAP2H=0xfc;
 RCAP2L=0x66;
 T2MOD=0xfc;
 T2CON=0x04;//00000100B---TF2 EXF2 BCLK TCLK EXEN2 TR2 C/T2 CP/RL2
 //DN=1;//低浓工作
 GN=0;//高浓不工作
 BJ=0;//不进行报警
 DD=0;//不断电
 //P0_7=0;
 IE=0xa6;//10100110B---EA XX ET2 ES ET1 EX1 ET0 EX0
}
//*******************************************************************
//定时器0频率输出中断
//*******************************************************************
void TIM0(void) interrupt 1      //TIME0频率输出
{
 TH0=timerh;TL0=timerl;
 if(fp) {                        //fp是分频的标志
          if(++countt>=64) {
                             P0_7=!P0_7;
                             countt=0;
                           }
        }
 else   {
          P0_7=!P0_7;
        }

}
//*************************************************
//遥控器输入中断+定时器1
//*************************************************
void INTT1(void) interrupt 2     //外部中断处理遥控器输入
{
 unsigned char countx;           //累加记数
  union x  {                     //公用体处理遥控器
             unsigned long int d;
             unsigned char a[4];
             unsigned int k;
           }z;
 z.a[0]=TH1;
 z.a[1]=TL1;
 TL1=0;TH1=0;  //去定时时间,清定时器
 if((z.k>=768)&&(1200>=z.k))       {flag=0;flag1=0;}//"0"
 else if((z.k>=1536)&&(2400>=z.k)) {flag=1;flag1=0;}//"1"
 else                              flag1=1;
 if(flag1){
            TL1=0;TH1=0;
          }        //flag=1 not "1" and "0"
 else     {
            YK<<=1;
            if(flag) YK++;
            flag=0;
            z.d=YK;
            for(countx=0;countx<=16;countx++){
                                              z.d<<=1;
                                              if(z.a[0]==0xE2){
                                                                YKCODE=z.a[1];
                                                                enyk=1;
                                                              }//找到功能码退出
                                              if(enyk){
                                                       YK=0;TL1=0;TH1=0;
                                                       break;
                                                      }
                                             }
          }
}
//-----------------------------------------------
//显示和定时中断
void TIM2(void) interrupt 5
{
 unsigned char i;
 if(alarmflag&&(alarmsec++>=500)){alarmsec=0;BJ=!BJ;}
 if(sec++>=400){second1=1;//second2=1;second3=1;second4=1;
                sec=0;}//0.4秒
 if(min++>=60000){minute=1;gnflag=0;led1c=0;led1sc=0;tbuffer1=0;}//1分到不允许功能码显示不闪烁
 if(min6++>=180000){minute6=1;min6=0;}//6分
 P1=0xff;//清空显示
  switch(dispcount)
                  {
                   case 0:
                          {
                           dispcount++;
                           if(!led1c)i=0xFF; //不显示功能码
                           else              //显示功能码
                               {
                                if(led1sc)  //功能码允许闪烁显示
                                          {
                                           if(second1)//0.5s到
                                                     {
                                                      second1=0;//清标志
                                                      led1s=!led1s;
                                                     }
                                           else
                                               {
                                                if(led1s) {i=table[tbuffer1];if(led1p)i&=0x7F;}//第一位小数点显示 //闪烁不显示
                                                else  i=0xFF;  //功能码单元
                                                P1=i;
                                               }
                                          }
                                else
                                    {
                                     P1=table[tbuffer1];//功能码不允许闪烁显示
                                     //P1=i;
                                     if(led1p)P1_7=0;//P1&=0x7F;//第一位小数点显示
                                    }
                               }
                           P2_0=0;P2_1=1;P2_2=1;P2_3=1;
                           break;
                          }

                   case 1:
                         {
                           dispcount++;
                           if(led2c)i=0xFF; //不显示功能码
                           else              //显示功能码
                               {
                                if(led2sc)  //功能码允许闪烁显示
                                          {
                                           if(second2)//0.5s到
                                                     {
                                                      //second2=0;//清标志
                                                      //led2s=!led2s;
                                                     }
                                           else
                                               {
                                                if(led2s) {i=table[tbuffer2];if(led2p)i&=0x7F;}//第二位小数点显示//闪烁不显示
                                                else  i=0xFF;  //功能码单元
                                                P1=i;
                                               }
                                          }
                                else
                                    {
                                     P1=table[tbuffer2];//功能码不允许闪烁显示
                                     //P1=i;
                                     if(led2p)P1_7=0;//P1&=0x7F;//第二位小数点显示
                                    }
                               }
                           P2_0=1;P2_1=0;P2_2=1;P2_3=1;
                           break;
                          }

                  case 2:
                         {
                           dispcount++;
                           if(led3c)P1=0xFF; //不显示功能码
                           else              //显示功能码
                               {
                                if(led3sc)  //功能码允许闪烁显示
                                          {
                                           if(second3)//0.5s到
                                                     {
                                                      //second3=0;//清标志
                                                      ///led3s=!led3s;
                                                     }
                                           else
                                               {
                                                if(led3s) {i=table[tbuffer3];if(led3p)i&=0x7F;}//第三位小数点显示 //闪烁不显示
                                                else  i=0xFF;  //功能码单元
                                                P1=i;
                                               }
                                          }
                                else
                                    {
                                     P1=table[tbuffer3];//功能码不允许闪烁显示
                                     //P1=i;
                                     if(led3p)P1_7=0;//P1&=0x7F;//第三位小数点显示
                                    }
                               }
                           P2_0=1;P2_1=1;P2_3=1;P2_2=0;
                           break;
                          }

                   case 3:
                          {
                           dispcount=0;
                           if(led4c)i=0xFF; //不显示功能码
                           else              //显示功能码
                               {
                                if(led4sc)  //功能码允许闪烁显示
                                          {
                                           if(second4)//0.5s到
                                                     {
                                                      //second4=0;//清标志
                                                      //led4s=!led4s;
                                                     }
                                           else
                                               {
                                                if(led4s) {i=table[tbuffer4];if(led4p)i&=0x7F;}//第四位小数点显示 //闪烁不显示
                                                else  i=0xFF;  //功能码单元
                                                P1=i;
                                               }
                                          }
                                else
                                    {
                                     P1=table[tbuffer4];//功能码不允许闪烁显示
                                     //P1=i;
                                     if(led4p)P1_7=0;//P1&=0x7F;//第四位小数点显示
                                    }
                               }
                           P2_0=1;P2_1=1;P2_2=1;P2_3=0;
                           break;
                           }

                   default:
                           {
                            P2_0=1;P2_1=1;P2_2=1;P2_3=1;
                            break;
                           }

⌨️ 快捷键说明

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