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

📄 main.lst

📁 c8051f310xmodembootloader.rar
💻 LST
📖 第 1 页 / 共 2 页
字号:
 286   1         else
 287   1         {
 288   2            RELAY_IN  =0;
 289   2            RELAY_OUT =0;
 290   2         }
 291   1          
 292   1         
 293   1         P0MDOUT   = 0xfd;                             // sdo非推挽
 294   1         P1MDOUT  |= 0xf3;                                             // nsel p1.0 p1.1推挽  p1.4 p1.5 P1.6 P1.7 
 295   1         P2MDOUT  |= 0xb0;                                             // P2.7 P2.4 P2.5       
 296   1      
 297   1         
 298   1        
 299   1         D0IN      = 0;
 300   1         D1IN      = 0;
 301   1         D0OUT     = 0;
 302   1         D1OUT     = 0;
 303   1        
C51 COMPILER V8.16   MAIN                                                                  12/10/2009 11:19:17 PAGE 6   

 304   1         BELL      = 0;                                                    //蜂鸣器关闭
 305   1         LEDR      = 1;                                                    //LED关闭
 306   1      
 307   1         sck       = 0;
 308   1         nsel      = 0;
 309   1         sdi       = 1;
 310   1         sdo       = 1;
 311   1      
 312   1         X_CS      = 1;                                //不选中AT25128 
 313   1      
 314   1              
 315   1      }
 316          
 317          /******************************************************************************
 318          ** 函数:beef(unchar be)
 319          ** 入参:be, rg 
 320          ** 返回: 
 321          ** 说明:
 322          
 323          ******************************************************************************/
 324          void Beef(UCHAR be,UCHAR RG)
 325          {
 326   1       UCHAR i;
 327   1      
 328   1        if(be==1)
 329   1        {
 330   2            BELL_ON;
 331   2                if(RG==RED) {LEDR_ON;}
 332   2                else
 333   2            {LEDG_ON;}
 334   2            delayms(100);
 335   2            BELL_OFF;                                          //单次蜂鸣
 336   2            if(RG==RED) {LEDR_OFF;}
 337   2                else
 338   2            {LEDG_OFF;}
 339   2        }
 340   1      
 341   1        else
 342   1        {
 343   2          for(i=0;i<be;i++)
 344   2          {
 345   3                BELL_ON;
 346   3            if(RG==RED) {LEDR_ON;}
 347   3                else
 348   3            {LEDG_ON;}
 349   3            delayms(100);
 350   3            BELL_OFF;
 351   3            if(RG==RED) {LEDR_OFF;}
 352   3                else
 353   3            {LEDG_OFF;}
 354   3                delayms(200);                              //多次蜂鸣需要间隔延时
 355   3              }
 356   2        }
 357   1      }
 358          
 359           void BeefL(UCHAR be,UCHAR RG)
 360          {
 361   1       UCHAR i;
 362   1      
 363   1        if(be==1)
 364   1        {
 365   2            BELL_ON;
C51 COMPILER V8.16   MAIN                                                                  12/10/2009 11:19:17 PAGE 7   

 366   2            if(RG==RED) {LEDR_ON;}
 367   2                else
 368   2            {LEDG_ON;}
 369   2            delayms(500);
 370   2            BELL_OFF;                                          //单次蜂鸣
 371   2            if(RG==RED) {LEDR_OFF;}
 372   2                else
 373   2            {LEDG_OFF;}
 374   2        }
 375   1      
 376   1        else
 377   1        {
 378   2         for(i=0;i<be;i++)
 379   2         {
 380   3                BELL_ON;
 381   3            if(RG==RED) {LEDR_ON;}
 382   3                else
 383   3            {LEDG_ON;}
 384   3            delayms(300);
 385   3            BELL_OFF;
 386   3            if(RG==RED) {LEDR_OFF;}
 387   3                else
 388   3            {LEDG_OFF;}
 389   3                delayms(200);                              //多次蜂鸣需要间隔延时
 390   3          }
 391   2        }
 392   1      }
 393          
 394          
 395          /******************************************************************************
 396          ** 函数: SYSCLK_Init ()
 397          ** 入参: 
 398          ** 返回: 
 399          ** 说明:
 400          ** SYSCLK_Init
 401          ** This routine initializes the system clock to use the internal oscillator
 402          ** at its maximum frequency.
 403          ** Also enables the Missing Clock Detector.
 404          ******************************************************************************/
 405          
 406          void SYSCLK_Init (void)
 407          {
 408   1         OSCICN |= 0x03;                               // Configure internal oscillator for
 409   1                                                       // its maximum frequency
 410   1         RSTSRC = 0x04;                                // Enable missing clock detector
 411   1                                                                           
 412   1      }
 413          
 414          /******************************************************************************
 415          ** 函数: delay()
 416          ** 入参: unsigned int m
 417          ** 返回: 
 418          ** 说明:
 419          ******************************************************************************/
 420          
 421          void delay(unsigned int m)
 422          {
 423   1         unsigned int n;
 424   1         n=0;
 425   1         while(n<m)
 426   1         {n++;}
 427   1         return;
C51 COMPILER V8.16   MAIN                                                                  12/10/2009 11:19:17 PAGE 8   

 428   1      }
 429          
 430          
 431          /******************************************************************************
 432          ** 函数:  PCA_Init
 433          ** 入参:  无
 434          ** 返回:  误
 435          ** 说明:  脉冲捕获初始化
 436          ******************************************************************************/
 437          
 438          void PCA_Init (void)
 439          {
 440   1              EIE1     = 0x10;                                     //允许PCA0中断请求         
 441   1         
 442   1              PCA0L    = 0x00;
 443   1              PCA0H    = 0x00;
 444   1      
 445   1              PCA0CPM0 = 0x11;        
 446   1              PCA0CPL0 = 0x00;
 447   1              PCA0CPH0 = 0x20;
 448   1      
 449   1      
 450   1          PCA0CPM1 = 0x11;    
 451   1              PCA0CPL1 = 0x00;
 452   1              PCA0CPH1 = 0x20;
 453   1      
 454   1              PCA0CN   = 0x40;                                     //允许PCA定时器/计数器
 455   1      
 456   1      }
 457          /******************************************************************************
 458          ** 函数:  PCA_ISR
 459          ** 入参:  无
 460          ** 返回:  无
 461          ** 说明:  脉冲捕获中断服务程序
 462          ******************************************************************************/
 463          
 464          void PCA_ISR (void) interrupt 11
 465          {
 466   1      
 467   1      
 468   1              CF   = 0;                                                //脉冲中断清标记
 469   1      
 470   1              wie_str=1;                                                   //设置标记提供TIME0检测
 471   1          RE_LOAD_TIME0;
 472   1                                                                       //重载定时器0
 473   1              
 474   1      
 475   1        if(CCF0==1)                                                //查看d0 or d1
 476   1        {
 477   2              CCF0 = 0;                                            //清匹配中断标志
 478   2              
 479   2              wiebuf_cout[wie_cout]<<=1;      
 480   2              wiebuf_cout[wie_cout] |=0;
 481   2              wie_8bit--;
 482   2      
 483   2        }
 484   1      
 485   1      
 486   1        if(CCF1==1)
 487   1        {
 488   2              CCF1 = 0;
 489   2              wiebuf_cout[wie_cout]<<=1;
C51 COMPILER V8.16   MAIN                                                                  12/10/2009 11:19:17 PAGE 9   

 490   2          wiebuf_cout[wie_cout] |=1;  
 491   2              wie_8bit--;
 492   2        }
 493   1      
 494   1      
 495   1         if(!wie_8bit)                                                 //8bit 1字节溢出归0,数组指针+1
 496   1         {
 497   2          wie_cout++;
 498   2          wie_8bit=8;
 499   2         }
 500   1      
 501   1                                         
 502   1         if(wie_cout>=32)                                          //最多接收32字节wiegand信号
 503   1         {
 504   2              CLR_WIEBUF_COUT;
 505   2         }
 506   1                      
 507   1      }
 508          /******************************************************************************
 509          ** 函数:  relay_work
 510          ** 入参:  无
 511          ** 返回:  无
 512          ** 说明:  继电器动作
 513          ******************************************************************************/
 514          void relay_work()
 515          {
 516   1      
 517   1        if(ONLY_READER)
 518   1        {
 519   2           if(TRIG==1)                                         //非外部触发信号
 520   2           {
 521   3                  if(WIE_CK==0)                              //既进又出
 522   3                  {
 523   4                     RELAY_IN=OFF_0;
 524   4                     RELAY_OUT=OFF_0;
 525   4                  }
 526   3      
 527   3                  else
 528   3                  {
 529   4                     if(IN_OUT==1)                          //根据卡标记动作
 530   4                         {
 531   5                            RELAY_IN=OFF_0;
 532   5                         }
 533   4                         else
 534   4                         {
 535   5                            RELAY_OUT=OFF_0;
 536   5                         }
 537   4                  }
 538   3      
 539   3           }
 540   2           else                                            //外部触发信号
 541   2           {
 542   3                  if(RELAY_TRIG_STATE==1)
 543   3                  {
 544   4                     RELAY_IN=OFF_0;                              //如果触发的是进门,开进门继电器
 545   4                  }
 546   3                  else
 547   3                  {
 548   4                     RELAY_OUT=OFF_0;
 549   4                  }
 550   3                      
 551   3               }
C51 COMPILER V8.16   MAIN                                                                  12/10/2009 11:19:17 PAGE 10  

 552   2        }     
 553   1        else
 554   1        {
 555   2         return;  //继电器不动作
 556   2        }  
 557   1      }
 558          
 559          
 560          /****************************@end@*************************************/
 561          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1187    ----
   CONSTANT SIZE    =    162    ----
   XDATA SIZE       =   ----       9
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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