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

📄 main.lst

📁 基于单片机的电子计算器的硬件原理图和程序
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  07/01/2008 10:35:02 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          /*
   3          ****************************************************
   4          
   5                          
   6          
   7          ****************************************************
   8          */
   9          
  10          
  11          #include <reg52.H>
  12          #include "Typedef.H"
  13          #include "UserDef.H"
  14          #include "Keypad.H"
  15          #include "Disp.H"
  16          
  17          
  18          /*  全局变量 */
  19          bit bDispRef = FALSE;           //信号灯:显示更新时间到
  20          bit bKeyScan = FALSE;           //信号灯:键盘扫描时间到
  21          
  22          /*  函数 */
  23          void KeyboardDeal(void);
  24          
  25          
  26          /***************************************
  27          
  28                  
  29          
  30          ****************************************/
  31          void main(void)
  32                  {
  33   1      
  34   1              TMOD = 0x11;
  35   1              TH0 = (unsigned char)(KTDLY>>8);
  36   1              TL0 = (unsigned char)(KTDLY);
  37   1              TR0 = 1;
  38   1              
  39   1              ET0 = 1;
  40   1      
  41   1              EA = 1;
  42   1      
  43   1              DispCls();
  44   1              DispIntRight(0);        //显示效果示范
  45   1      
  46   1              while(TRUE)
  47   1                      {
  48   2                      /* 键盘 */
  49   2                      if (bKeyScan == TRUE)
  50   2                              {
  51   3                              bKeyScan = FALSE;
  52   3                              KeyboardDeal();
  53   3                              }
  54   2                      
  55   2                      /* 显示扫描刷新 */
C51 COMPILER V7.50   MAIN                                                                  07/01/2008 10:35:02 PAGE 2   

  56   2                      if (bDispRef == TRUE)
  57   2                              {
  58   3                              bDispRef = FALSE;
  59   3                              DispRef();
  60   3                              }
  61   2                      }
  62   1              }
  63          
  64          
  65          
  66          
  67          /*************************************
  68          
  69                  定时器中断程序 
  70          
  71          **************************************/
  72          void int_t0(void) interrupt 1 using 1
  73                  {
  74   1              static int cnt = 0;
  75   1      
  76   1              TH0 = (unsigned char)(KTDLY>>8);
  77   1              TL0 = (unsigned char)(KTDLY);
  78   1      
  79   1              cnt ++;
  80   1      
  81   1              /* 键盘扫描信号灯  */
  82   1              if ((cnt % T_KEYSCAN) == 0)
  83   1                      {
  84   2                      bKeyScan = TRUE;
  85   2                      }
  86   1      
  87   1              /* 显示扫描信号灯  */
  88   1              if ((cnt % T_DISPREF) == 0)
  89   1                      {
  90   2                      bDispRef = TRUE;
  91   2                      }
  92   1              }
  93          
  94          
  95          /*************************************
  96          
  97                  键盘处理 
  98          
  99          **************************************/
 100          void KeyboardDeal(void)
 101                  {
 102   1              static INT8U KeyVal = VK_NULL;  //按键值
 103   1      //数据类型改为浮点数
 104   1      //      static INT32U dispval = 0;
 105   1              static float dispval = 0;
 106   1              INT8U n;
 107   1      
 108   1              n = Keypad_GetKey();
 109   1      
 110   1              if (n != KeyVal)
 111   1                      {
 112   2                      KeyVal = n;
 113   2                      if (n != VK_NULL)
 114   2                              {
 115   3                              if ((KeyVal>=VK_0)&&(KeyVal<=VK_9))
 116   3                                      {
 117   4                                      dispval *= 10;
C51 COMPILER V7.50   MAIN                                                                  07/01/2008 10:35:02 PAGE 3   

 118   4                                      dispval += KeyVal - VK_0;
 119   4                                      }
 120   3                              else if (KeyVal == VK_CLR)
 121   3                                      {
 122   4                                      DispCls();
 123   4                                      dispval = 0;
 124   4                                      }
 125   3      //==============================<< 修改2 >>===============================================================
             -======
 126   3      //              补充对加、减、乘、除按键的处理,分别对现有值加2,减2,乘2、除2                   
 127   3      //========================================================================================================
             -======
 128   3                              else if (KeyVal == VK_ADD)
 129   3                                      {
 130   4                                      dispval += 2;
 131   4                                      }
 132   3                              else if (KeyVal == VK_SUB)
 133   3                                      {
 134   4                                      dispval -= 2;
 135   4                                      }
 136   3                              else if (KeyVal == VK_MUL)
 137   3                                      {
 138   4                                      dispval *= 2;
 139   4                                      }
 140   3                              else if (KeyVal == VK_DIV)
 141   3                                      {
 142   4                                      dispval /= 2;
 143   4                                      }
 144   3                                                      
 145   3      
 146   3      //==============================<< 修改3 >>===============================================================
             -======
 147   3      //              改用DispFloat函数进行显示,并同时修改程序中其他相关部分,使其能够支持浮点数显示
 148   3      //              (共2处修改,1.下面一行,2.本函数开头处dispval的数据类型定义)
 149   3      //========================================================================================================
             -======
 150   3                              //DispIntRight(dispval);
 151   3                              DispFloat(dispval);
 152   3                              }
 153   2                      }
 154   1              }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    338    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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