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

📄 main.lst

📁 利用SMALL RTOS51做的一个项目
💻 LST
📖 第 1 页 / 共 5 页
字号:
 371          **
 372          ** 作 者: 龚树强
 373          ** 日 期: 2004年10月15日
 374          **-------------------------------------------------------------------------------------------------------
 375          ** 修改人:
 376          ** 日 期:
 377          **------------------------------------------------------------------------------------------------------
 378          ********************************************************************************************************/
 379                  void ISR_Counter_Int(void)                      interrupt       COUNTER_INT_ISR
 380          {
 381   1              OS_INT_ENTER();                                                         // 中断开始处理   
 382   1      
 383   1              IE0=0;
 384   1              EX0=0;
 385   1              
 386   1              
 387   1              TH0=TIME_THREADHOLD_LOW>>8;
 388   1              TL0=TIME_THREADHOLD_LOW;
 389   1      
 390   1              TR0=1;
 391   1              ET0=1;
 392   1      
 393   1              _Flag_CounterFallDown=1;
 394   1               
 395   1        
 396   1          OSIntExit();                                                                // 中断结束处理   
 397   1             
 398   1      }
 399          
 400          
 401          /*********************************************************************************************************
 402          ** 函数名称: ISR_Counter_Tmr
 403          ** 功能描述: 一个任务,计数器的中断处理函数
 404          **
 405          ** 输 入: 无
 406          ** 输 出: 无
 407          ** 全局变量: 无
 408          ** 调用模块: OSSemCreate(),DispStr(),OSWait(),DispClr(),OSSemPost(),
 409          **
 410          ** 作 者: 龚树强
 411          ** 日 期: 2004年10月15日
 412          **-------------------------------------------------------------------------------------------------------
 413          ** 修改人:
 414          ** 日 期:
 415          **------------------------------------------------------------------------------------------------------
 416          ********************************************************************************************************/
 417                  void ISR_Counter_Tmr(void)                      interrupt       COUNTER_TMR_ISR
 418          {
 419   1              OS_INT_ENTER();                                                         // 中断开始处理   
 420   1      
 421   1              TR0=0;
 422   1              ET0=0;
 423   1      
 424   1              _Flag_CounterTimeOut=1;
C51 COMPILER V7.50   MAIN                                                                  12/29/2004 20:23:49 PAGE 8   

 425   1               
 426   1        
 427   1          OSIntExit();                                                                // 中断结束处理   
 428   1             
 429   1      }
 430          
 431          /*********************************************************************************************************
 432          ** 函数名称: ISR_Keyboard
 433          ** 功能描述: 一个任务,Keyboard的中断处理函数
 434          **
 435          ** 输 入: 无
 436          ** 输 出: 无
 437          ** 全局变量: 无
 438          ** 调用模块: OSSemCreate(),DispStr(),OSWait(),DispClr(),OSSemPost(),
 439          **
 440          ** 作 者: 龚树强
 441          ** 日 期: 2004年10月15日
 442          **-------------------------------------------------------------------------------------------------------
 443          ** 修改人:
 444          ** 日 期:
 445          **------------------------------------------------------------------------------------------------------
 446          ********************************************************************************************************/
 447                  void ISR_Keyboard(void)         interrupt       KEYBOARD_ISR
 448          {
 449   1          uint8 i,temp;
 450   1              uint8 timer;
 451   1      
 452   1              
 453   1          OS_INT_ENTER();                                     // 中断开始处理                                   
             - 
 454   1      
 455   1          IE1=0;
 456   1              EX1=0;
 457   1      
 458   1              ET2=1;
 459   1              TF2=0;
 460   1              
 461   1              PS2_CLK=1;
 462   1              PS2_DATA=1;
 463   1      
 464   1              temp=0;
 465   1              
 466   1              for(timer=OVERTIME_THREAD;;timer--)
 467   1              {
 468   2                      if(timer)
 469   2                      {
 470   3                              if(PS2_CLK){break;}
 471   3                      }
 472   2                      else{goto ERROR_OVERTIME;}
 473   2              } 
 474   1              for(i=0;i<8;i++)
 475   1              {
 476   2                      temp>>=1;
 477   2                      for(timer=OVERTIME_THREAD;;timer--)
 478   2                      {
 479   3                              if(timer)
 480   3                              {
 481   4                                      if(!PS2_CLK)
 482   4                                      {
 483   5                                              if(PS2_DATA){temp+=0x80;}
 484   5      
 485   5                                              break;
C51 COMPILER V7.50   MAIN                                                                  12/29/2004 20:23:49 PAGE 9   

 486   5                                      }
 487   4                              }
 488   3                              else{goto ERROR_OVERTIME;}
 489   3                      } 
 490   2                      for(timer=OVERTIME_THREAD;;timer--)
 491   2                      {
 492   3                              if(timer)
 493   3                              {
 494   4                                      if(PS2_CLK){break;}
 495   4                              }
 496   3                              else{goto ERROR_OVERTIME;}
 497   3                      }
 498   2              }   
 499   1      
 500   1              for(;i<10;i++)
 501   1              {
 502   2                      for(timer=OVERTIME_THREAD;;timer--)
 503   2                      {
 504   3                              if(timer)
 505   3                              {
 506   4                                      if(!PS2_CLK){break;}
 507   4                              }
 508   3                              else{goto ERROR_OVERTIME;}
 509   3                      } 
 510   2                      for(timer=OVERTIME_THREAD;;timer--)
 511   2                      {
 512   3                              if(timer)
 513   3                              {
 514   4                                      if(PS2_CLK){break;}
 515   4                              }
 516   3                              else{goto ERROR_OVERTIME;}
 517   3                      }
 518   2              }   
 519   1              
 520   1              if(temp>0xF0)
 521   1                      goto ERROR_OVERTIME;
 522   1      
 523   1      
 524   1              _KeyboardTimer=UP_DELAY_THREADHOLD;
 525   1              
 526   1              if(_Flag_KeyPressed)
 527   1              {
 528   2                      if((temp==0xF0))
 529   2                      {
 530   3                              _KeyboardTimer=0;
 531   3                              _Flag_KeyPressed=0;
 532   3                              OSQIntPost(CommandData,_KeyScanReg);            
 533   3                              _KeyScanReg=0;
 534   3                      }
 535   2              } 
 536   1              else
 537   1              {
 538   2                      if(temp==KEY_LOCK)
 539   2                      {
 540   3                              OSQIntPost(CommandData,temp);
 541   3                      }
 542   2                      else if((temp!=0xE0)&&(_KeyScanReg!=temp))
 543   2                      {
 544   3                              _Flag_KeyPressed=1;
 545   3      
 546   3                              _KeyScanReg=temp;
 547   3                      }
C51 COMPILER V7.50   MAIN                                                                  12/29/2004 20:23:49 PAGE 10  

 548   2                      
 549   2                      
 550   2                      
 551   2              } 
 552   1              
 553   1      
 554   1                      
 555   1      ERROR_OVERTIME  :       EX1=1;
 556   1                                              IE1=0;
 557   1          OSIntExit();     
 558   1             
 559   1      }
 560          

⌨️ 快捷键说明

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