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

📄 isr.lst

📁 烧录器的上位机控制程序代码,和下位机程序代码,包括USB通讯固件
💻 LST
📖 第 1 页 / 共 2 页
字号:
 213   2                         {
 214   3                                 if(addr==0)
 215   3                                              pulse_read();
 216   3                                 otp_read_usb(addr);
 217   3                                      P1=P1^0x01;
 218   3                                 addr++;
 219   3                                 D12_WriteEndpoint(5, 64, EpBuf);
 220   3                         }
 221   2                         break;
 222   2                         case 0xa3:///读OTP_CONFIG
 223   2                         {
 224   3                                 pulse_read();
 225   3                                 read_configue();
 226   3                                 GenEpBuf[1] = EpBuf[0];
 227   3                                 GenEpBuf[2] = EpBuf[1];
 228   3                                 D12_WriteEndpoint(3, 3, GenEpBuf);
 229   3                         }
 230   2                         break;
 231   2                 case 0xa4:///写CONFIG(FILE)->OTP及读出回送
 232   2                         {
 233   3                                 EpBuf[0] = GenEpBuf[1];
 234   3                                 EpBuf[1] = GenEpBuf[2];
 235   3                                 write_configue(); 
 236   3                                 pulse_read();
 237   3                                 read_configue();
 238   3                                 GenEpBuf[1] = EpBuf[0];
 239   3                                 GenEpBuf[2] = EpBuf[1];
 240   3                                 D12_WriteEndpoint(3, 3, GenEpBuf);
 241   3      
C51 COMPILER V8.02   ISR                                                                   12/19/2007 17:51:24 PAGE 5   

 242   3                         }
 243   2                         break;
 244   2               case 0xa5://表示读FLASH程序   
 245   2                         {
 246   3      
 247   3                                         CE_FLS = 0;//选中FLASH IC
 248   3                                         for(len=0;len<128;len++)
 249   3                                         {
 250   4                                                 EpBuf[len] = XBYTE[len+addr*128];
 251   4                                         }
 252   3                                              P1=P1^0x01;
 253   3                                         addr++;
 254   3                                         D12_WriteEndpoint(5, 64, EpBuf);
 255   3                                         busb_tx=1;
 256   3              
 257   3                         }
 258   2                         break;
 259   2                      case 0xaa:              //FILE->OTP
 260   2                         { 
 261   3                                 addr =0;two_ci=0;
 262   3                                 dir_otp_flash = 0;
 263   3                         }
 264   2                         break;
 265   2                        
 266   2                 case 0xab://表示加密IC
 267   2                         {
 268   3                                 GenEpBuf[1]=(unsigned char)write_protect();
 269   3                                 D12_WriteEndpoint(3, 2, GenEpBuf);
 270   3                         }
 271   2                         break;
 272   2      
 273   2                case 0xac:    //读FLASH的CONFIG
 274   2                         {
 275   3                                 CE_FLS =0;//选中FLASH IC
 276   3                                 GenEpBuf[1]=XBYTE[0X8000];
 277   3                                 GenEpBuf[2]=XBYTE[0x8001];
 278   3                                 GenEpBuf[3]=XBYTE[0X8002];
 279   3                                 GenEpBuf[4]=XBYTE[0x8003];
 280   3                                 D12_WriteEndpoint(3, 5, GenEpBuf);
 281   3                         }
 282   2                         break;
 283   2                
 284   2                 case 0xad:           //写FLASH的CONFIG
 285   2                         {
 286   3                                        CE_FLS =0;//选中FLASH IC
 287   3                            XBYTE[0x5555]=0xaa;
 288   3                                        XBYTE[0x2aaa]=0x55;
 289   3                                        XBYTE[0x5555]=0xa0;
 290   3                                        XBYTE[0x8000]=GenEpBuf[1];
 291   3                                        XBYTE[0x8001]=GenEpBuf[2];
 292   3                                        XBYTE[0x8002]=GenEpBuf[3];
 293   3                                        XBYTE[0x8003]=GenEpBuf[4];
 294   3                                        otp_type=GenEpBuf[4]; //更新otp_type
 295   3                                        for (len=0;len<124;len++)
 296   3                                        {
 297   4                                                XBYTE[0x8004+len]=0xff;
 298   4                                        }
 299   3                                        DelayNms(20);
 300   3                                       GenEpBuf[1]=XBYTE[0X8000];
 301   3                                       GenEpBuf[2]=XBYTE[0x8001];
 302   3                                      GenEpBuf[3]=cal_checksum()/0x100;
 303   3                                      GenEpBuf[4]=cal_checksum()%0x100;
C51 COMPILER V8.02   ISR                                                                   12/19/2007 17:51:24 PAGE 6   

 304   3                                 D12_WriteEndpoint(3, 5, GenEpBuf);
 305   3                      
 306   3                         }
 307   2                         break;
 308   2      
 309   2                 case 0x00:           //复位
 310   2                         {
 311   3                                 addr=0;addr=0;two_ci=0;two_ci=0;busb_tx=0;
 312   3                                      D12_WriteEndpoint(3, 1, GenEpBuf);
 313   3                         }
 314   2                         break;
 315   2                 case 0x01:           //收到连机信号,然后初始划
 316   2                         {
 317   3                                 //初始化
 318   3                                 addr=0;addr=0;two_ci=0;two_ci=0;busb_tx=0;
 319   3                                 reconnect_USB();
 320   3                                      
 321   3                         }
 322   2                         break;
 323   2                 case 0x02:           //收到buzzer_1信号,然后初始划
 324   2                         {
 325   3                                 //初始化
 326   3                                 addr=0;two_ci=0;busb_tx=0;
 327   3                                 D12_WriteEndpoint(3, 1, GenEpBuf);
 328   3                                 buzzer_1();
 329   3                         }
 330   2                         break;
 331   2                 case 0x03:           //收到buzzer_3信号,然后初始划
 332   2                         {
 333   3                                 //初始化
 334   3                                 addr=0;two_ci=0;busb_tx=0;
 335   3                                 D12_WriteEndpoint(3, 1, GenEpBuf);
 336   3                                 buzzer_3();
 337   3                         }
 338   2                         break;
 339   2                      
 340   2                 case 0xb0://表示烧录IC,把EE512的程序烧录到PM10P40中
 341   2                         {
 342   3                                 unsigned int adr;
 343   3                                 unsigned char i;
 344   3                                 CE_FLS = 0;                  //选中FLASH IC  
 345   3                                 adr=128*GenEpBuf[1];         //start address
 346   3                                 for(i=0; i<128; i++)
 347   3                                 {    
 348   4                                         EpBuf[i]=XBYTE[adr];
 349   4                                         adr++;               
 350   4                                 }
 351   3                                 otp_write(GenEpBuf[1]);
 352   3                                 P1=P1^0x01;
 353   3                         }
 354   2                         break;
 355   2                 case 0xb1://表示verify_otp(to flash)
 356   2                         {
 357   3                                 unsigned int adr;
 358   3                                 unsigned char iv;
 359   3                                 iv=GenEpBuf[1];
 360   3                                 pulse_read();                        //???改善挑片的毛病
 361   3                                 otp_read(iv);
 362   3                                 P1=P1^0x01;
 363   3                                 adr=128*iv;
 364   3                                      CE_FLS =0;//选中FLASH IC        
 365   3                                 for(iv=0; iv<128; iv++)
C51 COMPILER V8.02   ISR                                                                   12/19/2007 17:51:24 PAGE 7   

 366   3                                 {
 367   4                                         if(EpBuf[iv]!=XBYTE[adr++])
 368   4                                         {
 369   5                                                 GenEpBuf[2] = 0x80|iv;
 370   5                                                 D12_WriteEndpoint(3, 3, GenEpBuf);
 371   5                                                 return;
 372   5                                         }                    
 373   4                                 }                    
 374   3                                 GenEpBuf[2] = 0x00;
 375   3                                 D12_WriteEndpoint(3, 3, GenEpBuf);
 376   3                                 return;                                                                                                      
 377   3                         }
 378   2                         break;
 379   2                      case 0xb4:
 380   2                                      CE_FLS =0;//选中FLASH IC
 381   2                                      EpBuf[0]=XBYTE[0x8000];
 382   2                                      EpBuf[1]=XBYTE[0x8001];
 383   2                                      nop; nop;                               
 384   2                                 write_configue(); 
 385   2                                 CE_FLS =0;//选中FLASH IC
 386   2                                 GenEpBuf[1]=XBYTE[0X8000];
 387   2                                 GenEpBuf[2]=XBYTE[0x8001];
 388   2                                      D12_WriteEndpoint(3, 3, GenEpBuf);
 389   2                              break;
 390   2      
 391   2                 case 0xb5://VERIFY_OTPconfig(to flash)
 392   2                         {
 393   3                                 EpBuf[0] =0;EpBuf[1] =0;//???
 394   3                                      CE_FLS = 0;                     //选中FLASH IC
 395   3                                 pulse_read();
 396   3                                 read_configue();
 397   3                              if (((EpBuf[0]&0xdf)!=(XBYTE[0X8000]&0xdf))||((EpBuf[1]&0xdf)!=(XBYTE[0X8001]&0xdf)))
 398   3                                      GenEpBuf[1]=0xff;
 399   3                              else
 400   3                                      GenEpBuf[1]=0x00;                               
 401   3                                 D12_WriteEndpoint(3, 2, GenEpBuf);
 402   3                         }
 403   2                         break;
 404   2                 case 0xc0://pin_test
 405   2                         {    
 406   3                                 if (PIN_TEST())
 407   3                                 {
 408   4                                         GenEpBuf[1]=1;
 409   4                                 }
 410   3                                 else
 411   3                                 {
 412   4                                         GenEpBuf[1] = 0;
 413   4                                 }
 414   3                                 D12_WriteEndpoint(3, 2, GenEpBuf);
 415   3                         }
 416   2                         break;
 417   2                      case 0xc1:
 418   2                              {
 419   3                                GenEpBuf[1] = VERSION;
 420   3                                 D12_WriteEndpoint(3, 2, GenEpBuf);
 421   3                              }
 422   2                              break;
 423   2            }
 424   1      }
 425          
 426          //主端点OUT控制
 427          void main_txdone(void)
C51 COMPILER V8.02   ISR                                                                   12/19/2007 17:51:24 PAGE 8   

 428          {
 429   1              //      unsigned char len,epstatus;
 430   1              D12_ReadLastTransactionStatus(5); //清中断标志

⌨️ 快捷键说明

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