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

📄 windows.lst

📁 用keil开发的.单片机税控器程序.单片机用的是AT公司的.upsd3245
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V8.01   WINDOWS                                                               03/28/2006 09:48:48 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE WINDOWS
OBJECT MODULE PLACED IN Windows.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Windows.c LARGE OPTIMIZE(9,SIZE) BROWSE DEBUG OBJECTEXTEND CODE

line level    source

   1          /*
   2          * Copyright (c) 2004,成都港顺科技发展有限公司
   3          * All rights reserved.
   4          *
   5          * 编 译 器:Keil:C Compiler:7.20;Assembler:7.10
   6          * 工程名称:POS-Test.UV2
   7          * 文件名称:Windows.C
   8          * 摘  要:窗体显示
   9          *
  10          * 单 片 机:uPSD3254
  11          * 当前版本:0.4
  12          * 作  者:李凯
  13          * 完成日期:2004-12-7 14:45
  14          */
  15          
  16          #include "Main.h"
  17          
  18          void WindowsSet(uchar x)
  19          {
  20   1              uchar i;
  21   1      
  22   1              memset(WinDat,0,sizeof(WinDat));
  23   1              memset(WinHint,0,sizeof(WinHint));
  24   1              for(i=0;i<x;i++)WinHint[i][0]=1;
  25   1      }
  26          
  27          void VfdDisplayInt(uchar *str,uchar MaxNum,uchar Pwd)
  28          {// Pwd = 1 显示密码 Pwd = 0显示整数
  29   1              uint Cursor = 0xffff,DigitDot;
  30   1          uchar i,position,IntLen=7,Dot,AllLen;
  31   1          uchar VFDdisbuff[13];
  32   1      
  33   1          for(i=0;i<10;i++) VFDdisbuff[i]=0x13;
  34   1          if(MaxNum<7)  Cursor =~(Cursor << MaxNum+6);  //显示下划线_____
  35   1          else Cursor = 0x1fff;           //如果超出7位,则只显7位
  36   1      
  37   1          IntLen = AllLen = 0;
  38   1          for(i=0;i<7;i++)
  39   1          {
  40   2            if(str[i]==0) break;
  41   2              if(str[i]!='.')IntLen++;
  42   2              AllLen++;
  43   2          }
  44   1          position = 10 - IntLen;
  45   1          if((position<3) || position>10 )  return; //显示超出范围
  46   1          for(i=0;i<AllLen;i++)
  47   1          {
  48   2            if(str[i]=='.') continue;
  49   2            if(Pwd == 1)
  50   2              VFDdisbuff[position++] = 0x10;   //'-'
  51   2            else
  52   2              VFDdisbuff[position++] = str[i]-'0';
  53   2          }
  54   1          Dot = i = 0;
  55   1          while(IntLen!=0)
C51 COMPILER V8.01   WINDOWS                                                               03/28/2006 09:48:48 PAGE 2   

  56   1          {  i++;
  57   2             if(str[IntLen]=='.') { Dot = i;  break; }
  58   2             IntLen--;
  59   2          }
  60   1          DigitDot = 0x0020;
  61   1          DigitDot <<= Dot;
  62   1          VfdDisplay(VFDdisbuff,Cursor,DigitDot);            //显示
  63   1      }
  64          
  65          void ScrollBar(uchar CurrentRow, uchar FullRow)
  66          {//CurrentRow  当前行位置  FullRow 总行数
  67   1              uchar const BarArr[]={
  68   1              0xFF,0x41,0x51,0x59,0x5D,0x59,0x51,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
  69   1          0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
  70   1          0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
  71   1          0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x82,0x8A,0x9A,0xBA,0x9A,0x8A,0xFF
  72   1          };
  73   1          uchar val,Step,BarLen;
  74   1      
  75   1          CurrentRow-=1;
  76   1          val = FullRow/4;
  77   1          if((FullRow%4)!=0) val += 1;
  78   1          FullRow-=1;
  79   1          BarLen = (63-16)/val;       //滚动条
  80   1          val = 48-BarLen;                    //48=64-16,可显示的总长度
  81   1          Step = val/FullRow;                 //每行移动的点数
  82   1              ShowPicture(0,184,64,192,BarArr);
  83   1          if(CurrentRow<FullRow)
  84   1              DisplayRectangle(8+Step*CurrentRow,186,8+(Step*CurrentRow)+BarLen,189,1);
  85   1          else
  86   1              DisplayRectangle(55-BarLen,186,55,189,1);  //最后一行64-8=55
  87   1      }
  88          
  89          void Dis4HintMode(uchar StartLn,uchar CurLn,uchar *InputLocation)
  90          {
  91   1              uchar i,j,k,DisMode,adr=0,InputStr[25],val;
  92   1              gyt4 *xp;
  93   1              ulong num;
  94   1      
  95   1              StartLn -= 1;
  96   1              CurLn -= 1;
  97   1              k=StartLn+4;
  98   1              for(i=StartLn;i<k;i++)
  99   1              {
 100   2                      if(WinHint[i][0]==0)return;
 101   2                      if(i==CurLn) DisMode = 0x11;    //清除本行并显示反白效果
 102   2              else DisMode = 0x01;
 103   2              memset(InputStr,0,sizeof(InputStr));    
 104   2              switch(WinDat[i][0])
 105   2              {
 106   3                      case 1: //为1、7表示显示整数
 107   3                      case 7: xp = &WinDat[i][2];
*** WARNING C182 IN LINE 107 OF WINDOWS.C: pointer to different objects
 108   3                                      num=xp->dat;
 109   3                                      NumToStr(num,InputStr,SwitchInt);
 110   3                                      break;
 111   3      
 112   3                      case 2: //为2、8表示显示小数
 113   3                      case 8: xp = &WinDat[i][2];
*** WARNING C182 IN LINE 113 OF WINDOWS.C: pointer to different objects
 114   3                                      num=xp->dat;
 115   3                                      NumToStr(num,InputStr,SwitchFloat);
C51 COMPILER V8.01   WINDOWS                                                               03/28/2006 09:48:48 PAGE 3   

 116   3                                      break;
 117   3      
 118   3                      case 3: strcpy(InputStr,&WinDat[i][2]); //显示汉字
 119   3                                      break;
 120   3      
 121   3                      case 4: xp = &WinDat[i][2];
*** WARNING C182 IN LINE 121 OF WINDOWS.C: pointer to different objects
 122   3                                      num=xp->dat;
 123   3                                      NumToStr(num,InputStr,SwitchInt);       //显示密码
 124   3                                  val = strlen(InputStr);
 125   3                                  for(j=0;j<val;j++) InputStr[j] = '*';
 126   3                                  InputStr[j] = 0;
 127   3                                  break;
 128   3      
 129   3                      case 5: //为5、6表示显示BCD码数组
 130   3                      case 6: j=WinDat[i][1]/2;
 131   3                                              if(WinDat[i][1]%2)j+=1;
 132   3                                      BcdToStr(j,&WinDat[i][2],InputStr,0);
 133   3                                      break;
 134   3      
 135   3                      default:break;//其它方式未定义,不处理
 136   3              }
 137   2              LcdDisplay(adr,0,&WinHint[i][1],DisMode);       
 138   2              if(InputStr[0]!=0)
 139   2                      LcdDisplay(adr,InputLocation[i],InputStr,0);            
 140   2              adr +=16;
 141   2              }
 142   1      }
 143          
 144          void Dis4Hint(uchar StartLn,uchar CurLn)
 145          {
 146   1              uchar i,DisMode,adr=0;  
 147   1      
 148   1          StartLn -= 1;
 149   1          CurLn -= 1;
 150   1          for(i=StartLn;i<StartLn+4;i++)
 151   1          {
 152   2              if(i==CurLn) DisMode = 0x11;    //清除本行并显示反白效果
 153   2              else DisMode = 0x01;
 154   2              if(WinHint[i][0]==0) return;
 155   2              LcdDisplay(adr,0,WinHint[i]+1,DisMode);
 156   2              adr +=16;
 157   2          }
 158   1      }
 159          
 160          uchar DisMenu(uchar no,uchar MenuLen,uchar *key)
 161          {
 162   1              uchar i,val,k;
 163   1          uchar StartLn, CurLn;
 164   1      
 165   1          if(no==0) no = 1;
 166   1          CurLn = no;
 167   1          if(no<=4)StartLn = 1;
 168   1          else  StartLn = no-3;
 169   1      
 170   1              k=strlen(key);
 171   1          while(1)
 172   1          {
 173   2              Dis4Hint(StartLn, CurLn);
 174   2              ScrollBar(CurLn,MenuLen);
 175   2              val = ScanNumber(0,0,0,0);
 176   2              if((val<10) && (val>0) && (val<=MenuLen))  //是数字键1-9
C51 COMPILER V8.01   WINDOWS                                                               03/28/2006 09:48:48 PAGE 4   

 177   2              {
 178   3                      key[0] = 0;
 179   3                      return val;
 180   3              }
 181   2      //              val&=0x7F;
 182   2              switch(val)
 183   2              {
 184   3                              case K_UP:      if(CurLn>StartLn)
 185   3                              CurLn--;
 186   3                              else
 187   3                              {
 188   4                                      CurLn--; StartLn--;
 189   4                                      if((CurLn<1) || (StartLn<1))
 190   4                                      {
 191   5                                              CurLn = MenuLen;
 192   5                                              if(MenuLen>3)
 193   5                                              {
 194   6                                              StartLn = MenuLen - 3;
 195   6                                              }
 196   5                                              else
 197   5                                              {
 198   6                                              StartLn = 1;
 199   6                                              }
 200   5                                      }
 201   4                                  }
 202   3                                    break;
 203   3      
 204   3                      case K_DOWN:if(CurLn<(StartLn+3))
 205   3                              {
 206   4                                      CurLn++;
 207   4                                      if(CurLn>MenuLen)
 208   4                                      {
 209   5                                      CurLn = 1;
 210   5                                      StartLn = 1;
 211   5                                      }
 212   4                              }
 213   3                              else
 214   3                              {
 215   4                                      CurLn++; StartLn++;
 216   4                                      if((CurLn>MenuLen) || (StartLn>MenuLen))
 217   4                                      {
 218   5                                              CurLn = 1;
 219   5                                      StartLn = 1;
 220   5                                      }
 221   4                              }
 222   3                                      break;
 223   3      
 224   3                      case K_LEFT:if(StartLn>4)        //不在第一页
 225   3                              {
 226   4                                      StartLn-=4;
 227   4                                      CurLn-=4;
 228   4                              }
 229   3                              else
 230   3                              {

⌨️ 快捷键说明

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