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

📄 keyporcess.lst

📁 51的计算器很好的啊
💻 LST
字号:
C51 COMPILER V8.05a   KEYPORCESS                                                           07/29/2007 09:35:52 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE KEYPORCESS
OBJECT MODULE PLACED IN KeyPorcess.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\KeyPorcess.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\Ke
                    -yPorcess.lst) OBJECT(KeyPorcess.obj)

line level    source

   1          //*************************************************************************************************
   2          //*************************************************************************************************
   3          //**<程序名>:按键处理子函数                                                                                                                                     **
   4          //**<功能>:当有外部中断0时调用此函数,获得键码,进行相应处理。                                                              **
   5          //*************************************************************************************************
   6          //*************************************************************************************************
   7          
   8          
   9          //*************************************************************************************************
  10          //*                                                                                                                                                                                               *
  11          //*                      ******************************头文件及宏定义**************************                           *
  12          //*                                                                                                                                                                                               *
  13          //*************************************************************************************************
  14          #include <at89x51.h>
  15          #include "Calculator.h"
  16          
  17          
  18          //*************************************************************************************************
  19          //*                                                                                                                                                                                               *
  20          //*                       ********************************全局变量******************************                          *
  21          //*                                                                                                                                                                                               *
  22          //*************************************************************************************************
  23          extern bit b_ClockStart;                        //定时器0显示标志。
  24          
  25          extern unsigned long ul_Number;         //LCE显示数据,LCD实时显示该数字。
  26          
  27          extern bit b_KeyShock;                          //键盘防抖动标志位。
  28          
  29          unsigned long ul_TimeTemp;                      //暂停状态技计数存。
  30          
  31          
  32          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<工作模式(默认为计算器模式)>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  33          bit b_WorkMode=0;                                        //0--计算器模式;
  34                                                                                   //1--计时模式。
  35                                                                           
  36          
  37          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<计时工作状态标志位>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>                                                     
             -                //b_CountStart  |       b_CountPause
  38                                                                                  //              0               |               0                       停止状态
  39          bit b_CountStart=0;                                     //              1               |               0                       计时状态
  40          bit b_CountPause=0;                                     //              1`              |               1                       暂停状态
  41                                                                              //          0               |               1                       未定义
  42          
  43          //****************************************************************************************************
  44          //****************************************************************************************************
  45          
  46          
  47          void vTimer(unsigned char ucKeyCode);                   //计时器处理函数。
  48          
  49          
  50          //*************************************************************************************************
  51          //*                                                                                                                                                                                               *
  52          //*              ********************************按键处理函数主函数******************************                 *
  53          //*                                                                                                                                                                                               *
C51 COMPILER V8.05a   KEYPORCESS                                                           07/29/2007 09:35:52 PAGE 2   

  54          //************************************************************************************************* 
  55          void vKeyProcess(unsigned char ucKeyCodeTemp)
  56          {
  57   1              if(b_WorkMode==1)
  58   1                      vTimer(ucKeyCodeTemp);                  //当工作模式为计时模式时调用计时器处理函数。
  59   1              else 
  60   1                      {       
  61   2                      vCalculator(ucKeyCodeTemp);         //当工作模式为计算器模式时调用计算器处理函数。
  62   2                      b_KeyShock=1;
  63   2                      }
  64   1      
  65   1      }
  66          
  67          
  68          //*************************************************************************************************
  69          //*                                                                                                                                                                                               *
  70          //*              ********************************计时状态处理函数******************************                   *
  71          //*                                                                                                                                                                                               *
  72          //************************************************************************************************* 
  73          void vTimer(unsigned char ucKeyCode)
  74          {
  75   1              switch(ucKeyCode)
  76   1                      {
  77   2      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<当按下“NO/C”时执行>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  78   2                      case 41: 
  79   2                                      if((b_CountStart|b_CountPause)==0)                              //00:如果是停止状态则开始。
  80   2                                              {
  81   3                                              ul_Number=0;                                                            //初始化记时值为0.
  82   3                                              b_CountStart=1;                                                         //重设标志位,改为开始状态;
  83   3                                              b_ClockStart=1;                                                         //开始计时;
  84   3                                              }
  85   2                                      else if((b_CountStart&b_CountPause)==1)                 //11:如果是暂停状态则恢复为开始状态。
  86   2                                                      {
  87   3                                                      ul_Number=ul_TimeTemp;                                  //初始化初值为暂存的值。
  88   3                                                      b_CountPause=0;                                                 //重设标志位,改为开始状态。
  89   3                                                      b_ClockStart=1;                                                 //开始计时。
  90   3                                                      }
  91   2                                               else if((b_CountStart=1&(!b_CountPause))==1)   //10 :如果是开始状态则暂停止。
  92   2                                                              {
  93   3                                                              b_CountStart=0;                                                 //重设标志位,改为停止状态。
  94   3                                                              b_ClockStart=0;                                                 //停止计时。
  95   3                                                              ul_Number=0;                                                    //恢复计时前状态。
  96   3                                                              }
  97   2                                      break;                                            
  98   2      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<当按下“=”时执行>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  99   2                      case 43: 
 100   2                                      if(b_CountStart==1)                                                             //如果是开始或暂停状态则进行处理,
 101   2                                              {                                                                                       //否则不处理。
 102   3                                              if(b_CountPause==0)                                                     
 103   3                                                      {                                                                               //保存计时数值。
 104   4                                                      b_CountPause=1;                                                 //如果是开始状态则改为暂停状态。
 105   4                                                      ul_TimeTemp=ul_Number;                                  
 106   4                                                      b_ClockStart=0;                                                 //停止计时。
 107   4                                                      }
 108   3                                              else
 109   3                                                      {                                                                                                   
 110   4                                                       b_CountPause=0;                                                //如果是暂停状态则改变为进行状态。
 111   4                                                       ul_Number=ul_TimeTemp;                                 //给计时器赋初值为暂停前的值。
 112   4                                                       b_ClockStart=1;                                                //继续暂停前的计时。
 113   4                                                      }
 114   3                                              }
 115   2                                      else 
C51 COMPILER V8.05a   KEYPORCESS                                                           07/29/2007 09:35:52 PAGE 3   

 116   2                                              {
 117   3                                              b_WorkMode=0;           //如果在停止计时状态按下“=”键便会切换到计算器模式。
 118   3                                              b_KeyShock=1;
 119   3                                              }
 120   2                                      break;                                           
 121   2      
 122   2                      default:break;
 123   2                      }       
 124   1      }


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


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

⌨️ 快捷键说明

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