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

📄 hardware.lst

📁 该程序完成了c8051外围电路的驱动和串口协议的编写。希望能给大家学习51单片机带来帮助
💻 LST
📖 第 1 页 / 共 5 页
字号:
 220   2          }
 221   1              if (uchChannel == 2)
 222   1              {
 223   2              EA = 0;
 224   2                      uchTemp = P4;
 225   2                      uchTemp &= 0xf9;
 226   2                      uchTemp |= 0x01;           //0 0 1
 227   2                      P4 = uchTemp;
 228   2                      EA = 1;
 229   2              }
 230   1      }
 231          
 232          //-----------------------------------------------------------------
 233          //函数名称:void SetAlertIOControl(unsigned char uchChannel)
 234          //功    能:通过状态判断得到P4.2、P4.1和P4.0端口的状态供三冗余使用
 235          //输入参数:通道号
 236          //返    回:无
 237          //完成日期:4/12/2007
 238          //-----------------------------------------------------------------
C51 COMPILER V7.10   HARDWARE                                                              09/18/2008 14:09:27 PAGE 5   

 239          void SetAlertIOControl(unsigned char uchChannel)
 240          {
 241   1              unsigned char uchTemp; 
 242   1              if (uchChannel == 1)
 243   1          {
 244   2                      EA = 0;
 245   2                      uchTemp = P4;
 246   2                      uchTemp &= 0xfc;         //1 0 0
 247   2                      uchTemp |= 0x04;
 248   2                      P4 = uchTemp;
 249   2                      EA = 1;
 250   2          }
 251   1          if (uchChannel == 2)
 252   1          {
 253   2              EA = 0;
 254   2                      uchTemp = P4;
 255   2                      uchTemp &= 0xfd;
 256   2                      uchTemp |= 0x05;   //1 0 1
 257   2                      P4 = uchTemp;
 258   2                      EA = 1;
 259   2          }
 260   1      }
 261          
 262          //-----------------------------------------------------------------
 263          //函数名称:void SetDangerIOControl(unsigned char uchChannel)
 264          //功    能:通过状态判断得到P4.2、P4.1和P4.0端口的状态供三冗余使用
 265          //输入参数:通道号
 266          //返    回:无
 267          //完成日期:4/12/2007
 268          //-----------------------------------------------------------------
 269          void SetDangerIOControl(unsigned char uchChannel)
 270          {
 271   1              unsigned char uchTemp;
 272   1      
 273   1              if (uchChannel == 1)
 274   1          {
 275   2              EA = 0;
 276   2                      uchTemp = P4;
 277   2                      uchTemp &= 0xfa;
 278   2                      uchTemp |= 0x02;           //0 1 0
 279   2                      P4 = uchTemp;
 280   2                      EA = 1;
 281   2          }
 282   1         if (uchChannel == 2)
 283   1         {
 284   2              EA = 0;
 285   2                      uchTemp = P4;
 286   2                      uchTemp &= 0xfb;
 287   2                      uchTemp |= 0x03;  //0 1 1
 288   2                      P4 = uchTemp;   
 289   2                      EA = 1; 
 290   2         }
 291   1      }
 292          
 293          //-----------------------------------------------------------------
 294          //函数名称:void SetNotOKIOControl(unsigned char uchChannel)
 295          //功    能:通过状态判断得到P4.2、P4.1和P4.0端口的状态供三冗余使用
 296          //输入参数:通道号
 297          //返    回:无
 298          //完成日期:4/12/2007
 299          //-----------------------------------------------------------------
 300          void SetNotOKIOControl(unsigned char uchChannel)
C51 COMPILER V7.10   HARDWARE                                                              09/18/2008 14:09:27 PAGE 6   

 301          {
 302   1              unsigned char uchTemp;
 303   1      
 304   1              if (uchChannel == 1)
 305   1          {
 306   2              EA = 0;
 307   2                      uchTemp = P4;
 308   2                      uchTemp &= 0xfe;          //1 1 0
 309   2                      uchTemp |= 0x06;
 310   2                      P4 = uchTemp;
 311   2                      EA = 1;
 312   2          }
 313   1          if (uchChannel == 2)
 314   1          { 
 315   2                      EA = 0;
 316   2                  P4 = P4 | 0x07;        //1 1 1 
 317   2                      EA = 1;
 318   2      
 319   2          }      
 320   1      }
 321          
 322          //----------------------------------------------------------------
 323          //函数名称:unsigned char HWConfigureStatus(void)
 324          //功    能:从IO口P3.3检测Configure状态       
 325          //输入参数:无
 326          //返    回:返回Configure状态    =1,接受配置信息
 327          //完成日期:4/12/2007
 328          //----------------------------------------------------------------
 329          unsigned char HWConfigureStatus(void)           
 330          {               
 331   1              xdata unsigned char uchConfigStatus;         
 332   1          uchConfigStatus = P3 & 0x08;  
 333   1              uchConfigStatus = uchConfigStatus>>3;  
 334   1                                                                              
 335   1              return uchConfigStatus; 
 336   1      }
 337          
 338          //----------------------------------------------------------------
 339          //函数名称:unsigned char HWBypassStatus(void)
 340          //功    能:从IO口P5.5检测Bypass状态       
 341          //输入参数:无
 342          //返    回:返回Bypass状态  ,非Bypass为高电平,低电平为Bypass状态
 343          //完成日期:4/12/2007
 344          //----------------------------------------------------------------
 345          unsigned char HWBypassStatus(void)
 346          {               
 347   1              xdata unsigned char uchBypassStatus;         
 348   1                         
 349   1              uchBypassStatus = P5 & 0x20;  
 350   1              uchBypassStatus = uchBypassStatus>>5;                                                           
 351   1      
 352   1              return uchBypassStatus;    
 353   1      }
 354          
 355          //--------------------------------------------------------------------------
 356          //函数名称:unsigned char HWTripleStatus(void)
 357          //功    能:从IO口P5.6检测报警倍增状态       
 358          //输入参数:无
 359          //返    回:返回报警Triple状态,高电平为非报警倍增状态,低电平为报警倍增状态
 360          //完成日期:4/12/2007
 361          //--------------------------------------------------------------------------
 362          unsigned char HWTripleStatus(void)
C51 COMPILER V7.10   HARDWARE                                                              09/18/2008 14:09:27 PAGE 7   

 363          {                       
 364   1              xdata unsigned char uchTripleStatus;         
 365   1                         
 366   1          uchTripleStatus = P5 & 0x40;  
 367   1              uchTripleStatus = uchTripleStatus>>6;  
 368   1                                                              
 369   1              return uchTripleStatus;    
 370   1      }
 371          
 372          //--------------------------------------------------------------------------
 373          //函数名称:void StopHeartBeat(void)
 374          //功    能:停止心跳   
 375          //输入参数:无
 376          //返    回:无
 377          //完成日期:4/12/2007
 378          //--------------------------------------------------------------------------
 379          void StopHeartBeat(void)
 380          {
 381   1              EIE2 &= 0xfb;                           //ET2 = 0;       
 382   1      }
 383          
 384          //--------------------------------------------------------------------------
 385          //函数名称:void StartHeartBeat(void)
 386          //功    能:开始心跳   
 387          //输入参数:无
 388          //返    回:无
 389          //完成日期:4/12/2007
 390          //--------------------------------------------------------------------------
 391          void StartHeartBeat(void)
 392          {
 393   1              EIE2 |= 0x04;                //ET2 = 1;
 394   1      }
 395          
 396          //--------------------------------------------------------------------------
 397          //函数名称:void SetHeartInterval(unsigned char uchInterval)
 398          //功    能:设置心跳时间,最大定时35.5ms    
 399          //输入参数:时间间隔 最大值35
 400          //返    回:无
 401          //完成日期:4/12/2007
 402          //--------------------------------------------------------------------------
 403          void SetHeartInterval(unsigned char uchInterval)
 404          {
 405   1                      
 406   1              T4CON = 0x00;
 407   1              CKCON &= 0xbf;
 408   1              EIE2 |= 0x04;
 409   1              TL4 = 0xfd;
 410   1              TH4     = 0xff;
 411   1              if ((uchInterval <= 35) && (uchInterval >= 0))
 412   1              {
 413   2                      RCAP4 = -(SYSCLK * uchInterval) / 12000;           //10ms
 414   2      
 415   2                      T4CON |= 0x04;
 416   2              }                                 
 417   1              else
 418   1              {
 419   2                      StopHeartBeat();
 420   2              }
 421   1      }
 422                                                                                                                                          
 423          //--------------------------------------------------------------------------
 424          //函数名称:void JudgeCHCoByTrStatus_isr(void) interrupt 16
C51 COMPILER V7.10   HARDWARE                                                              09/18/2008 14:09:27 PAGE 8   

 425          //功    能:对config,bypass,triple的状态进行判断处理,并得到心跳的数值      
 426          //输入参数:无
 427          //返    回:无
 428          //完成日期:4/12/2007
 429          //--------------------------------------------------------------------------
 430          
 431          void JudgeCHCoByTrStatus_isr(void) interrupt 16
 432          {       
 433   1              T4CON &=0x7f;
 434   1                         
 435   1              uchConfigStatusBak[2] = uchConfigStatusBak[1];
 436   1              uchConfigStatusBak[1] = uchConfigStatusBak[0];
 437   1              uchConfigStatusBak[0] = HWConfigureStatus();       
 438   1      
 439   1              if(uchConfigStatus != uchConfigStatusBak[2])
 440   1              {
 441   2                      if (uchConfigStatusBak[0] == uchConfigStatusBak[1] && uchConfigStatusBak[0] == uchConfigStatusBak[2])   
 442   2                      {
 443   3                              uchConfigStatus = uchConfigStatusBak[0];
 444   3                      }
 445   2              }
 446   1              SetHWConfigStatusMain(uchConfigStatus);
 447   1      
 448   1              uchBypassStatusBak[2] = uchBypassStatusBak[1];

⌨️ 快捷键说明

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