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

📄 mainloop.lst

📁 这是一个89c52的USB固件系统的源码 使用keilc 生成hex文件 可直接烧录
💻 LST
📖 第 1 页 / 共 5 页
字号:
 274   1              CKCON = 0x00;
 275   1      
 276   1              D12_DATA = 0xff02;                      //定义数据地址
 277   1              D12_COMMAND = 0xff03;           //定义命令地址
 278   1      
 279   1              MCU_D12CS = 0x0;
 280   1      //      D12SUSPD = 0x0;
 281   1      
 282   1              IT0 = 0;//初始化中断
 283   1              EX0 = 1;
 284   1              PX0 = 0;
 285   1              IT1 = 1;//初始化中断
 286   1              EX1 = 1;
 287   1              PX1 = 1;
 288   1              EA = 1;
 289   1      
 290   1      
 291   1              MCU_D12CS = 0x1;
 292   1              MCU_D12CS = 0x0;
 293   1              bEPPflags.value = 0;
 294   1      
 295   1              MCU_D12CS = 1;
 296   1              RAMCS = 0;
 297   1      
 298   1              counter = 0;
 299   1          read_jing_flag = 0;
 300   1              diand_flag = 0;
 301   1              diand_axis = 0;
C51 COMPILER V7.09   MAINLOOP                                                              10/14/2004 20:25:36 PAGE 6   

 302   1              diandbz = 0;
 303   1              diandjl = 0;
 304   1              read_prog_flag = 0;
 305   1              send_req_flag = 0;
 306   1              read_max_loop_flag = 0;
 307   1              read_nc_num_flag = 0;
 308   1              io_wrong_flag = 0;
 309   1              gaopzt = GAOPIN_GUAN;
 310   1              dianjzt = MOT_CLOSE;
 311   1          stop_flag = stop_byte = 0;
 312   1              max_loop_counter = 700;
 313   1              read_max_loop_flag = 0;
 314   1              old_p_status = 0;
 315   1              send_req_flag = 0;
 316   1              work_status = 0;
 317   1          open_mac();
 318   1          close_gao_pin();
 319   1          close_mot();
 320   1      
 321   1              RAMCS = 1;
 322   1              MCU_D12CS = 0;
 323   1      
 324   1              MCU_D12CS = 1;
 325   1              MCU_D12CS = 0;
 326   1      
 327   1              reconnect_USB();//联接USB总线
 328   1      
 329   1              while( TRUE ){
 330   2                if(bEPPflags.bits.configuration){
 331   3              cmd_proc();//连接正常,调用命令处理
 332   3              ENABLE;
 333   3                  MCU_D12CS = 1;
 334   3                  RAMCS = 0;
 335   3              cur_order = cur_order1;
 336   3              if (work_status == 1){
 337   4                if (XBYTE[xytype(cur_order)] != 0){
 338   5                  DISABLE;
 339   5                  WRITE = 1;
 340   5                  P2 = 2;
 341   5                          RAMCS = 1;
 342   5                  PCS = 0;
 343   5                  A0 = 1;
 344   5                  A1 = 0;
 345   5                  READ = 1;
 346   5                  READ = 0;
 347   5                  READ = 1;
 348   5                              cc = P2;
 349   5                  PCS = 1;            
 350   5                  A0 = 0;
 351   5                  A1 = 0;
 352   5                          RAMCS = 0;
 353   5                  ENABLE;
 354   5      
 355   5                              bz = 0;
 356   5                  if (gaopzt == GAOPIN_KAI){
 357   6                                if (anti_work_flag == 0){
 358   7                                  if (((cc&2) == 2)&&(timer_ok == 1)){
 359   8                        MCU_LED0 = 0;
 360   8                        MCU_LED0 = 0;
 361   8                        MCU_LED0 = 0;
 362   8                        MCU_LED0 = 1;
 363   8                        bz = 1;
C51 COMPILER V7.09   MAINLOOP                                                              10/14/2004 20:25:36 PAGE 7   

 364   8                                      }
 365   7                            }
 366   6                                else{
 367   7                                  if (timer_ok == 1)
 368   7                        bz = 1;
 369   7                                }
 370   6                              }
 371   5                              else{
 372   6                                if (timer_ok == 1)
 373   6                                  bz = 1;
 374   6                              }
 375   5      
 376   5      
 377   5                  if (loop_counter == max_loop_counter){
 378   6                                loop_off = cur_off;
 379   6                                loop_flag = 1;
 380   6                                anti_work_flag = 1;
 381   6                                send_loop_msg();
 382   6                                old_cur_jing = cur_jing;
 383   6                                cur_jing = 200;
 384   6                              }
 385   5      
 386   5                              if (bz == 1){
 387   6                            old_p_status = cc&2;
 388   6                                timer_ok = 0;
 389   6                                loop_counter = 0;
 390   6                    send_a_step();
 391   6                              }
 392   5                              else{
 393   6                                if (gaopzt == GAOPIN_KAI)
 394   6                                  loop_counter ++;
 395   6                            for (i=0;i<300;i++);
 396   6                              }
 397   5                        }
 398   4                        else{
 399   5                          for (i=0;i<300;i++);
 400   5                        }
 401   4                  }
 402   3                      else if (work_status == 2){
 403   4                        if (counter == 9+30*5){
 404   5                          if ((XBYTE[xytype(cur_order)] == 0)&&(cur_order == 0)){
 405   6                        send_req_order(0);
 406   6                          }
 407   5                    }
 408   4                      }
 409   3                      else{
 410   4                        for (i=0;i<400;i++);
 411   4              }
 412   3                  RAMCS = 1;
 413   3                  MCU_D12CS = 0;
 414   3                      counter ++;
 415   3                      for (i=0;i<5*6;i++){
 416   4                        if (counter == 5+(i+1)*5){
 417   5                          send_cur_pos(i/6,i%6);
 418   5                        }
 419   4                      }
 420   3                      if (counter == 10+30*5){
 421   4                        counter = 0;
 422   4                      }
 423   3            }
 424   2                usbserve();//USB服务数据处理
 425   2              } // Main Loop
C51 COMPILER V7.09   MAINLOOP                                                              10/14/2004 20:25:36 PAGE 8   

 426   1      }
 427          
 428          void cmd_proc(void)
 429          {
 430   1              if(bEPPflags.bits.ep1_rxdone) {
 431   2                      DISABLE;//接收到主机发来的指令信息
 432   2                      bEPPflags.bits.ep1_rxdone = 0;
 433   2                      ENABLE;        
 434   2                      MCU_D12CS = 1;
 435   2              RAMCS = 0;
 436   2      
 437   2              if (diand_flag == 2){
 438   3                if (diandbz == 0){
 439   4                          diandjl += GenEpBuf[3];
 440   4                          XBYTE[xytype(1)] = 0;
 441   4                          XBYTE[xytype(2)] = 0;
 442   4                          XBYTE[xytype(3)] = 0;
 443   4                          XBYTE[xytype(4)] = 0;
 444   4                          XBYTE[xytype(0)] = 1;
 445   4                          XBYTE[uvtype(0)] = 0;
 446   4                      cur_order1 = 0;
 447   4                          cur_order = e_order = 0;
 448   4                  (long)(*((long *)(&(XBYTE[ncorder(0)])))) = 0;
 449   4                  (long)(*((long *)(&(XBYTE[lpdata(0,2)])))) = cur_x;
 450   4                  (long)(*((long *)(&(XBYTE[lpdata(0,3)])))) = cur_y;
 451   4                  (long)(*((long *)(&(XBYTE[lpdata(0,4)])))) = cur_x;
 452   4                  (long)(*((long *)(&(XBYTE[lpdata(0,5)])))) = cur_y;
 453   4                          if (diand_axis == 1){
 454   5                    (long)(*((long *)(&(XBYTE[lpdata(0,4)])))) = cur_x+diandjl;
 455   5                    XBYTE[xy(0)] = 0;
 456   5                          }
 457   4                  else if (diand_axis == -1){
 458   5                    (long)(*((long *)(&(XBYTE[lpdata(0,4)])))) = cur_x-diandjl;
 459   5                    XBYTE[xy(0)] = 0;
 460   5                          }
 461   4                  else if (diand_axis == 2){
 462   5                    (long)(*((long *)(&(XBYTE[lpdata(0,5)])))) = cur_y+diandjl;
 463   5                    XBYTE[xy(0)] = 1;
 464   5                          }
 465   4                  else if (diand_axis == -2){
 466   5                    (long)(*((long *)(&(XBYTE[lpdata(0,5)])))) = cur_y-diandjl;
 467   5                    XBYTE[xy(0)] = 1;
 468   5                          }
 469   4                  else if (diand_axis == 3){
 470   5                    (long)(*((long *)(&(XBYTE[lpdata(0,4)])))) = cur_x+diandjl;
 471   5                    XBYTE[xy(0)] = 0;
 472   5                          }
 473   4                  else if (diand_axis == -3){
 474   5                    (long)(*((long *)(&(XBYTE[lpdata(0,4)])))) = cur_x-diandjl;
 475   5                    XBYTE[xy(0)] = 0;
 476   5                          }
 477   4                  else if (diand_axis == 4){
 478   5                    (long)(*((long *)(&(XBYTE[lpdata(0,5)])))) = cur_y+diandjl;
 479   5                    XBYTE[xy(0)] = 1;
 480   5                          }
 481   4                  else if (diand_axis == -4){
 482   5                    (long)(*((long *)(&(XBYTE[lpdata(0,5)])))) = cur_y-diandjl;
 483   5                    XBYTE[xy(0)] = 1;
 484   5                          }
 485   4                          work_status = 1;
 486   4                          cur_off = 0;
 487   4                          diandbz = 1;
C51 COMPILER V7.09   MAINLOOP                                                              10/14/2004 20:25:36 PAGE 9   

 488   4                }
 489   3                diand_flag = 0;
 490   3                      }
 491   2                      else if (diand_flag == 1){
 492   3                        if (diandbz == 0){
 493   4                          if ((GenEpBuf[3] & 0x80) == 0x80){
 494   5                            diandjl = (GenEpBuf[3]-0x80)*256;
 495   5                                diand_axis = -diand_axis;
 496   5                          }
 497   4                          else
 498   4                            diandjl = GenEpBuf[3]*256;
 499   4                        }
 500   3                        diand_flag = 2;
 501   3                      }
 502   2                      else if (read_nc_num_flag == 1){
 503   3                        read_nc_num_flag = 0;
 504   3                        if (GenEpBuf[3] != e_order){
 505   4                  cc = 0x8d;
 506   4                  RAMCS = 1;
 507   4                  MCU_D12CS = 0;
 508   4                  D12_WriteEndpoint(3, 1, &cc);
 509   4                              io_wrong_flag = 1;
 510   4                        }  
 511   3                        else{
 512   4                          if (anti_work_flag == 1){
 513   5                        cur_order1 = e_order;
 514   5                                cur_order = e_order;
 515   5                                cur_off = (long)(*((long *)(&(XBYTE[counterlen(cur_order)]))));
 516   5                            work_status = 1;
 517   5                              }
 518   4                              else{
 519   5                        cur_order1 = 0;
 520   5                                cur_order = 0;
 521   5                                cur_off = 0;
 522   5                              }
 523   4                        }
 524   3                      }
 525   2                      else if (read_max_loop_flag == 2){
 526   3                        max_loop_counter += GenEpBuf[3];
 527   3                        read_max_loop_flag = 0;
 528   3                      }
 529   2                      else if (read_max_loop_flag == 1){                
 530   3                        max_loop_counter = GenEpBuf[3]*256;
 531   3                read_max_loop_flag = 2;
 532   3                      }
 533   2                      else if (read_jing_flag == 2){
 534   3                        cur_jing += GenEpBuf[3];
 535   3                        read_jing_flag = 0;
 536   3                        
 537   3                DISABLE;
 538   3                        RAMCS = 1;
 539   3                    GATE = 0;
 540   3                delay1();
 541   3                    CS8253 = 0;
 542   3                P2 = 0x3e;
 543   3                    A8253 = 1;
 544   3                    WR8253 = 1;
 545   3                delay1();
 546   3                    WR8253 = 0;
 547   3                delay1();
 548   3                    WR8253 = 1;
 549   3                delay1();
C51 COMPILER V7.09   MAINLOOP                                                              10/14/2004 20:25:36 PAGE 10  

 550   3      
 551   3                P2 = cur_jing%256;
 552   3                A8253 = 0;
 553   3                    WR8253 = 1;
 554   3                delay1();
 555   3                    WR8253 = 0;

⌨️ 快捷键说明

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