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

📄 main.lst

📁 个人学习参考!禁止使用到产品上! 任何人不得公开发布!
💻 LST
📖 第 1 页 / 共 2 页
字号:
 165   2                      {
 166   3                              ComFg=0;                        
 167   3                      }   
 168   2                      TemperatureTime++;
 169   2                      if(TemperatureTime>=10)       //温度补偿程序定时时间---10分钟
 170   2                      {
 171   3                              TemperatureTime=0;
 172   3                              TemperatureTimeFg=1;
 173   3                      }
 174   2                  DataProtectTime++;
 175   2                      if(DataProtectTime>=60)      //数据保护程序每一个小时运行一次
 176   2                      {
 177   3                              DataProtectTime=0;
 178   3                              DataProtectFg=1;
C51 COMPILER V7.10   MAIN                                                                  02/03/2005 10:45:40 PAGE 4   

 179   3                      }
 180   2          } 
 181   1          TH1=0X00;
 182   1          TL1=0X00;
 183   1              ET1=1;
 184   1      }
 185          //串口中断-红外接收--*/
 186          void INT_SERIAL(void) interrupt 4                  
 187          {
 188   1          unsigned char i,j,k,l;      
 189   1              ES=0;
 190   1              j=0;
 191   1              k=0;
 192   1              ComEn=1;
 193   1          InfraredSt=1;
 194   1              l=SBUF;
 195   1              //数据做偶校验
 196   1              for(i=0;i<8;i++)
 197   1          {
 198   2             if(l & 0x80)
 199   2             {                                                                        //bytedata和0x80作AND逻辑运算等于0x80
 200   3                      j++;
 201   3                      if(j==2)
 202   3                  {
 203   4                     j=0;
 204   4                  }                                                   //即表示位7等于1则条件成立
 205   3             }
 206   2             l <<=1;  
 207   2          }                                                                   //禁止串口中断
 208   1          if(j==0)
 209   1          {
 210   2              if(RB8)
 211   2              {
 212   3                  k=0;
 213   3              }
 214   2              else
 215   2              {
 216   3                  k=1;
 217   3              }            
 218   2          }
 219   1          else
 220   1          {
 221   2              if(RB8)
 222   2              {
 223   3                  k=1;
 224   3              }
 225   2          }
 226   1          if(k)
 227   1          {
 228   2              if(ComEn)
 229   2              {
 230   3                  SeriesSt=0;
 231   3                  if(InfraredSt)
 232   3                  {
 233   4                      if(InfraredBufDptr<60)
 234   4                          {
 235   5                          if(InfraredBufDptr==0)                      //数据缓冲区地址指针是否为零
 236   5                          {                                           
 237   6                              if(SBUF==0x68)              //缓冲区的第一个数据是否等于0x68*/
 238   6                              {
 239   7                                  ComDataBuf[0]=SBUF;     //数据保存到缓冲区*/
 240   7                                              InfraredBufDptr++;              //缓冲区地址累加*/
C51 COMPILER V7.10   MAIN                                                                  02/03/2005 10:45:40 PAGE 5   

 241   7                              }
 242   6                              else
 243   6                              {
 244   7                                  InfraredBufDptr=0;
 245   7                              }
 246   6                         }
 247   5                         else
 248   5                         {
 249   6                              ComDataBuf[InfraredBufDptr]=SBUF;       //数据保存到缓冲区*/
 250   6                              InfraredBufDptr++;                                      //缓冲区地址累加*/
 251   6                         }
 252   5                         
 253   5                      }
 254   4                      else
 255   4                      {
 256   5                          InfraredBufDptr=0;
 257   5                      }
 258   4                      if(ComDataBuf[ComDataBuf[9]+11]==0x16)
 259   4                      {
 260   5                                  InfraredBufDptr=0;
 261   5                                  InfraredFg=1;//红外占用数据通道有效
 262   5                                  ComBit=1;
 263   5                      }
 264   4                      else
 265   4                      {
 266   5                          InfraredFg=0;//红外占用数据通道失效标志
 267   5                      }
 268   4                  }           
 269   3              }
 270   2              else
 271   2              {
 272   3                  ComEn=1;
 273   3                  InfraredSt=1;           
 274   3              }     
 275   2          }
 276   1              RI=0;
 277   1              ES=1;                                                                          //接收标志位清零*
 278   1      }
 279          void INT_KBI(void) interrupt 7                                         //键盘中断处理程序*/
 280          {
 281   1          EKBI=0;     
 282   1              KBCON=0;
 283   1              if(~P0&0x30)
 284   1          {
 285   2              LowPowerFg=1;
 286   2          }
 287   1          else
 288   1          {                                                                              //清楚键盘中断标志位
 289   2              KeyTemp=~P0&0x30;                                                          //提取当前中断数值---对应键盘;
 290   2              switch(KeyTemp)                                                            //判断正向还是反向,以及脉冲是否到来/
 291   2              {
 292   3                      case 0x10 :     
 293   3                                              KBMASK=KBMASK&0xef;                                //允许P0.1键盘产生中断,禁止P0.0键盘中断                                     
 294   3                      break;
 295   3                      case 0x20 :
 296   3                                              KBMASK=KBMASK&0xdf;                                //允许P0.0键盘产生中断,禁止P0.1键盘中断     
 297   3                      break;
 298   3                      case 0x30 :                     
 299   3                                              KBMASK=KBMASK&0xcf;                                //禁止键盘中断
 300   3                      break;
 301   3              }
 302   2               PulseParseFg=1;
C51 COMPILER V7.10   MAIN                                                                  02/03/2005 10:45:40 PAGE 6   

 303   2          }
 304   1      }
 305          void CMP_ISR() interrupt 8
 306          {
 307   1            unsigned char data temp,RING,LED; 
 308   1            EA=0; //关中断
 309   1            temp=CMP2&0x02;                                //判断CMP1.1
 310   1            if(temp==0x02)                                 //如果CMP1.1为1(正向输入端大于反向输入端)
 311   1            {
 312   2                 RING=~RING;
 313   2            }
 314   1            else if(temp==0x00)                            //如果CMP1.1为0
 315   1            {
 316   2                 LED=~LED;
 317   2            }
 318   1            CMP2&=0xFE;                                   //清0比较器中断标志位
 319   1            EA=1;                                         //开中断
 320   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    691    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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