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

📄 jsq.lst

📁 一个简单的计算器是如何写的
💻 LST
字号:
C51 COMPILER V3.20,  SN-50203648  JSQ                                                      10/05/07  10:11:09  PAGE 1   


DOS C51 COMPILER V3.20, COMPILATION OF MODULE JSQ
OBJECT MODULE PLACED IN JSQ.OBJ
COMPILER INVOKED BY: C:\BIN\C51.EXE JSQ.C DB OE SMALL ROM(LARGE) 

stmt level    source

   1          #include<reg51.h>
   2          sbit v1=P2^2;
   3          sbit v2=P2^4;
   4          sbit v3=P2^3;
   5          sbit h1=P2^7;
   6          sbit h2=P2^6;
   7          sbit h3=P2^5;
   8          sbit sum=P3^4;
   9          sbit sub=P3^2;
  10          
  11          sbit led1=P1^0;
  12          sbit led2=P1^1;
  13          sbit led3=P1^2;
  14          sbit led4=P1^3;
  15          sbit led5=P1^4;
  16          sbit shu4=P2^0;
  17          sbit shu2=P2^1;
  18          sbit shu1=P3^5;
  19          sbit shu3=P3^3;
  20          
  21          void delayms(unsigned int i);
  22          unsigned int keyboar();
  23          
  24          unsigned int b;
  25          
  26          void t0()interrupt 1 using 1  /*中断程序负责显示b的值 */
  27          {
  28   1        unsigned char a1=0,a2=0,a3=0,a4=0;
  29   1        static unsigned char yima[]={0x00,0x88,0xb3,0xba,0xd8,0x7a,0x7b,0xa8,0xfb,0xfa};
  30   1        static int k=0;
  31   1        //b++;
  32   1        a1=b/1000;
  33   1        a2=(b-a1*1000)/100;
  34   1        a3=(b-a1*1000-a2*100)/10;
  35   1        a4=b-a1*1000-a2*100-a3*10;
  36   1            if(k==0){shu4=1;shu1=0;shu2=0;shu3=0;P0=yima[a1];}
  37   1       else if(k==1){shu4=0;shu1=1;shu2=0;shu3=0;P0=yima[a4];}
  38   1       else if(k==2){shu4=0;shu1=0;shu2=1;shu3=0;P0=yima[a3];}
  39   1       else if(k==3){shu4=0;shu1=0;shu2=0;shu3=1;P0=yima[a2];}
  40   1       k++;
  41   1       if(k>3)k=0;
  42   1      
  43   1       TH0=230;
  44   1      }
  45          
  46          main()
  47          {
  48   1        unsigned char b1,b2,b3,b4;
  49   1        unsigned char c1,c2;
  50   1        bit sub_mark=0,sub_mark1=0,sum_mark=0,sum_mark1=0;
  51   1        EA=1;
  52   1        TR0=1;
  53   1        ET0=1;
  54   1        TMOD=0X01;
  55   1        while(1)
C51 COMPILER V3.20,  SN-50203648  JSQ                                                      10/05/07  10:11:09  PAGE 2   

  56   1          {
  57   2                while(keyboar()==0);/*等待按键*/
  58   2                c1=keyboar();          
  59   2                b=c1;
  60   2                 while(1)
  61   2                    {
  62   3                      if(sum==0){sum_mark=1;break;}
  63   3                      else if(sub==0){sub_mark=1;break;}              
  64   3                    }         
  65   2                       
  66   2               
  67   2               
  68   2               while(keyboar()==0);/*等待按键*/
  69   2               delayms(10);
  70   2               while(keyboar()==0);
  71   2                b=keyboar();   
  72   2               c2=b ;
  73   2               
  74   2               delayms(1000);
  75   2               
  76   2                
  77   2                if(sub_mark==1)
  78   2                  {
  79   3                    if(c1>=c2)b=c1-c2;
  80   3                    else b=1000+c2-c1;
  81   3                    sub_mark=0; }
  82   2                else if(sum_mark1=1)
  83   2                  {b=c1+c2;
  84   3                   sum_mark=0;}
  85   2                
  86   2                
  87   2        
  88   2           }
  89   1      
  90   1      } 
  91          
  92          
  93           unsigned int  keyboar()/*线反转法 */
  94          { 
  95   1          unsigned int a=0;
  96   1        unsigned char a1=0,b1=0;
  97   1        /*行线为输入线,列线为输出线 */
  98   1        v1=v2=v3=0;
  99   1        h1=h2=h3=1;
 100   1        if(P2<224)/*检查行是否有按键按下 */ 
 101   1          {
 102   2           delayms(10);
 103   2           if(P2<224)
 104   2             {
 105   3               /*行线为输入线,列线为输出线 */ 
 106   3               v1=v2=v3=0;
 107   3               h1=h2=h3=1;
 108   3               a1=P2; 
 109   3               /*行线为输出线,列线为输入线 */ 
 110   3               h1=h2=h3=0;
 111   3               v1=v2=v3=1;
 112   3               b1=P2;
 113   3        
 114   3               a=a1|b1|0x03; /*与0x03相或是为了屏蔽p2.0和p2.1的影响*/
 115   3           
 116   3              }    
 117   2            }
C51 COMPILER V3.20,  SN-50203648  JSQ                                                      10/05/07  10:11:09  PAGE 3   

 118   1          
 119   1         else {
 120   2                h1=h2=h3=0;
 121   2                v1=v2=v3=1;
 122   2                if(P2<28)/*检查列是否有按键按下 */ 
 123   2                  {
 124   3                    delayms(10);
 125   3                    if(P2<28)
 126   3                    {
 127   4                      /*行线为输入线,列线为输出线 */ 
 128   4                      v1=v2=v3=0;
 129   4                      h1=h2=h3=1;
 130   4                      a1=P2; 
 131   4                      /*行线为输出线,列线为输入线 */ 
 132   4                      h1=h2=h3=0;
 133   4                      v1=v2=v3=1;
 134   4                      b1=P2;
 135   4                        
 136   4                      a=a1|b1|0x03;/*与0x03相或是为了屏蔽p2.0和p2.1的影响*/
 137   4                      
 138   4                   
 139   4                     }  
 140   3                   }
 141   2         
 142   2               } 
 143   1               
 144   1                     if(a==219){return 2;}
 145   1                      else if(a==207){return 1;}
 146   1                      else if(a==215){return 3;}
 147   1                      else if(a==187){return 5;}
 148   1                      else if(a==175){return 4;}
 149   1                      else if(a==183){return 6;}
 150   1                      else if(a==123){return 8;}
 151   1                      else if(a==111){return 7;}
 152   1                      else if(a==119){return 9;}
 153   1                      else return 0;
 154   1                   
 155   1            
 156   1        }
 157            
 158            void delayms(unsigned int i)
 159          {
 160   1        unsigned int j;
 161   1        for(;i>0;i--)
 162   1          for(j=100;j>0;j--);
 163   1      }
 164          
 165          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    736    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     14      12
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       4
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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