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

📄 windows.lst

📁 用keil开发的.单片机税控器程序.单片机用的是AT公司的.upsd3245
💻 LST
📖 第 1 页 / 共 5 页
字号:
 949   1          x=len/2;
 950   1          if(len%2)
 951   1          {
 952   2                  bcd[0]=str[0] & 0x0f;
 953   2                  i=1;
 954   2                  j=1;
 955   2                  x++;
 956   2              }
 957   1              else
 958   1              {
 959   2                      j=0;
 960   2              i=0;
 961   2              }
 962   1              for(;i<x;i++)
 963   1              {
 964   2                      bcd[i] = str[j++];
 965   2                      bcd[i] <<=4;
 966   2                      bcd[i] |= (str[j++] & 0x0F);
 967   2      //      bcd[i] = ((str[j++]<<4) | (str[j++] & 0x0f));
 968   2              }
 969   1              bcd[i]=0;
 970   1      }
 971          
 972          uchar GetBcd(uchar row, uchar col, uchar *bcd,uchar len,uchar *key)
 973          {// Ln:BCD显示的行坐标;Col:BCD显示的列坐标;Len:输入BCD的长度;
 974   1              uchar i,j,val,k,disparr[28],tp[28];
 975   1              uchar lastposition = 0;
 976   1              bit x=0,zero=0,win;
 977   1      
 978   1              memset(disparr,0,sizeof(disparr));
 979   1              memset(tp,0,sizeof(tp));
 980   1              win=0;
C51 COMPILER V8.01   WINDOWS                                                               03/28/2006 09:48:48 PAGE 17  

 981   1              if(len&0x80)win=1;
 982   1              len &= 0x7F;
 983   1              if(len>20) len = 20;    //最大输入长度
 984   1              j=len/2;
 985   1              if(len%2)j++;
 986   1              BcdToStr(j,bcd,disparr,0);
 987   1              lastposition = strlen(disparr);
 988   1              k=strlen(key);
 989   1              while(1)
 990   1              {
 991   2                      VfdDisplayInt(disparr,len,0);
 992   2                      LcdDisplay(row, col, disparr, 0);  //显示数字
 993   2                      val = ScanNumber(row,col+lastposition*8,'_',4);
 994   2              if(val<=16)
 995   2              {
 996   3                      if(lastposition<len)
 997   3                  {
 998   4                      if(val == 16)
 999   4                      {
1000   5                              disparr[lastposition++] = '0';
1001   5                              if(lastposition<len)
1002   5                              disparr[lastposition++] = '0';
1003   5                      }
1004   4                      else 
1005   4                      {
1006   5                              if(val<10)
1007   5                                      disparr[lastposition++] = val + '0';
1008   5                              else
1009   5                                      disparr[lastposition++] = val-10+'A';
1010   5                      }
1011   4                      disparr[lastposition] = 0;
1012   4                  }
1013   3              }
1014   2              else
1015   2              {
1016   3      //              val&=0x7f;
1017   3                      switch(val)
1018   3                      {
1019   4                              case K_LEFT:
1020   4                              case K_RIGHT:
1021   4                              case K_UP:
1022   4                              case K_DOWN:    if(win)
1023   4                                                              {
1024   5                                                                      x=1;
1025   5                                                                      break;
1026   5                                                              }
1027   4                                                              continue;
1028   4                              case K_QC:              
1029   4                                                              if(lastposition>0)
1030   4                                                              {
1031   5                                                                      for(i=0;i<j;i++)bcd[i]=0;
1032   5                                                                      disparr[0] = 0;
1033   5                                                              lastposition = 0;
1034   5                                                              for(i=0;i<=len;i++)tp[i]=' ';
1035   5                                                              tp[i]=0;
1036   5                                                              LcdDisplay(row,col,tp,0);
1037   5                                                      }
1038   4                                                      else
1039   4                                                              if(win)x=1;
1040   4                                                      break;
1041   4      
1042   4                              case K_LJ:              LcdDisplay(row,col+lastposition*8,"  ",0);
C51 COMPILER V8.01   WINDOWS                                                               03/28/2006 09:48:48 PAGE 18  

1043   4                                                              if(lastposition>0)
1044   4                                                              {
1045   5                                                                      disparr[--lastposition] = 0;
1046   5                                                              }
1047   4                                                              else
1048   4                                                                      if(win)x=1;
1049   4                                              break;
1050   4      
1051   4                          case K_TC:
1052   4                          case K_HJ:          x=1;
1053   4                                                      break;
1054   4      
1055   4                              default:
1056   4                                                          for(i=0;i<k;i++)
1057   4                                                          {
1058   5                                                              if(val==key[i])
1059   5                                                              {
1060   6                                                                              x=1;
1061   6                                                                              break;
1062   6                                                                          }
1063   5                                                                      }
1064   4                                                                      break;
1065   4                              }               
1066   3                              if(x==1)
1067   3                              {
1068   4                                      StrToBcd(len,disparr,bcd);      
1069   4                                      LcdDisplay(row,col+lastposition*8," ",0);
1070   4                                      VfdClear();
1071   4                                      key[0]=val;
1072   4                                      return val;
1073   4                              }
1074   3                      }               
1075   2              }
1076   1      }
1077          
C51 COMPILER V8.01   WINDOWS                                                               03/28/2006 09:48:48 PAGE 19  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION Com017C (BEGIN)
0000         L?0381:
0000         L?0382:
0000 900000      R     MOV     DPTR,#i
0003         L?0383:
0003 E0                MOVX    A,@DPTR
0004         L?0384:
0004 75F01A            MOV     B,#01AH
0007 A4                MUL     AB
0008 2400        E     ADD     A,#LOW WinDat+02H
000A F9                MOV     R1,A
000B 7400        E     MOV     A,#HIGH WinDat+02H
000D 35F0              ADDC    A,B
000F FA                MOV     R2,A
0010 7B01              MOV     R3,#01H
0012 22                RET     
0013         L?0385:
0013 7A00        R     MOV     R2,#HIGH ?SC_0
0015 7900        R     MOV     R1,#LOW ?SC_0
0017         L?0386:
0017 900000      R     MOV     DPTR,#row
001A E0                MOVX    A,@DPTR
001B FF                MOV     R7,A
001C 900000      R     MOV     DPTR,#lastposition
001F E0                MOVX    A,@DPTR
0020 75F008            MOV     B,#08H
0023 A4                MUL     AB
0024 FE                MOV     R6,A
0025 900000      R     MOV     DPTR,#col
0028 E0                MOVX    A,@DPTR
0029 2E                ADD     A,R6
002A FD                MOV     R5,A
002B 7BFF              MOV     R3,#0FFH
002D E4                CLR     A
002E 900000      E     MOV     DPTR,#?_LcdDisplay?BYTE+05H
0031 F0                MOVX    @DPTR,A
0032 22                RET     
0033         L?0387:
0033 900000      R     MOV     DPTR,#str
0036         L?0388:
0036 120000      E     LCALL   ?C?PLDXDATA
0039 8E82              MOV     DPL,R6
003B         L?0389:
003B 758300            MOV     DPH,#00H
003E 020000      E     LJMP    ?C?CLDOPTR
0041         L?0390:
0041 900000      R     MOV     DPTR,#k
0044         L?0391:
0044 E0                MOVX    A,@DPTR
0045 FE                MOV     R6,A
0046         L?0392:
0046 900000      E     MOV     DPTR,#WinDat+01H
0049         L?0393:
0049 75F01A            MOV     B,#01AH
004C 120000      E     LCALL   ?C?OFFXADD
004F E0                MOVX    A,@DPTR
0050 22                RET     
0051         L?0394:
0051 900000      R     MOV     DPTR,#row
C51 COMPILER V8.01   WINDOWS                                                               03/28/2006 09:48:48 PAGE 20  

0054 E0                MOVX    A,@DPTR
0055 FF                MOV     R7,A
0056 900000      R     MOV     DPTR,#lastposition
0059 E0                MOVX    A,@DPTR
005A 75F008            MOV     B,#08H
005D A4                MUL     AB
005E FE                MOV     R6,A
005F 900000      R     MOV     DPTR,#col
0062 E0                MOVX    A,@DPTR
0063 2E                ADD     A,R6
0064 FD                MOV     R5,A
0065 7BFF              MOV     R3,#0FFH
0067 E4                CLR     A
0068 900000      E     MOV     DPTR,#?_LcdDisplay?BYTE+05H
006B F0                MOVX    @DPTR,A
006C 22                RET     
006D         L?0395:
006D         L?0396:
006D 900000      R     MOV     DPTR,#lastposition
0070         L?0397:
0070 E0                MOVX    A,@DPTR
0071 2400        R     ADD     A,#LOW disparr
0073         L?0398:
0073 F582              MOV     DPL,A
0075 E4                CLR     A
0076 3400        R     ADDC    A,#HIGH disparr
0078 F583              MOV     DPH,A
007A 22                RET     
007B         L?0399:
007B 900000      R     MOV     DPTR,#row
007E E0                MOVX    A,@DPTR
007F FF                MOV     R7,A
0080 A3                INC     DPTR
0081 E0                MOVX    A,@DPTR
0082 FD                MOV     R5,A
0083 7B01              MOV     R3,#01H
0085 E4                CLR     A
0086 900000      E     MOV     DPTR,#?_LcdDisplay?BYTE+05H
0089 F0                MOVX    @DPTR,A
008A 22                RET     
008B         L?0400:
008B         L?0401:
008B 900000      R     MOV     DPTR,#xp
008E 120000      E     LCALL   ?C?PSTXDATA
0091 120000      E     LCALL   ?C?LLDPTR
0094 900000      R

⌨️ 快捷键说明

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