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

📄 k1_diag.lst

📁 CPU.H CPU相关定义 Main.C 主函数 Ks0108.C LCD驱动 ASCII.c 8x8 8x16 英文字模 KeyScan.C 键盘扫描 MenuPara.C 菜单
💻 LST
📖 第 1 页 / 共 2 页
字号:
 302   1          TxdData.DataLen = 0x04;
C51 COMPILER V7.20   K1_DIAG                                                               08/04/2007 17:20:18 PAGE 6   

 303   1          TxdData.DataBuf[0] = 0x55;
 304   1          TxdData.DataBuf[1] = 0x55;
 305   1          TxdData.DataBuf[2] = SVCSetData;
 306   1          TxdData.DataBuf[3] = 0x0F;
 307   1          TxdData.CheckByte = TxdHeader0  + CMD_SetOutput +0x00;
 308   1      
 309   1      
 310   1          if(SendCMDPackage(100,CMD_SetOutput,10)){
 311   2              SVCReadData = ReadAdc();
 312   2              if(SVCReadData > SVCSetData){
 313   3                  InData = SVCReadData - SVCSetData;
 314   3              }else{
 315   3                  InData = SVCSetData - SVCReadData;
 316   3              }
 317   2      
 318   2              GUI_DispStringAt("设置值-测量值-偏差",StatusDispPosX+16,StatusDispPosY);
 319   2              DispVolt(SVCSetData,StatusDispPosX,StatusDispPosY+2);
 320   2              DispVolt(SVCReadData,StatusDispPosX+3*Chinese_XSIZE+Char_XSIZE,StatusDispPosY+2);
 321   2              DispVolt(InData,StatusDispPosX+6*Chinese_XSIZE+2*Char_XSIZE,StatusDispPosY+2);
 322   2      
 323   2              if(InData > 0x03){//如果误差较大
 324   3                  //GUI_DispStringAt("模拟主轴电压误差值偏大!",TitleDispPosX,TitleDispPosY);
 325   3                  GUI_DispStringAt("<--",StatusDispPosX+6*Chinese_XSIZE+8*Char_XSIZE,StatusDispPosY+2);
 326   3                  return Err_unPass;
 327   3              }else{
 328   3                  //GUI_DispStringAt("                       ",TitleDispPosX,TitleDispPosY);
 329   3                  GUI_DispStringAt("   ",StatusDispPosX+6*Chinese_XSIZE+8*Char_XSIZE,StatusDispPosY+2);
 330   3                  return Err_Pass;
 331   3              }
 332   2      
 333   2          }else{
 334   2              GUI_DispStringAt("Timeout! ",StatusDispPosX,StatusDispPosY);
 335   2              GUI_Delay(1000);
 336   2              return Err_Timeout;
 337   2          }
 338   1      }
 339          
 340          //SVC测试步进值
 341          #define SVCStep   0x0A
 342          
 343          
 344          /*
 345          *****************************************************************************
 346          * K1_SVCTest -  测试K1的模拟电压
 347          * DESCRIPTION: -
 348          * 测试如果发现偏差大于一定的值那么认为有错
 349          * Input:
 350          * Output:*SysErrMap 出错记录
 351          * Returns: Err_Pass Err_unPass Err_Timeout  测试通过/未通过/超时
 352          *
 353          *****************************************************************************
 354          */
 355          U8 K1_SVCTest(struct _SysErrDiff *SysErrMap)
 356          {
 357   1          U16 U16Count;
 358   1          U8 TimeoutCount;
 359   1          U8 unPassCount;
 360   1          U8 ReturnCode;
 361   1          GUI_DispStringAtBar("-检测模拟主轴-",TitleDispPosX,TitleDispPosY,LCD_XSIZE-1,GUI_TA_HCENTER);
 362   1          for(U16Count = 0; U16Count < 0x100; U16Count += SVCStep){
 363   2      
 364   2              ProgBar(TitleDispPosY+2, 32, 128+32,(U8)U16Count,0xFF);
C51 COMPILER V7.20   K1_DIAG                                                               08/04/2007 17:20:18 PAGE 7   

 365   2              ReturnCode = CheckSVCOutput(U16Count);
 366   2              if(ReturnCode == Err_Timeout){//检查是否超时
 367   3                  TimeoutCount++;
 368   3                  if(TimeoutCount > MAXTimeoutCount){//超时次数太多了
 369   4                      GUI_Clear();
 370   4                      GUI_DispStringAt("超时次数太多!",StatusDispPosX,StatusDispPosY);
 371   4                      GUI_Delay(3000);
 372   4                      return Err_Timeout;
 373   4                  }
 374   3              }
 375   2              if(ReturnCode == Err_unPass){
 376   3                  unPassCount++;
 377   3                  if(unPassCount > 3){
 378   4                      SysErrMap->MiscErrDiffByteL |= MiscByteL_BIT_SVC;
 379   4                      return Err_unPass;
 380   4                  }
 381   3              }
 382   2          }
 383   1          return Err_Pass;
 384   1      }
 385          
 386          
 387          
 388          /*
 389          *****************************************************************************
 390          * K1_CheckRs232Pin_DCD -  测试K1串口的DCD输出信号
 391          * DESCRIPTION: -
 392          * 发送命令给K1后,K1会在一段时间内输出DCD DSR的方波诊断器检测该方波
 393          * Input:
 394          * Output:*SysErrMap 出错记录
 395          * Returns: Err_Pass Err_unPass Err_Timeout  测试通过/未通过/超时
 396          *
 397          *****************************************************************************
 398          */
 399          U8 K1_CheckRs232Pin_DCD(struct _SysErrDiff *SysErrMap)
 400          {
 401   1          U16 Timeout;
 402   1          U8 InData;
 403   1          U8 Retry;
 404   1      
 405   1          Bool FailFlag;
 406   1          Bool BitIsOne;
 407   1          U8 Trig;
 408   1      
 409   1          GUI_DispStringAtBar("-Rs232 DCD-",TitleDispPosX,TitleDispPosY,LCD_XSIZE-1,GUI_TA_HCENTER);
 410   1          ProgBar(TitleDispPosY+2, 32, 128+32,20,100);
 411   1      
 412   1          FailFlag = false;
 413   1      
 414   1          TxdData.CMD = CMD_SetOutput;
 415   1          TxdData.DataLen = 0x04;
 416   1          TxdData.DataBuf[0] = 0x55;
 417   1          TxdData.DataBuf[1] = 0x55;
 418   1          TxdData.DataBuf[2] = 0x55;
 419   1          TxdData.DataBuf[3] = 0x8F;
 420   1          TxdData.CheckByte = TxdHeader0  + CMD_SetOutput +0x00;
 421   1          Trig = 0;
 422   1          Retry = 4;
 423   1          ProgBar(TitleDispPosY+2, 32, 128+32,40,100);
 424   1      //    if(SetK1OutPut()){
 425   1              do{
 426   2                  StartTXD();
C51 COMPILER V7.20   K1_DIAG                                                               08/04/2007 17:20:18 PAGE 8   

 427   2                  Timeout = TimeoutInitData;
 428   2                  do{
 429   3                      if(TxdData.State == Txd_Empty){//发送完毕
 430   4                          break;
 431   4                      }
 432   3                      GUI_Delay(1);
 433   3                      Timeout--;
 434   3                  }while(Timeout);
 435   2      
 436   2                  InData = XBYTE[IN3_Port_Addr];
 437   2                  if((InData&BIT_DCD)== 0){//读出状态
 438   3                      BitIsOne = false;
 439   3                  }else{
 440   3                      BitIsOne = true;
 441   3                  }
 442   2      
 443   2                  Timeout = 10000;
 444   2                  do{
 445   3                      InData = XBYTE[IN3_Port_Addr];
 446   3                      if(((InData&BIT_DCD)== 0)&&(BitIsOne == true)){//-----|________
 447   4                          Trig ++;
 448   4                          ProgBar(TitleDispPosY+2, 32, 128+32,40+Trig*10,100);
 449   4                          if(Trig > 2){
 450   5                              Retry = 1;
 451   5                          }
 452   4                          break;
 453   4                      }else if(((InData&BIT_DCD)== BIT_DCD)&&(BitIsOne == false)){//________|---------
 454   4                          Trig ++;
 455   4                          ProgBar(TitleDispPosY+2, 32, 128+32,40+Trig*10,100);
 456   4                          if(Trig > 2){
 457   5                              Retry = 1;
 458   5                          }
 459   4                          break;
 460   4                      }
 461   3                      Delay_50us(1);
 462   3                      LED1 ^= 0x01;
 463   3                      Timeout--;
 464   3                  }while(Timeout);
 465   2                  LED0 ^= 0x01;
 466   2      
 467   2                  Retry--;
 468   2                  if(Retry == 0){
 469   3                      break;
 470   3                  }
 471   2      
 472   2              }while(Retry);
 473   1      
 474   1              GUI_GotoXY(StatusDispPosX,StatusDispPosY);
 475   1      
 476   1              if(Trig > 2){
 477   2                  GUI_DispString("DCD");
 478   2                  GUI_DispString(" OK");
 479   2                  GUI_Delay(1000);
 480   2                  return Err_Pass;
 481   2              }else{
 482   2      //            if(Timeout){
 483   2                      SysErrMap->MiscErrDiffByteL |= MiscByteL_BIT_DCD;
 484   2                      GUI_GotoXY(StatusDispPosX,StatusDispPosY);
 485   2                      GUI_DispString("DCD");
 486   2                      GUI_DispString(" Err!");
 487   2                      GUI_Delay(2000);
 488   2                      return Err_unPass;
C51 COMPILER V7.20   K1_DIAG                                                               08/04/2007 17:20:18 PAGE 9   

 489   2      //            }else{
 490   2      //                GUI_DispStringAt("Timeout    ",StatusDispPosX,StatusDispPosY);
 491   2      //                GUI_Delay(2000);
 492   2      //                return Err_Timeout;
 493   2      //            }
 494   2              }
 495   1      
 496   1      //    }else{
 497   1      //            GUI_DispStringAt("Timeout    ",StatusDispPosX,StatusDispPosY);
 498   1      //            GUI_Delay(2000);
 499   1      //            return Err_Timeout;
 500   1      //    }
 501   1      
 502   1      }
 503          
 504          /*
 505          *****************************************************************************
 506          * K1_CheckRs232Pin_DSR - K1串口DSR输出信号测试
 507          * DESCRIPTION: -
 508          *
 509          * Input:
 510          * Output:*SysErrMap 出错记录
 511          * Returns: Err_Pass Err_unPass Err_Timeout  测试通过/未通过/超时
 512          *
 513          *****************************************************************************
 514          */
 515          U8 K1_CheckRs232Pin_DSR(struct _SysErrDiff *SysErrMap)
 516          {
 517   1          U16 Timeout;
 518   1          U8 InData;
 519   1          U8 Retry;
 520   1      
 521   1          Bool FailFlag;
 522   1          Bool BitIsOne;
 523   1          U8 Trig;
 524   1      
 525   1          GUI_DispStringAtBar("-Rs232 DSR-",TitleDispPosX,TitleDispPosY,LCD_XSIZE-1,GUI_TA_HCENTER);
 526   1          ProgBar(TitleDispPosY+2, 32, 128+32,20,100);
 527   1      
 528   1      
 529   1          FailFlag = false;
 530   1      
 531   1          TxdData.CMD = CMD_SetOutput;
 532   1          TxdData.DataLen = 0x04;
 533   1          TxdData.DataBuf[0] = 0x55;
 534   1          TxdData.DataBuf[1] = 0x55;
 535   1          TxdData.DataBuf[2] = 0x55;
 536   1          TxdData.DataBuf[3] = 0x4F;
 537   1          TxdData.CheckByte = TxdHeader0  + CMD_SetOutput +0x00;
 538   1      
 539   1          Trig = 0;
 540   1          Retry = 4;
 541   1          ProgBar(TitleDispPosY+2, 32, 128+32,40,100);
 542   1      
 543   1      //    if(SetK1OutPut()){
 544   1              do{
 545   2                  StartTXD();
 546   2                  Timeout = TimeoutInitData;
 547   2                  do{
 548   3                      if(TxdData.State == Txd_Empty){//发送完毕
 549   4                          break;
 550   4                      }
C51 COMPILER V7.20   K1_DIAG                                                               08/04/2007 17:20:18 PAGE 10  

 551   3                      GUI_Delay(1);
 552   3                      Timeout--;
 553   3                  }while(Timeout);
 554   2      
 555   2                  InData = XBYTE[IN3_Port_Addr];
 556   2                  if((InData&BIT_DSR)== 0){//读出状态
 557   3                      BitIsOne = false;
 558   3                  }else{
 559   3                      BitIsOne = true;
 560   3                  }
 561   2      
 562   2                  Timeout = 10000;
 563   2                  do{
 564   3                      InData = XBYTE[IN3_Port_Addr];
 565   3                      if(((InData&BIT_DSR)== 0)&&(BitIsOne == true)){//-----|________
 566   4                          Trig ++;
 567   4                          ProgBar(TitleDispPosY+2, 32, 128+32,40+Trig*10,100);
 568   4                          if(Trig > 2){
 569   5                              Retry = 1;
 570   5                          }
 571   4                          break;
 572   4                      }else if(((InData&BIT_DSR)== BIT_DSR)&&(BitIsOne == false)){//________|---------
 573   4                          Trig ++;
 574   4                          ProgBar(TitleDispPosY+2, 32, 128+32,40+Trig*10,100);
 575   4                          if(Trig > 2){
 576   5                              Retry = 1;
 577   5                          }
 578   4                          break;
 579   4                      }
 580   3                      Delay_50us(1);
 581   3                      LED1 ^= 0x01;
 582   3                      Timeout--;
 583   3                  }while(Timeout);
 584   2                  LED0 ^= 0x01;
 585   2      
 586   2                  Retry--;
 587   2                  if(Retry == 0){
 588   3                      break;
 589   3                  }
 590   2      
 591   2              }while(Retry);
 592   1      
 593   1              GUI_GotoXY(StatusDispPosX,StatusDispPosY);
 594   1              ProgBar(TitleDispPosY+2, 32, 128+32,90,100);
 595   1              if(Trig > 2){
 596   2                  GUI_DispString("DSR");
 597   2                  GUI_DispString(" OK");
 598   2                  GUI_Delay(1000);
 599   2                  return Err_Pass;
 600   2              }else{
 601   2                  if(Timeout){
 602   3                      SysErrMap->MiscErrDiffByteL |= MiscByteL_BIT_DSR;
 603   3                      GUI_GotoXY(StatusDispPosX,StatusDispPosY);
 604   3                      GUI_DispString("DSR");
 605   3                      GUI_DispString(" Err! @A");
 606   3                      GUI_Delay(3000);
 607   3                      return Err_unPass;
 608   3                  }else{//检查是否收到命令
 609   3                      GUI_Delay(400);
 610   3                      if((RxdData.State == Rxd_CheckByteOk)&&(RxdData.ACK == CMD_SetOutput)){//如果收到了命令却

⌨️ 快捷键说明

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