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

📄 timer.lst

📁 基于51的计算器,在周立功实验箱上测试通过,是单片机课程设计题
💻 LST
字号:
C51 COMPILER V7.07   TIMER                                                                 11/11/2007 15:43:51 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE TIMER
OBJECT MODULE PLACED IN timer.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE timer.c OPTIMIZE(2,SPEED) INTVECTOR(0X8000) DEFINE(monitor51) DEBUG OBJECTE
                    -XTEND

stmt level    source

   1          #include        "reg52.h"
   2          #include        "VIiC_C51.H"    //包含VI2C软件包
   3          #include    "zlg7290.h"
   4          
   5          //#define       PCF8563 0xA2            //定义器件地址
   6          //#define       WRADDR  0x00            //定义写单元首地址
   7          //#define       RDADDR  0x02            //定义读单元首地址
   8          
   9          sbit    KEY_INT=P3^2;
  10          sbit    RST=P1^6;
  11          
  12          unsigned char disp[8]={0,31,31,31,31,31,31,31};//显示缓存
  13          unsigned char key;
  14          long nshu,bshu,bbshu;
  15          unsigned char nfu,bfu,bbfu;                                                     //保存键值
  16          //bit   swich_date=0;
  17          
  18          unsigned char DelayNS(unsigned char  no)
  19          { 
  20   1              unsigned char  i,j;                                     //延时参数
  21   1      
  22   1              for(; no>0; no--)
  23   1                      for(i=0; i<100; i++)
  24   1                      for(j=0; j<100; j++);
  25   1              return 0; 
  26   1      }
  27          
  28          void jisuan()           //计算及整理输入                  //定义10为0,11为加号,12为减号,13为*号,14为除号,15为等号,16为清零
  29          {
  30   1       unsigned char key,fu;
  31   1       unsigned char date,i,j;
  32   1      
  33   1       
  34   1       key=ZLG7290_GetKey();
  35   1       if(key==10)
  36   1        key=0;
  37   1        
  38   1       if(key<=9)
  39   1       {
  40   2       date=key;
  41   2       if(disp[1]==31&&disp[0]==0)
  42   2       disp[0]=date;
  43   2       else
  44   2       {
  45   3       for(i=7;i>0;i--)
  46   3        {
  47   4         disp[i]=disp[i-1];
  48   4        }
  49   3        disp[0]=date;
  50   3        }
  51   2        }
  52   1        else
  53   1        {
  54   2        fu=key;
C51 COMPILER V7.07   TIMER                                                                 11/11/2007 15:43:51 PAGE 2   

  55   2      
  56   2        if(fu==16)      // 16为清零
  57   2        {
  58   3         nshu=0;bshu=0;bbshu=0;
  59   3         nfu=0;bfu=0;bbfu=0;
  60   3           disp[0]=0;
  61   3         for(i=1;i<8;i++)
  62   3         disp[i]=31;
  63   3         }
  64   2      
  65   2        
  66   2         bbshu=bshu;
  67   2         bshu=nshu;
  68   2         nshu=0;
  69   2         j=1;
  70   2         for(i=0;i<8;i++)
  71   2         {
  72   3              if(disp[i]==31)
  73   3              i=8;
  74   3          nshu=nshu+disp[i]*j;
  75   3              j=j*10;
  76   3      
  77   3         }
  78   2         disp[0]=0;
  79   2         for(i=1;i<8;i++)
  80   2         disp[i]=31;
  81   2         if((fu==11)||(fu==12))         //11为加号,12为减号,
  82   2         {
  83   3         switch(nfu)
  84   3           {
  85   4            case 11:
  86   4                {
  87   5                 nshu=nshu+bshu;
  88   5                 nfu=fu;
  89   5                
  90   5                }break;
  91   4                case 12:
  92   4                {
  93   5                 nshu=nshu-bshu;
  94   5                 nfu=fu;
  95   5                }break;
  96   4                case 13:                                //13为*号
  97   4                {
  98   5      
  99   5                 switch(bfu)
 100   5                 {
 101   6                  case 0:break;
 102   6                      case 11:                          //11为加号
 103   6                      {nshu=nshu*bshu+bbshu;bfu=0;bshu=0;bbshu=0;}break;
 104   6                      case 12:                          //12为减号
 105   6                      {nshu=bbshu-nshu*bshu;bfu=0;bshu=0;bbshu=0;}break;
 106   6                      default:break;
 107   6                 }
 108   5                 nfu=fu;
 109   5                }break;
 110   4                case 14:                      //14为除号
 111   4                { 
 112   5      
 113   5                 switch(bfu)
 114   5                 {
 115   6                  case 0:break;
 116   6                      case 11:           //11为加号
C51 COMPILER V7.07   TIMER                                                                 11/11/2007 15:43:51 PAGE 3   

 117   6                      {nshu=bshu/nshu+bbshu;bfu=0;bshu=0;bbshu=0;}break;
 118   6                      case 12:                //12为减号
 119   6                      {nshu=bbshu-bshu/nshu;bfu=0;bshu=0;bbshu=0;}break;
 120   6                      default:break;
 121   6                 }
 122   5                 nfu=fu;
 123   5                }break;
 124   4                default:break;
 125   4            }
 126   3      
 127   3          }
 128   2              if((fu==13)||(fu==14))    //13为*号     14为除号
 129   2              {
 130   3               switch(nfu)
 131   3               {
 132   4                case 12:
 133   4                {bfu=nfu;nfu=fu;}break;
 134   4                case 11:
 135   4                {bfu=nfu;nfu=fu;}break;
 136   4                case 13:
 137   4                {nshu=bshu*nshu;bshu=bbshu;nfu=fu;}break;
 138   4                case 14:
 139   4                {nshu=bshu/nshu;bshu=bbshu;nfu=fu;}break;
 140   4                default:break;
 141   4               }
 142   3              }
 143   2              if(fu==15)
 144   2              {                                 // 15为等号
 145   3               switch(nfu)
 146   3               {
 147   4            case 11:
 148   4                {
 149   5                 nshu=nshu+bshu;
 150   5                 nfu=0;
 151   5                }break;
 152   4                case 12:
 153   4                {
 154   5                 nshu=bshu-nshu;
 155   5                 nfu=0;
 156   5                }break;
 157   4                case 13:
 158   4                {
 159   5                 nshu=nshu*bshu;bshu=bbshu;
 160   5                 switch(bfu)
 161   5                 {
 162   6                  case 0:break;
 163   6                      case 12:
 164   6                      {nshu=bshu-nshu;
 165   7                      bshu=0;bbshu=0;
 166   7                      nfu=0;bfu=0;
 167   7                      }break;
 168   6                      case 11:
 169   6                      {nshu=bshu+nshu;
 170   7                       bshu=0;bbshu=0;
 171   7                       nfu=0;bfu=0;
 172   7                      }break;
 173   6                      default:break;
 174   6                 }
 175   5                }break;
 176   4                case 14:
 177   4                {
 178   5                 nshu=bshu/nshu;bshu=bbshu;
C51 COMPILER V7.07   TIMER                                                                 11/11/2007 15:43:51 PAGE 4   

 179   5                 switch(bfu)
 180   5                 {
 181   6                  case 0:break;
 182   6                      case 12:
 183   6                      {nshu=bshu-nshu;
 184   7                      bshu=0;bbshu=0;
 185   7                      nfu=0;bfu=0;
 186   7                      }break;
 187   6                      case 11:
 188   6                      {nshu=bshu+nshu;
 189   7                       bshu=0;bbshu=0;
 190   7                       nfu=0;bfu=0;
 191   7                      }break;
 192   6                      default:break;
 193   6                 }
 194   5                }break;
 195   4                case 0:
 196   4                {
 197   5                 if((bbshu==0)&&(bshu==0))
 198   5                 nshu=nshu*nshu;
 199   5                }break;
 200   4                case 16:
 201   4                {
 202   5                 if((bbshu==0)&&(bshu==0))
 203   5                 nshu=nshu*nshu;
 204   5                }break;
 205   4                      default:break;
 206   4               }
 207   3      //       if(nshu>0)
 208   3               {
 209   4                for(i=0;i<8;i++)
 210   4                {
 211   5                 disp[i]=nshu%10;
 212   5                 nshu=nshu/10;
 213   5                 if(nshu==0)
 214   5                 i=8;
 215   5                }
 216   4                }
 217   3      /*        else
 218   3                {
 219   3                 nshu=0-nshu;
 220   3                 for(i=0;i<8;i++)
 221   3                {
 222   3                 disp[i]=nshu%10;
 223   3                 nshu=nshu/10;
 224   3                 if(nshu==0)
 225   3                 {disp[i+1]=11;
 226   3                 i=8;}
 227   3                }
 228   3                }*/
 229   3                nshu=0;
 230   3              }
 231   2              else
 232   2              {
 233   3               nfu=fu;
 234   3              }
 235   2        }
 236   1      
 237   1      }
 238          
 239          void    main()
 240          {
C51 COMPILER V7.07   TIMER                                                                 11/11/2007 15:43:51 PAGE 5   

 241   1      
 242   1      
 243   1              RST=0;
 244   1              DelayNS(1);
 245   1              RST=1;
 246   1              DelayNS(1);
 247   1          ZLG7290_SendBuf(disp,8);            
 248   1              while(1)
 249   1              {
 250   2                if(KEY_INT==0)
 251   2                jisuan();
 252   2      
 253   2                ZLG7290_SendBuf(disp,8);
 254   2                      
 255   2              }
 256   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1672    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     24       8
   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 + -