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

📄 windows.lst

📁 用keil开发的.单片机税控器程序.单片机用的是AT公司的.upsd3245
💻 LST
📖 第 1 页 / 共 5 页
字号:
 709   6                                                      if(lastposition<len)
 710   6                                      {
 711   7                                              disparr[lastposition++] = '0';
 712   7                                              dotlen--;
 713   7                                      }
 714   6                                  }
 715   5                                  else disparr[lastposition++] = val + '0';
 716   5                                  disparr[lastposition] = 0;
 717   5                              }
 718   4                          }
 719   3                          continue;
 720   3                      }
 721   2              
 722   2                      {
 723   3      //                      val&=0x7F;
 724   3                      switch(val)
 725   3                      {
 726   4                              case    K_LEFT:
 727   4                              case    K_RIGHT:
 728   4                              case    K_UP:
 729   4                              case    K_DOWN: if(win)
 730   4                                                              {
 731   5                                                                      x=1;
 732   5                                                                      break;
C51 COMPILER V8.01   WINDOWS                                                               03/28/2006 09:48:48 PAGE 13  

 733   5                                                              }
 734   4                                                              continue;
 735   4                                                      
 736   4                              case    K_DOT:  if(dot==1 || zero==0)continue;
 737   4                                                              if(lastposition<len)
 738   4                                                                  {
 739   5                                                                      disparr[lastposition++] ='.';
 740   5                                                          disparr[lastposition] = 0;
 741   5                                                          dot=1;
 742   5                                                          dotlen=2;   //小数点后只能输入两位数字
 743   5                                                                      }
 744   4                                                                      break;
 745   4      
 746   4                                      case    K_QC:   disparr[0] = 0;
 747   4                                                      lastposition = 0;
 748   4                                                      dot=0;
 749   4                                              dotlen=0xFF;
 750   4                                              zero=0;
 751   4                                                      for(i=0;i<=len;i++)tp[i]=' ';
 752   4                                                      tp[i]=0;
 753   4                                                      LcdDisplay(row,col,tp,0);
 754   4                                                      break;
 755   4      
 756   4                                      case    K_LJ:   LcdDisplay(row,col+lastposition*8,"  ",0);
 757   4                                                                      if(lastposition>0)
 758   4                                              {
 759   5                                                      lastposition--;
 760   5                                                      if(lastposition==0)
 761   5                                                      {
 762   6                                                              zero=0;
 763   6                                                      }
 764   5                                                      if(disparr[lastposition]=='.')
 765   5                                                      {
 766   6                                                              dot=0;
 767   6                                                              dotlen=0xFF;
 768   6                                                      }
 769   5                                                      if(dot==1)dotlen++;
 770   5                                                                      disparr[lastposition] = 0;
 771   5                                                              }
 772   4                                              break;
 773   4      
 774   4                              //      case    K_TC:
 775   4                          case        K_HJ:   x=1;
 776   4                                                      break;
 777   4      
 778   4                          default:            i=0;
 779   4                                                      while(key[i]!=0)                                                        
 780   4                                                          {
 781   5                                                              if(val==key[i])
 782   5                                                              {
 783   6                                                                              x=1;
 784   6                                                                              break;
 785   6                                                                          }
 786   5                                                                          i++;
 787   5                                                                      }
 788   4                                                                      break;;
 789   4                              }
 790   3                              if(x==1)
 791   3                              {
 792   4                                      key[0] = val ;
 793   4                                      i=0;
 794   4                                      while(disparr[i]!=0)
C51 COMPILER V8.01   WINDOWS                                                               03/28/2006 09:48:48 PAGE 14  

 795   4                                      {
 796   5                                              if(disparr[i]!='.')
 797   5                                              {
 798   6                                                      returnvalue=(ulong)returnvalue*10L+(ulong)disparr[i]-'0';
 799   6                                              }
 800   5                                              else
 801   5                                              {
 802   6                              disparr[i+3] = 0; //只要两位小数
 803   6                              if(disparr[i+1]==0) disparr[i+1] = '0';
 804   6                              if(disparr[i+2]==0) disparr[i+2] = '0';
 805   6                              }
 806   5                                              i++;
 807   5                                      }
 808   4                                      if(disparr[i-3]!='.') returnvalue *=100;        //没有按小数点则*100
 809   4                                      LcdDisplay(row,col+lastposition*8," ",0);       //清除光标
 810   4                                      VfdClear();
 811   4                                      return returnvalue;
 812   4                              }
 813   3                      }
 814   2          }
 815   1      }
 816          
 817          //返回输入的整数值
 818          //row  整数显示的行坐标  col 整数显示的列坐标  dat 显示初始值
 819          //len:输入数据最大允许长度
 820          //key[]:返回时存放按键扫描码,keyvalue数组长度至少1字节
 821          //存放有效按键的值,当输入键值与keyvalue数组中任意一位相等时退出
 822          ulong GetInt(uchar row, uchar col, ulong dat, uchar len,uchar flg,uchar *key)
 823          {
 824   1              uchar i, val, k,disparr[26],tp[25];
 825   1          uchar lastposition = 0;
 826   1          ulong returnvalue=0;
 827   1          bit x=0,zero=0,win;
 828   1              
 829   1              win=0;
 830   1              if(len&0x80)win=1;
 831   1              len &= 0x7F;
 832   1          if(len>24) len = 24;    //输入数据最大允许长度
 833   1          disparr[0]=0;
 834   1      //    if(dat!=0)
 835   1      //    {
 836   1            NumToStr(dat,disparr,0);
 837   1      //      LcdDisNum(row, col, disparr, flg);
 838   1      //    }
 839   1          lastposition = strlen(disparr);
 840   1              k=strlen(key);
 841   1      //    VfdDisplayInt(disparr,len,flg);
 842   1              while(1)
 843   1          {
 844   2              LcdDisNum(row, col, disparr, flg);  //显示数字
 845   2              VfdDisplayInt(disparr,len,flg);
 846   2                      val = ScanNumber(row,col+lastposition*8,'_',1);
 847   2              if(RxdFlg==1)
 848   2              {
 849   3                      key[0] = 0;
 850   3                      RxdFlg=0;
 851   3                      IEA &= 0xef;
 852   3                      LcdDisplay(row,col+lastposition*8," ",0);//清除光标
 853   3                      VfdClear();
 854   3                      return 0;
 855   3              }        
 856   2              if(val>=0x0A && val<=0x0F)continue;
C51 COMPILER V8.01   WINDOWS                                                               03/28/2006 09:48:48 PAGE 15  

 857   2              if(val<10 || val==16)
 858   2              {
 859   3                      if(zero==0 && (val==0 || val==16))continue;
 860   3                      zero=1;
 861   3                      if(lastposition<len)
 862   3                      {
 863   4                              if(val == 16)
 864   4                      {
 865   5                              disparr[lastposition++] = '0';
 866   5                              if(lastposition<len)
 867   5                                      disparr[lastposition++] = '0';
 868   5                      }
 869   4                      else disparr[lastposition++] = val + '0';
 870   4                      disparr[lastposition] = 0;
 871   4                      }
 872   3              }       
 873   2                      else
 874   2              {
 875   3      //              val&=0x7f;
 876   3                      switch(val)
 877   3                      {
 878   4                              case K_LEFT:
 879   4                              case K_RIGHT:
 880   4                              case K_UP:
 881   4                              case K_DOWN:if(win)
 882   4                                                      {
 883   5                                                              x=1;
 884   5                                                              break;
 885   5                                                      }
 886   4                                                      continue;
 887   4                              
 888   4                          case K_QC:  disparr[0] = 0;
 889   4                                      zero=0;
 890   4                                      lastposition = 0;
 891   4                                      for(i=0;i<=len;i++)tp[i]=' ';
 892   4                                      tp[i]=0;
 893   4                                      LcdDisplay(row,col,tp,0);
 894   4                                      break;
 895   4      
 896   4                          case K_LJ:  LcdDisplay(row,col+lastposition*8,"  ",0);
 897   4                                      if(lastposition>0)
 898   4                                      {
 899   5                                              disparr[--lastposition] = 0;
 900   5                                      }
 901   4                                      break;
 902   4      
 903   4                  //        case K_TC:
 904   4                          case K_HJ:  x=1;
 905   4                                      break;
 906   4      
 907   4                          default:
 908   4                                      for(i=0;i<k;i++)
 909   4                                      {
 910   5                                              if(val==key[i])
 911   5                                              {
 912   6                                                      x=1;
 913   6                                                      break;
 914   6                                              }
 915   5                                              }
 916   4                                              if(x!=1)continue;
 917   4                      }
 918   3                      if(x==1)
C51 COMPILER V8.01   WINDOWS                                                               03/28/2006 09:48:48 PAGE 16  

 919   3                      {
 920   4                              key[0] = val;
 921   4                              i=0;
 922   4                              while(disparr[i]!=0)
 923   4                              {
 924   5                              returnvalue=(ulong)returnvalue*10L+(ulong)disparr[i]-'0';
 925   5                              i++;
 926   5                              }
 927   4                              LcdDisplay(row,col+lastposition*8," ",0);//清除光标
 928   4                              VfdClear();
 929   4                              return returnvalue;
 930   4                      }
 931   3              }
 932   2              }
 933   1      }
 934          
 935          //-------------------------------------------------------
 936          //                 ASCII转换为BCD码
 937          //-------------------------------------------------------
 938          void StrToBcd(uchar len,uchar *str,uchar *bcd)
 939          {//如果str长度是奇数,最高位补0
 940   1              uchar i,j,x;
 941   1      
 942   1          j=strlen(str);
 943   1          for(i=0;i<j;i++)
 944   1          {
 945   2              if(str[i]>'9')str[i]=str[i]-'A'+10;
 946   2              else str[i]-='0';
 947   2          }
 948   1          if(len>j)len=j;

⌨️ 快捷键说明

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