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

📄 disp.lst

📁 用于测试步进电机
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.00  DISP                                                                   09/14/2006 16:35:48 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE DISP
OBJECT MODULE PLACED IN DISP.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DISP.C OPTIMIZE(9,SIZE) BROWSE ORDER DEBUG OBJECTEXTEND

stmt level    source

   1          /////////////////////////////////////////////////////
   2          #include <REG51STC.H>
   3          #include <ABSACC.H>
   4          #include "CMD16887.H"
   5          #include <INTRINS.H>
   6          #include "externxy.h"
   7          /*********************************************
   8          *       功能:     DISP1   金额/容量/单价    *
   9          **********************************************/
  10          void  disp_lcd1(ulong lcddata,uchar lcdadd)    //;LCD1三个窗的显示
  11          {       
  12   1              uchar  i;
  13   1              uchar  temp;
  14   1              uchar  dispmem[6];
  15   1              uchar  j;
  16   1              uchar  b;
  17   1              uchar  endhide;  //清前导零要到小数点位置
  18   1              bit   hide=0;
  19   1              bit   bymem;
  20   1              bbyte=dotmode[5];
  21   1              
  22   1              switch  (lcdadd)
  23   1              {
  24   2                      case  0:   //单价窗时
  25   2                         if (a2) 
  26   2                                      {a5=0;endhide=4;}
  27   2                              else if(a5) 
  28   2                                      {endhide=3;}
  29   2                              else 
  30   2                                      {endhide=0;}
  31   2                              break;
  32   2                      case  4:   //金额窗时
  33   2                              if (a0) 
  34   2                                      {a3=0;endhide=2;}                  //saledot=1;
  35   2                              else if(a3)  
  36   2                                      {endhide=3;}              //saledot=0;
  37   2                              else
  38   2                                      {endhide=0;}
  39   2                              break;
  40   2                      case  10:  //体积窗时
  41   2                              if (a1) 
  42   2                                      {a4=0;endhide=4;}
  43   2                              else if(a4) 
  44   2                                      {endhide=3;}
  45   2                              else
  46   2                                      {endhide=0;}
  47   2                              break;
  48   2                      default:
  49   2                    endhide=0;
  50   2                              goto lcd1_break;
  51   2                              break;
  52   2              }
  53   1              if (lcdadd==0) 
  54   1                      { b=4; }   //单价栏仅4数字
  55   1              else
C51 COMPILER V7.00  DISP                                                                   09/14/2006 16:35:48 PAGE 2   

  56   1                      {b=6; }
  57   1              for(i=0;i<b;i++)
  58   1              {  bbyte=(lcddata%10);  
  59   2                      lcddata /=10;
  60   2                      dispmem[i]=bbyte;
  61   2              }
  62   1              //-------------------------------
  63   1              switch(lcdadd)  //更新通讯表格
  64   1              {
  65   2                      case  0:   //单价窗时
  66   2                          table_buf[2]=dispmem[1]*16+dispmem[0];
  67   2                              table_buf[3]=dispmem[3]*16+dispmem[2];
  68   2                              break;
  69   2                      case  4:   //金额窗时
  70   2                              table_buf[40]=dispmem[1]*16+dispmem[0];
  71   2                              table_buf[41]=dispmem[3]*16+dispmem[2];
  72   2                              table_buf[42]=dispmem[5]*16+dispmem[4];
  73   2                              break;
  74   2                      case  10:  //体积窗时
  75   2                              table_buf[46]=dispmem[1]*16+dispmem[0];
  76   2                              table_buf[47]=dispmem[3]*16+dispmem[2];
  77   2                              table_buf[48]=dispmem[5]*16+dispmem[4];
  78   2                              break;
  79   2              }
  80   1              //-------------------------------
  81   1              AUXR |=0x02;
  82   1              for(i=b;i>0;i--)
  83   1              {  ACC=0x38;
  84   2                      XBYTE[LCDAADD]=ACC;   //ST
  85   2                      bbyte=dispmem[i-1]; 
  86   2                      if(i==endhide) hide=1;  //小数点以后不去前导零
  87   2                      if(i!=1) 
  88   2                      {
  89   3                              if(bbyte==0 && !hide)
  90   3                              {
  91   4                                      bbyte=0x0f;   //去前导零
  92   4                              }
  93   3                              else
  94   3                              { hide=1; }
  95   3                      }
  96   2                      temp=bbyte*16+i+lcdadd-1;
  97   2                      
  98   2                      for(j=8;j>0;j--)
  99   2                      {  bbyte=temp;
 100   3                         bymem=(bit)(bbyte&0x80);
 101   3                              temp<<=1;
 102   3                              bbyte=0x38;
 103   3                              a1= bymem;   //DS-->DATA
 104   3                              XBYTE[LCDAADD]=bbyte; 
 105   3                              ACC|=0x01;  
 106   3                                      _nop_();_nop_();_nop_();_nop_();
 107   3                              XBYTE[LCDAADD]=ACC;   //CP-->CLK ↑
 108   3                              ACC&=0xfe;
 109   3                              _nop_();_nop_();_nop_();_nop_();
 110   3                              XBYTE[LCDAADD]=ACC;   //CP-->CLK ↓ 
 111   3                      } 
 112   2                      ACC=0x3c;
 113   2                      _nop_();_nop_();
 114   2                      XBYTE[LCDAADD]=ACC;   //ST-->INH
 115   2                 
 116   2              }
 117   1      lcd1_break:
C51 COMPILER V7.00  DISP                                                                   09/14/2006 16:35:48 PAGE 3   

 118   1          AUXR &=0xfd;
 119   1              
 120   1      }
 121          
 122          /*********************************************
 123          *     功能:       DISP2   金额/容量/单价           *
 124          **********************************************/
 125          void  disp_lcd2(ulong lcddata,uchar lcdadd)    //;LCD1三个窗的显示
 126          {       
 127   1              uchar  i;
 128   1              uchar  temp;
 129   1              uchar  dispmem[6];
 130   1              uchar  j;
 131   1              uchar  b;
 132   1              uchar  endhide;  //清前导零要到小数点位置
 133   1              bit   hide=0;
 134   1              bit   bymem;
 135   1              bbyte=dotmode[5];
 136   1              
 137   1              switch  (lcdadd)
 138   1              {
 139   2                      case  0:   //单价窗时
 140   2                         if (a2) 
 141   2                                      {endhide=4;}
 142   2                              else if(a5) 
 143   2                                      {endhide=3;}
 144   2                              else 
 145   2                                      {endhide=0;}
 146   2                              break;
 147   2                      case  4:   //金额窗时
 148   2                              if (a0) 
 149   2                                      {endhide=2;}
 150   2                              else if(a3)  
 151   2                                      {endhide=3;}
 152   2                              else
 153   2                                      {endhide=0;}
 154   2                              break;
 155   2                      case  10:  //体积窗时
 156   2                              if (a1) 
 157   2                                      {endhide=4;}
 158   2                              else if(a4) 
 159   2                                      {endhide=3;}
 160   2                              else
 161   2                                      {endhide=0;}
 162   2                              break;
 163   2                      default:
 164   2                    endhide=0;
 165   2                              goto lcd2_break;
 166   2                              break;
 167   2              }
 168   1              if (lcdadd==0) 
 169   1                      { b=4; }   //单价栏仅4数字
 170   1              else
 171   1                      {b=6; }
 172   1              for(i=0;i<b;i++)
 173   1              {  bbyte=(lcddata%10);  
 174   2                      lcddata /=10;
 175   2                      dispmem[i]=bbyte;
 176   2              }
 177   1              //-------------------------------
 178   1              switch(lcdadd)  //更新通讯表格
 179   1              {
C51 COMPILER V7.00  DISP                                                                   09/14/2006 16:35:48 PAGE 4   

 180   2                      case  0:   //单价窗时
 181   2                          table_buf[2+53]=dispmem[1]*16+dispmem[0];
 182   2                              table_buf[3+53]=dispmem[3]*16+dispmem[2];
 183   2                              break;
 184   2                      case  4:   //金额窗时
 185   2                              table_buf[40+53]=dispmem[1]*16+dispmem[0];
 186   2                              table_buf[41+53]=dispmem[3]*16+dispmem[2];
 187   2                              table_buf[42+53]=dispmem[5]*16+dispmem[4];
 188   2                              break;
 189   2                      case  10:  //体积窗时
 190   2                              table_buf[46+53]=dispmem[1]*16+dispmem[0];
 191   2                              table_buf[47+53]=dispmem[3]*16+dispmem[2];
 192   2                              table_buf[48+53]=dispmem[5]*16+dispmem[4];
 193   2                              break;
 194   2              }
 195   1              //-------------------------------
 196   1              AUXR |=0x02;
 197   1              for(i=b;i>0;i--)
 198   1              {  ACC=0x38;
 199   2                      XBYTE[LCDBADD]=ACC;   //ST
 200   2                      bbyte=dispmem[i-1]; 
 201   2                      if(i==endhide) hide=1;  //小数点以后不去前导零
 202   2                      if(i!=1) 
 203   2                      {
 204   3                              if(bbyte==0 && !hide)
 205   3                              {
 206   4                                      bbyte=0x0f;   //去前导零
 207   4                              }
 208   3                              else
 209   3                              { hide=1; }
 210   3                      }
 211   2                      temp=bbyte*16+i+lcdadd-1;
 212   2                      
 213   2                      for(j=8;j>0;j--)
 214   2                      {  bbyte=temp;
 215   3                         bymem=(bit)(bbyte&0x80);
 216   3                              temp<<=1;
 217   3                              bbyte=0x38;
 218   3                              a1= bymem;   //DS-->DATA
 219   3                              XBYTE[LCDBADD]=bbyte; 
 220   3                              ACC|=0x01;  
 221   3                              _nop_();_nop_();_nop_();_nop_();
 222   3                              XBYTE[LCDBADD]=ACC;   //CP-->CLK ↑
 223   3                              ACC&=0xfe;
 224   3                              _nop_();_nop_();_nop_();_nop_();
 225   3                              XBYTE[LCDBADD]=ACC;   //CP-->CLK ↓ 
 226   3                      } 
 227   2                      ACC=0x3c;
 228   2                      XBYTE[LCDBADD]=ACC;   //ST-->INH
 229   2                 
 230   2              }
 231   1      lcd2_break:
 232   1         AUXR &=0xfd;
 233   1      }

⌨️ 快捷键说明

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