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

📄 manage.lst

📁 用keil开发的.单片机税控器程序.单片机用的是AT公司的.upsd3245
💻 LST
📖 第 1 页 / 共 5 页
字号:
1001          //
1002          //      TxdBuf[4]=CrC>>8;
1003          //      TxdBuf[5]=CrC;
1004          //      Txd_9600_19200(1,6,TxdBuf);
1005          //}
1006          
1007          
1008          //--------------------------------------------------------------------------
1009          //                                              退出请求命令
1010          //---------------------------------------------------------------------------
1011          
1012          //void Exit()
1013          //{
1014          //      uint CrC;
1015          //      TxdBuf[0]='E';
1016          //      TxdBuf[1]='X';
1017          //      TxdBuf[2]=0;
1018          //      TxdBuf[3]=5;
1019          //
1020          //      CrC = CRC16(TxdBuf,4);
1021          //
1022          //      TxdBuf[4]=CrC>>8;
1023          //      TxdBuf[5]=CrC;
1024          //      Txd_9600_19200(1,6,TxdBuf);
1025          //}
1026          
1027          uchar LinkChuLi()
1028          {
C51 COMPILER V8.01   MANAGE                                                                03/28/2006 09:49:23 PAGE 18  

1029   1              uchar LinkFg;
1030   1      
1031   1              LinkFg = Linking();
1032   1              if(LinkFg == 0)     //联机失败
1033   1              {
1034   2      //              ReHint("-^|^-","联机失败.");
1035   2      //              NotACK(LinkER);
1036   2                      return 0;
1037   2              }
1038   1      //      if(LinkFg == 2)
1039   1      //      {
1040   1      //              ReHint("-^||^-","联机超时.");
1041   1      //              NotACK(Overtime);
1042   1      //              return 0;
1043   1      //      }
1044   1              ACK(0,0,&LinkFg);               //联机成功
1045   1              return 1;
1046   1      }
1047          
1048          
1049          //void InitSerial()
1050          //{
1051          //      COM1CS;
1052          //  UARTC;
1053          //  UART1_Mod1_Timer1_9600;
1054          //}
1055          //---------------------------------------------------------------------------
1056          //            下载
1057          //---------------------------------------------------------------------------
1058          void WareDown()
1059          {
1060   1              uchar EraseFg,ReFg,i;
1061   1              uchar Len,Stype=0,Type,Bao;
1062   1              ulong addr,num;//商品信息地址:WareAdr//项目信息地址ItemAdr
1063   1      
1064   1      //      InitSerial();
1065   1      
1066   1      
1067   1              ReHint("正在联机....","请稍候/");
1068   1      
1069   1      
1070   1              if(!LinkChuLi())
1071   1                      return;
1072   1      
1073   1              ReHint("联机成功.","请下载信息/");
1074   1      
1075   1              num = 0;
1076   1              EraseFg = 1;
1077   1      
1078   1              while(1)
1079   1              {
1080   2      
1081   2                      ReFg = DownDispose(&Len,&Type,&Bao);
1082   2      
1083   2                      if(ReFg == 0)                                                           //命令头错误
1084   2                      {
1085   3                              NotACK(ComandEr);
1086   3      //                      return;
1087   3                      }
1088   2                      #if Debug
1089   2      //  if(ReFg == 2)
1090   2      //                      NotACK(ReceiveOver);                    //接收超时
C51 COMPILER V8.01   MANAGE                                                                03/28/2006 09:49:23 PAGE 19  

1091   2                      #endif
1092   2                      if(ReFg == 3)
1093   2                              NotACK(CrCEr);
1094   2      
1095   2                      if(ReFg == 1)
1096   2                      {
1097   3                              if(Stype!=Type) for(i=0;i<0xff;i++) TxdBuf[i]=RxdBuf[i];
1098   3      
1099   3                              switch(Type)
1100   3                              {
1101   4                                      case SPDown:                                            //全部商品信息下载
1102   4                                      case DSPDown:                                           //单个商品信息下载
1103   4                                              if(Stype != Type)
1104   4                                              {
1105   5                                                      ReHint(" ^_^ ","正在下载商品信息/");  //如果本次接收的命令不等于上次接收的命令则说明
1106   5                                                      addr = WareAdr;                         //是下一个命令
1107   5                                              }
1108   4                                              break;
1109   4                                      case XMDown:                                            //全部项目信息下载
1110   4                                      case DXMDown:                                           //单个项目信息下载
1111   4                                              if(Stype != Type)
1112   4                                              {
1113   5                                                      ReHint(" ^_^ ","正在下载项目信息/");
1114   5                                                      addr = ItemAdr;
1115   5                                              }
1116   4                                              break;
1117   4                                      case ZKXW:                                                      //西方字库下载
1118   4                                              if(Stype != Type)
1119   4                                              {
1120   5                                                      ReHint(" ^_^ ","正在下载GB18030字库/");
1121   5      //                                              ReHint(" ^_^ ","正在下载西文字库/");
1122   5                                                      addr = xWStartadr;
1123   5                                              }
1124   4                                              break;
1125   4                                      case ZKZW:                                                      //中文字库下载
1126   4                                              if(Stype != Type)
1127   4                                              {
1128   5                                                      ReHint(" ^_^ ","正在下载中文字库/");
1129   5                                                      addr = zWStartadr;
1130   5                                              }
1131   4                                              break;
1132   4                                      case BaudrateSet:                               //波特率设置
1133   4                                              ACK(Bao,0,&RxdBuf[5]);
1134   4                                              if(RxdBuf[5] == Bps19200)
1135   4                                              {
1136   5                                                      ReHint("波特率设置成功.","现在通讯速率:19200Bps/");
1137   5                                                      BautRateFg = Bps19200;
1138   5                                              }
1139   4                                              else
1140   4                                              {
1141   5                                                      ReHint("波特率设置成功.","现在通讯速率:9600Bps/");
1142   5                                                      BautRateFg = Bps9600;
1143   5                                              }
1144   4      
1145   4                                              break;
1146   4                                      case DownTC:return;                                                             //退出
1147   4                                      default:return;
1148   4                              }
1149   3      
1150   3                              if(Stype!=Type) for(i=0;i<0xff;i++) RxdBuf[i]=TxdBuf[i];
1151   3      
1152   3                              if(Type != BaudrateSet)
C51 COMPILER V8.01   MANAGE                                                                03/28/2006 09:49:23 PAGE 20  

1153   3                              {
1154   4      //                              ACK(Bao,0,&RxdBuf[5]);
1155   4      
1156   4                                      Stype=Type;                                     //保存现在的命令类型
1157   4                                      StartDown(Type,addr,&EraseFg,Len);
1158   4                                      addr += Len;
1159   4                                      if(Bao != 0)
1160   4                                      {
1161   5                                              ApplyNexDat(Bao);
1162   5                                      }
1163   4                                      else
1164   4                                              ReHint(" ^_^ ","下载完成!/");
1165   4                              }
1166   3                      }
1167   2              }
1168   1      }
1169          
1170          
1171          uchar StartDown(uchar type,ulong address,uchar *EraseFlag,uchar len)
1172          {
1173   1              uchar chip;
1174   1              ulong offset;
1175   1              uchar *poin;
1176   1      
1177   1              poin = &RxdBuf[5];
1178   1      
1179   1              if(type == DSPDown || type == DXMDown)
1180   1              {
1181   2                      chip = FlashDat;
1182   2                      offset = 0;
1183   2                      offset = RxdBuf[5];
1184   2                      offset <<= 8;
1185   2                      offset |= RxdBuf[6];
1186   2                      if(type == DSPDown)
1187   2                              address = WareAdr+(offset-1)*SPlen;
1188   2                      if(type == DXMDown)
1189   2                              address = ItemAdr+(offset-1)*XMlen;
1190   2      
1191   2                      poin = &RxdBuf[7];
1192   2                      len -= 2;
1193   2              }
1194   1      
1195   1              if(type == ZKXW || type == ZKZW)
1196   1              {
1197   2                      chip = Flashziku;
1198   2                      if(*EraseFlag)
1199   2                      {
1200   3                              *EraseFlag = 0;
1201   3                              #if Erasetest                                           //测试时使用,如果不擦除则将些标志置为 0
1202   3                              SerialFlashBulkErase(chip);
1203   3                              #endif
1204   3                      }
1205   2              }
1206   1              if(type == SPDown || type == XMDown)
1207   1              {
1208   2                      chip = FlashDat;
1209   2              }
1210   1      
1211   1              #if write                                                                       //如果不对Flash进行写操作则将些标志置为 0
1212   1              SerialFlashWrite(chip,address,len,poin);
1213   1              #endif
1214   1              return 1;
C51 COMPILER V8.01   MANAGE                                                                03/28/2006 09:49:23 PAGE 21  

1215   1      }
C51 COMPILER V8.01   MANAGE                                                                03/28/2006 09:49:23 PAGE 22  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION Com0130 (BEGIN)
0000         L?0305:
0000         L?0306:
0000 FF                MOV     R7,A
0001 E4                CLR     A
0002 3E                ADDC    A,R6
0003 FE                MOV     R6,A
0004 E4                CLR     A
0005 3D                ADDC    A,R5
0006 FD                MOV     R5,A
0007 E4                CLR     A
0008 3C                ADDC    A,R4
0009 FC                MOV     R4,A
000A         L?0307:
000A 900000      E     MOV     DPTR,#?_SerialFlashRead?BYTE+01H
000D 120000      E     LCALL   ?C?LSTXDATA
0010 900000      E     MOV     DPTR,#?_SerialFlashRead?BYTE+05H
0013 E4                CLR     A
0014 F0                MOVX    @DPTR,A
0015 A3                INC     DPTR
0016 22                RET     
0017         L?0308:
0017         L?0309:
0017 900000      R     MOV     DPTR,#us1
001A 7A00        R     MOV     R2,#HIGH mydat
001C 7900        R     MOV     R1,#LOW mydat
001E         L?0310:
001E E0                MOVX    A,@DPTR
001F FE                MOV     R6,A
0020 A3                INC     DPTR
0021 E0                MOVX    A,@DPTR
0022 FF                MOV     R7,A
0023 7B01             

⌨️ 快捷键说明

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