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

📄 calculator.lst

📁 利用89s51去寫結構化keil-C 4x4鍵盤掃描+LCD螢幕顯示 HW01:四則運算+時鍾顯示 HW02:頻率偵測器 ps.鍵盤掃描不是利用延遲作彈跳(推薦)
💻 LST
字号:
C51 COMPILER V8.08   CALCULATOR                                                            04/11/2009 12:53:53 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE CALCULATOR
OBJECT MODULE PLACED IN .\Out\Calculator.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SourceFile\Calculator.c BROWSE DEFINE(_HW01_) DEBUG OBJECTEXTEND PRINT(.\Ls
                    -t\Calculator.lst) OBJECT(.\Out\Calculator.obj)

line level    source

   1          
   2          
   3          
   4          
   5          #include "Calculator.h"
   6          
   7          
   8          
   9          ///////////////////////////////////////////////////////////////////////////
  10          // Variable
  11          USTCULTDATA data        g_ustValData;
  12          BYTE bdata      g_bfCULTStatus;
  13          
  14          
  15          
  16          //USTCULTDATA data      ustValData;
  17          
  18          BOOL fnCULT_Add(void)
  19          {
  20   1              g_ustValData.tadd.bEqL = (g_ustValData.tadd.bSrc + g_ustValData.tadd.bDes);
  21   1              return TRUE;
  22   1      }
  23          
  24          
  25          BOOL  fnCULT_Sub(void)
  26          {
  27   1              g_ustValData.tsub.iEq = ((int)(g_ustValData.tsub.cSrc - g_ustValData.tsub.cDes));
  28   1              return TRUE;
  29   1      }
  30          
  31          
  32          
  33          BOOL  fnCULT_Mul(void)
  34          {
  35   1              g_ustValData.tmul.wEq = g_ustValData.tmul.bSrc;
  36   1              //g_ustValData.tmul.bSrc = 0;
  37   1              //g_ustValData.tmul.wEq *=  g_ustValData.tw.wIN;
  38   1              g_ustValData.tmul.wEq *=  g_ustValData.tmul.bDes;
  39   1              return TRUE;
  40   1      }
  41          
  42          
  43          BOOL  fnCULT_Div(void)
  44          {
  45   1              if (g_ustValData.tdiv.bDes == 0)
  46   1                      return FALSE;
  47   1              g_ustValData.tdiv.bEq = (g_ustValData.tdiv.bSrc / g_ustValData.tdiv.bDes);
  48   1              g_ustValData.tdiv.bRemd = (g_ustValData.tdiv.bSrc % g_ustValData.tdiv.bDes);    
  49   1              return TRUE;
  50   1      }
  51          
  52          
  53          void fnCULT_DispSPChr(BYTE bAddr, BYTE bOP)
  54          {
C51 COMPILER V8.08   CALCULATOR                                                            04/11/2009 12:53:53 PAGE 2   

  55   1              switch(bOP)
  56   1              {
  57   2                      case CULT_ADD:
  58   2                              //bOP = 0x2B;
  59   2                              fnDISP_Chr(bAddr, DISP_ADD);
  60   2                              break;
  61   2                      case CULT_SUB:
  62   2                              //bOP = 0x2D;
  63   2                              fnDISP_Chr(bAddr, DISP_SUB);
  64   2                              break;
  65   2                      case CULT_MUL:
  66   2                              //bOP = 0x2A;
  67   2                              fnDISP_Chr(bAddr, DISP_MUL);
  68   2                              break;
  69   2                      case CULT_DIV:
  70   2                              //bOP = 0x2F;
  71   2                              fnDISP_Chr(bAddr, DISP_DIV);
  72   2                              break;
  73   2                      case EQUAL:
  74   2                              //bOP = 0x3D;
  75   2                              fnDISP_Chr(bAddr, DISP_EQU);
  76   2                              break;
  77   2                      default:
  78   2                              break;
  79   2              }
  80   1              //fnDISP_WrData(bOP);
  81   1      }
  82          
  83          
  84          void fnCULT_KeyIn(void)
  85          {
  86   1              if(g_bKeyValueOld == 15){
  87   2                      return;
  88   2              } else {
  89   2                      if(g_bfCULTStatus == CALCULATOR){
  90   3                              if(g_bKeyValueOld > 9){
  91   4                                      return;
  92   4                              }
  93   3                              g_bfCULTStatus = FNUM_HI;
  94   3                              fnDISP_ClrDisp();
  95   3                      }
  96   2              }
  97   1              switch(g_bfCULTStatus)
  98   1              {
  99   2                      case FNUM_HI:
 100   2                              if(g_bKeyValueOld <= 9){
 101   3                                      g_ustValData.tb.bX = (g_bKeyValueOld * 10);
 102   3                                      g_bfCULTStatus = FNUM_LO;
 103   3                                      fnDISP_Int(LOCAL_02, g_bKeyValueOld);
 104   3                              }
 105   2                              break;
 106   2                      case FNUM_LO:
 107   2                              if(g_bKeyValueOld <= 9){
 108   3                                      g_ustValData.tb.bX += g_bKeyValueOld;
 109   3                                      g_bfCULTStatus = OPERATION;
 110   3                                      fnDISP_Int(CONTINUE, g_bKeyValueOld);
 111   3                              } else if((g_bKeyValueOld >= 10) && (g_bKeyValueOld <= 13)){
 112   3                                      g_ustValData.tb.bX /= 10;
 113   3                                      g_ustValData.tb.bOP = g_bKeyValueOld;
 114   3                                      g_bfCULTStatus = SNUM_HI;
 115   3                                      fnCULT_DispSPChr(CONTINUE, g_bKeyValueOld);
 116   3                              }
C51 COMPILER V8.08   CALCULATOR                                                            04/11/2009 12:53:53 PAGE 3   

 117   2                              break;
 118   2                      case OPERATION:
 119   2                              if((g_bKeyValueOld >= 10) && (g_bKeyValueOld <= 13)){
 120   3                                      g_ustValData.tb.bOP = g_bKeyValueOld;
 121   3                                      g_bfCULTStatus = SNUM_HI;
 122   3                                      fnCULT_DispSPChr(CONTINUE, g_bKeyValueOld);
 123   3                              }
 124   2                              break;
 125   2                      case SNUM_HI:
 126   2                              if(g_bKeyValueOld <= 9){
 127   3                                      g_ustValData.tb.bO = (g_bKeyValueOld * 10);
 128   3                                      g_bfCULTStatus = SNUM_LO;
 129   3                                      fnDISP_Int(CONTINUE, g_bKeyValueOld);
 130   3                              }
 131   2                              break;
 132   2                      case SNUM_LO:
 133   2                              if(g_bKeyValueOld <= 9){
 134   3                                      g_ustValData.tb.bO += g_bKeyValueOld;
 135   3                                      g_bfCULTStatus = EQUAL;
 136   3                                      //fnDISP_RdCmd(BYTE * bpData)
 137   3                                      //fnDISP_RdAddr(&bBuf);
 138   3                                      fnDISP_Int(CONTINUE, g_bKeyValueOld);
 139   3                              } else if(g_bKeyValueOld == EQUAL){
 140   3                                      g_ustValData.tb.bO /= 10;
 141   3                                      g_bfCULTStatus = ENTER;
 142   3                                      fnCULT_DispSPChr(CONTINUE, g_bKeyValueOld);
 143   3                              }
 144   2                              break;
 145   2                       case EQUAL:
 146   2                              if(g_bKeyValueOld == EQUAL){
 147   3                                      g_bfCULTStatus = ENTER;
 148   3                                      fnCULT_DispSPChr(CONTINUE, g_bKeyValueOld);
 149   3                              }
 150   2                              break;
 151   2                      default:
 152   2                              break;
 153   2              }
 154   1      }
 155          
 156          
 157          void fnCULT_Operation(void)
 158          {
 159   1              if(g_bfCULTStatus != ENTER){
 160   2                      return;
 161   2              } else {
 162   2                      g_bfCULTStatus = 0;
 163   2              }
 164   1      
 165   1              switch(g_ustValData.tb.bOP)
 166   1              {
 167   2                      case CULT_ADD:
 168   2                              fnCULT_Add();
 169   2                              fnDISP_Int(CONTINUE, g_ustValData.tadd.bEqL);
 170   2                              break;
 171   2                      case CULT_SUB:
 172   2                              fnCULT_Sub();
 173   2                              fnDISP_Int(CONTINUE, g_ustValData.tsub.iEq);
 174   2                              break;
 175   2                      case CULT_MUL:
 176   2                              fnCULT_Mul();
 177   2                              fnDISP_Int(CONTINUE, g_ustValData.tmul.wEq);
 178   2                              break;
C51 COMPILER V8.08   CALCULATOR                                                            04/11/2009 12:53:53 PAGE 4   

 179   2                      case CULT_DIV:
 180   2                              if(fnCULT_Div()){
 181   3                                      fnDISP_Int(CONTINUE, g_ustValData.tdiv.bEq);
 182   3                                      fnDISP_Chr(CONTINUE, DISP_SPACE);
 183   3                                      fnDISP_Int(CONTINUE, g_ustValData.tdiv.bRemd);
 184   3                              } else {
 185   3                                      fnDISP_ClrDisp();
 186   3                                      fnDISP_Str(LOCAL_02, "ERROR:IN Zero");
 187   3                              }
 188   2                              break;
 189   2                      default:
 190   2                              break;
 191   2              }
 192   1      }
 193          
 194          
 195          
 196          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    477    ----
   CONSTANT SIZE    =     14    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       1
   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 + -