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

📄 manage.lst

📁 用keil开发的.单片机税控器程序.单片机用的是AT公司的.upsd3245
💻 LST
📖 第 1 页 / 共 5 页
字号:
 744   1              gyt4 tp;
 745   1      
 746   1              I2cRead(SalerNum,1,&i);
 747   1              if(i==0)return 1;                       //没有增加营业员,不需要登陆
 748   1              InitLen[0]=0;
 749   1              while(1)
 750   1              {
 751   2                      LcdDisplay(0,56,"营业员登陆",3);//清屏后再显示
 752   2                      LcdDisplay(32,56,"密  码:",1);
 753   2                      us1=InputSalerNo();
 754   2                      if(us1==0)return 0;
 755   2                      I2cRead(us1,4,tp.str);//读取密码
 756   2                      if(tp.dat==0)
 757   2                      {
 758   3                              Hint(48,40,"没有这个营业员!",1);
 759   3                              continue;
 760   3                      }
 761   2                      InitLen[0]=0;
 762   2                      pwd=GetInt(32,120,0,8,1,InitLen);//输入密码
 763   2                      if(InitLen[0]==K_TC || InitLen[0]==0xFF)return 0;
 764   2                      if(tp.dat==pwd)return 1;//密码正确
 765   2                      Hint(48,16,"密码错误!请重新输入",1);
 766   2              }
 767   1      }
 768          
 769          //-------------------------------------------------------------------------------
 770          
 771          void Txd_9600_19200(uchar flag,uint Len,uchar *str)
 772          {
 773   1              if(flag)
 774   1              {
 775   2                        COM1CS;
 776   2                        //UARTC;
 777   2                        UARTB;
 778   2                        if(BautRateFg == Bps19200)
 779   2                              UART1_Mod1_Timer2_19200;
 780   2                        else
C51 COMPILER V8.01   MANAGE                                                                03/28/2006 09:49:23 PAGE 14  

 781   2                              UART1_Mod1_Timer1_9600;
 782   2              }
 783   1      
 784   1              EA=0;
 785   1              TxdNum=0;
 786   1              TxdLen=Len;
 787   1              while(TxdNum<TxdLen)
 788   1              {
 789   2                SBUF2 = str[TxdNum];
 790   2                while((SCON2 & 0x02)==0);
 791   2                SCON2 &= 0xFC;
 792   2                TxdNum++;
 793   2              }
 794   1      }
 795          
 796          
 797          uchar Rxd_9600_19200(uchar flag,uint Len,uchar *str)
 798          {
 799   1              uchar Val=0;
 800   1              ulong i=0;
 801   1              if(flag)
 802   1              {
 803   2                        COM1CS;
 804   2                       // UARTC;
 805   2                       UARTB;
 806   2                        if(BautRateFg == Bps19200)
 807   2                              UART1_Mod1_Timer2_19200;
 808   2                        else
 809   2                              UART1_Mod1_Timer1_9600;
 810   2      
 811   2              }
 812   1      
 813   1              RxdNum=0;
 814   1              RxdLen=Len;
 815   1              while(RxdNum<RxdLen)
 816   1              {
 817   2                i=0;
 818   2                while((SCON2  & 0x01)==0)
 819   2                {
 820   3                  i++;
 821   3                  if(GetKey()==K_TC) return K_TC;
 822   3                  if(i>60000)
 823   3                    return 0;
 824   3                }
 825   2                SCON2 &= 0xFC;
 826   2                str[RxdNum]=SBUF2;
 827   2                RxdNum++;
 828   2              }
 829   1              return 1;
 830   1      }
 831          
 832          //---------------------------------------------------------------------------
 833          //      联机函数
 834          //return 0 : CrC Error
 835          //return 1 :  Crc = CS OK
 836          //return 2 :  Receive Overtime
 837          //--------------------------------------------------------------------------
 838          uchar Linking()
 839          {
 840   1              uint CrC,CS;
 841   1              while(1)
 842   1              {
C51 COMPILER V8.01   MANAGE                                                                03/28/2006 09:49:23 PAGE 15  

 843   2                      if(Rxd_9600_19200(1,7,RxdBuf)==K_TC) return 0;
 844   2      
 845   2                      if(             RxdBuf[0]==Com0 && RxdBuf[1]==Com1  && RxdBuf[2]==0x01
 846   2                               && RxdBuf[3]==0x00     && RxdBuf[4]==0x05)
 847   2                      {
 848   3                              CS = 0;
 849   3                              CS = RxdBuf[5];
 850   3                              CS <<= 8;
 851   3                              CS |= RxdBuf[6];
 852   3      
 853   3                              CrC = CRC16(&RxdBuf[0],5);
 854   3      
 855   3                              #if Debug
 856   3                              if(CS == CrC)
 857   3                              #endif
 858   3                                      return 1;
 859   3      
 860   3                              #if Debug
 861   3                              else
 862   3                                      return 0;
 863   3                              #endif
 864   3                      }
 865   2              }
 866   1      //      return 2;
 867   1      }
 868          
 869          
 870          //-------------------------------------------------------------------------
 871          //                                                      接收商品信息下载与项目信息下载与字库下载等
 872          //return 0 :    Command Error
 873          //return 1 :  OK
 874          //return 2 :  Receive Overtime
 875          //return 3 :  CrC Error
 876          //-------------------------------------------------------------------------
 877          uchar DownDispose(uchar *len,uchar *Command_Type,uchar *Datanum)
 878          {
 879   1              uchar n,CrC,CS;
 880   1              while(1)
 881   1              {
 882   2                      if(!Rxd_9600_19200(1,5,RxdBuf))         //Receive Command Head and data len
 883   2                              return 2;                                                                       //Receive Overtime
 884   2      
 885   2                      if(RxdBuf[0]==Com0 && RxdBuf[1]==Com1
 886   2                              && (RxdBuf[2]==SPDown  || RxdBuf[2]==XMDown || RxdBuf[2]==DSPDown
 887   2                              ||  RxdBuf[2]==DXMDown || RxdBuf[2]==ZKXW   || RxdBuf[2]==ZKZW
 888   2                              ||  RxdBuf[2]==DownTC  || RxdBuf[2]==BaudrateSet))
 889   2                      {
 890   3      //                      n = RxdBuf[4]-5+2;                                      //Contioue Receive other data//长度不包括本身
 891   3                              n = RxdBuf[4]-3;                                        //Contioue Receive other data//长度不包括本身
 892   3                              if(!Rxd_9600_19200(0,n,&RxdBuf[5]))
 893   3                                      return 2;
 894   3      
 895   3      //              crcstrlen=n(接收不函头的长度)-2(CRC长度)+5(头数据长度);
 896   3      
 897   3                              CrC = CRC16(&RxdBuf[0],n+3);            //n+3 = n-2+5  2 : 接收时的CRC,在计算时不能参与
 898   3                              CS = 0;
 899   3                              CS = RxdBuf[n+3];
 900   3                              CS <<= 8;
 901   3                              CS |= RxdBuf[n+4];
 902   3      
 903   3                              #if Debug
 904   3                              if(CrC == CS)
C51 COMPILER V8.01   MANAGE                                                                03/28/2006 09:49:23 PAGE 16  

 905   3                              #endif
 906   3                              {
 907   4                                      *len = n-2;
 908   4                                      *Command_Type = RxdBuf[2];
 909   4                                      *Datanum = RxdBuf[3];
 910   4                                      return 1;
 911   4                              }
 912   3                              #if Debug
 913   3                              else
 914   3                              #endif
 915   3                                      return 3;
 916   3                      }
 917   2                              return 0;
 918   2              }
 919   1      }
 920          
 921          
 922          //-------------------------------------------------------------------------
 923          //                                              正确执行的应答
 924          //datanum : 已接收到的数据包
 925          //len                   :       接收的数据长度
 926          //Redat         :       接收的数据
 927          //---------------------------------------------------------------------------
 928          void ACK(uchar datanum,uchar len,uchar *Redat)
 929          {
 930   1              uchar i;
 931   1              uint CrC;
 932   1              TxdBuf[0]='O';
 933   1              TxdBuf[1]='K';
 934   1              TxdBuf[2]=datanum;
 935   1      //      if(len != 0)            //联机时专用
 936   1                      TxdBuf[3]=len+4;                        //命令长度不包函CRC
 937   1      //      else
 938   1      //              TxdBuf[3] = 4;
 939   1              for(i=0;i<len;i++)
 940   1                      TxdBuf[4+i]=Redat[i];
 941   1      
 942   1              CrC = CRC16(TxdBuf,len+4);
 943   1              TxdBuf[len+4] = CrC>>8;
 944   1              TxdBuf[len+5] = CrC;
 945   1              Txd_9600_19200(1,len+6,TxdBuf);
 946   1      }
 947          //--------------------------------------------------------------------------
 948          //                                              不能正确执行的应答
 949          //ErrorCode :   错误代码
 950          //---------------------------------------------------------------------------
 951          void NotACK(uchar ErrorCode)
 952          {
 953   1              uint CrC;
 954   1              TxdBuf[0]='E';
 955   1              TxdBuf[1]='R';
 956   1              TxdBuf[2]=0;
 957   1              TxdBuf[3]=5;
 958   1              TxdBuf[4]=ErrorCode;
 959   1      
 960   1              CrC = CRC16(TxdBuf,5);
 961   1      
 962   1              TxdBuf[5]=CrC>>8;
 963   1              TxdBuf[6]=CrC;
 964   1              Txd_9600_19200(1,7,TxdBuf);
 965   1      }
 966          
C51 COMPILER V8.01   MANAGE                                                                03/28/2006 09:49:23 PAGE 17  

 967          //--------------------------------------------------------------------------
 968          //                                              请求下一包数据
 969          //Redatanum : 接收的数据包序号
 970          //---------------------------------------------------------------------------
 971          void ApplyNexDat(uchar Redatanum)
 972          {
 973   1              uint CrC;
 974   1              TxdBuf[0]='N';
 975   1              TxdBuf[1]='P';
 976   1              TxdBuf[2]=0;
 977   1              TxdBuf[3]=5;
 978   1              TxdBuf[4]=Redatanum;
 979   1      
 980   1              CrC = CRC16(TxdBuf,5);
 981   1      
 982   1              TxdBuf[5]=CrC>>8;
 983   1              TxdBuf[6]=CrC;
 984   1              Txd_9600_19200(1,7,TxdBuf);
 985   1      }
 986          
 987          //--------------------------------------------------------------------------
 988          //                                              请求继续等待
 989          //---------------------------------------------------------------------------
 990          
 991          
 992          //void ApplyWait()
 993          //{
 994          //      uint CrC;
 995          //      TxdBuf[0]='W';
 996          //      TxdBuf[1]='T';
 997          //      TxdBuf[2]=0;
 998          //      TxdBuf[3]=5;
 999          //
1000          //      CrC = CRC16(TxdBuf,4);

⌨️ 快捷键说明

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