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

📄 main.lst

📁 矿工定位系统单端
💻 LST
📖 第 1 页 / 共 5 页
字号:

 238   1        En485 = RECV;
 239   1              EA=1;
 240   1      
 241   1      }
 242          
 243          /**********************************************************************8
 244          void Wdtinit(void)
 245          {
 246            SCONF=SCONF&0X7F;
 247            WTDC=0X87;
 248          }
 249          /*****************************************************************************
 250          *          初始化RC500
 251          *注意:RC500上电后应延时500ms才能可靠初始化
 252          *****************************************************************************/
 253          void Rc500Ready()
 254          {
 255   1          char status;
 256   1          DelayMs(100);
 257   1          DelayMs(100);
 258   1          DelayMs(100);
 259   1          DelayMs(100);
 260   1          DelayMs(100);
 261   1          status=PcdReset();
 262   1          if(status!=MI_OK)
 263   1          {
 264   2              DelayMs(100);
 265   2              status=PcdReset();
 266   2          }
 267   1          if(status==MI_OK)
 268   1              rc500_ok=1;
 269   1          else
 270   1              rc500_ok=0;
 271   1      }
 272          /****************************************************************************
 273          *                                                                           *
 274          * Function:     START_T0                                                    *
 275          *                                                                           *
 276          * Input:        -                                                           *
 277          * Output:       -                                                           *
 278          *                                                                           *
 279          * Description:                                                              *
 280          *                                                                           *
 281          *                                                                           *
 282          ****************************************************************************/
 283          void START_T0(unsigned char x)
 284          {
 285   1        ET0 = 0 ;
 286   1        TR0 = 0;
 287   1        Timer0Cnt = x ;
 288   1        TL0 = 0;
 289   1        TH0 = 0;
 290   1        TR0 = 1;
 291   1        ET0 = 1 ;
 292   1      }
 293          /****************************************************************************
 294          *                                                                           *
 295          * Function:     CALL_isr_T0                                                 *
 296          *                                                                           *
 297          * Input:        -                                                           *
 298          * Output:       -                                                           *
 299          *                                                                           *
C51 COMPILER V7.05   MAIN                                                                  12/20/2004 15:31:04 PAGE 6   

 300          * Description:                                                              *
 301          *                                                                           *
 302          *                                                                           *
 303          ****************************************************************************/
 304          void CALL_isr_T0(void)
 305          {
 306   1        TR0 = 0;
 307   1        Timer0Cnt = 0;
 308   1        TF0 = 1;
 309   1      
 310   1      }
 311          /****************************************************************************
 312          *                                                                           *
 313          * Function:     isr_timer0                                                  *
 314          *                                                                           *
 315          * Input:        -                                                           *
 316          * Output:       -                                                           *
 317          *                                                                           *
 318          * Description:                                                              *
 319          ****************************************************************************/
 320          void isr_timer0(void) interrupt 1 using 3
 321          {
 322   1        //TOGGLE_WD();
 323   1      
 324   1        if ( Timer0Cnt != 0 )
 325   1        {
 326   2                      --Timer0Cnt;
 327   2        }
 328   1        else
 329   1        {
 330   2          TR0 = 0 ;
 331   2                      if ((RecvState == RECV_DLE) || (RecvState == RECV_DLE_OR_NAK)) //发送起始字超时
 332   2                      {
 333   3                      ErrorCount++;
 334   3                      if ( ErrorCount <= 3)
 335   3                      {
 336   4                      SendReady = TRUE;
 337   4              RecvReady = FALSE;
 338   4                    En485 = SEND;
 339   4                                      //Ir_En = SEND;
 340   4                    //Delay50us(2);
 341   4                    TI = 1;
 342   4                      }
 343   3                      else
 344   3                      {
 345   4                        ErrorCount = 0 ;
 346   4                    SendReady = FALSE;
 347   4                    RecvReady = TRUE;
 348   4                    RecvState = RECV_STX;
 349   4                    En485 = RECV;
 350   4                                      //Ir_En = RECV;
 351   4            }
 352   3                      }
 353   2                      else                                      //接收超时
 354   2                      {
 355   3                      SendReady = FALSE;
 356   3                      RecvReady = TRUE;
 357   3                      RecvState = RECV_STX;
 358   3            En485 = RECV;
 359   3                              //Ir_En = RECV;
 360   3                      };
 361   2        };
C51 COMPILER V7.05   MAIN                                                                  12/20/2004 15:31:04 PAGE 7   

 362   1       
 363   1      }
 364          
 365          //******************************************************************************
 366          /****************************************************************************
 367          *                                                                           *
 368          * Function:     isr_UART                                                    *
 369          *                                                                           *
 370          * Input:        -                                                           *
 371          * Output:       -                                                           *
 372          *                                                                           *
 373          * Description:                                                              *
 374          ****************************************************************************/
 375          void isr_UART(void) interrupt 4 using 1
 376          {
 377   1        unsigned char c , oldRecvState , i , bcc;
 378   1      
 379   1      
 380   1        if ( RI )                                         // Receive Command
 381   1        {
 382   2          TR0 = 0 ;                              //stop t0
 383   2                      c  = SBUF;
 384   2                      RI = 0;
 385   2                      if (RecvReady)
 386   2                      {
 387   3                              SendReady = FALSE;
 388   3              oldRecvState = RecvState;
 389   3                              RecvState = RECV_STX;
 390   3      
 391   3              switch (oldRecvState)
 392   3                              {
 393   4                                      
 394   4                              case RECV_STX:         // Receive STX and answer DLE
 395   4                      if (c == STX)
 396   4                      {       
 397   5                                                      
 398   5                //    RED_LED = ~RED_LED;
 399   5                                                      En485 = RECV;
 400   5                  //Ir_En = RECV ;
 401   5                                                      RecvState = RECV_ADDR0;
 402   5                                                      START_T0(T_533_ms);
 403   5                                              }
 404   4                                              else
 405   4                            {
 406   5                                                      CALL_isr_T0() ;
 407   5                            };
 408   4                                              break;
 409   4      
 410   4              case RECV_ADDR0:
 411   4                                              if (c ==  ADDR)//0xd2)//s_ID[0])
 412   4                            {
 413   5                                                      RecvState = RECV_ADDR1;
 414   5                                                      START_T0(T_533_ms);
 415   5                                              }
 416   4                                              else
 417   4                            {
 418   5                                                      CALL_isr_T0() ;
 419   5                            };
 420   4                                              break;
 421   4              case RECV_ADDR1:
 422   4                                      if (c ==0x02)//[1])
 423   4                            {
C51 COMPILER V7.05   MAIN                                                                  12/20/2004 15:31:04 PAGE 8   

 424   5                                                      RecvState = RECV_ADDR2;
 425   5                                                      START_T0(T_533_ms);
 426   5                                              }
 427   4                                              else
 428   4                            {
 429   5                                                      CALL_isr_T0() ;
 430   5                            };
 431   4                                              break;
 432   4              case RECV_ADDR2:
 433   4                                      if (c == 0x96)//s_ID[2])
 434   4                            {
 435   5                      RecvState = RECV_ADDR3;
 436   5                                                      START_T0(T_533_ms);
 437   5                                              }
 438   4                                              else
 439   4                            {
 440   5                                                      CALL_isr_T0() ;
 441   5                            };
 442   4                                              break;
 443   4      
 444   4              case RECV_ADDR3:
 445   4                                      if (c == 0x49)//Pos_ID[3])
 446   4                            {
 447   5                                                      
 448   5                                              //ED_LED = ~RED_LED;
 449   5                             En485 = SEND;
 450   5                                                      //Ir_En = SEND;
 451   5                                      
 452   5                                                      SBUF = DLE ;
 453   5                                                      RecvState = RECV_DATA_DLE_ETX;
 454   5                                                      DataDleReceived = FALSE;
 455   5                                                      Index = 0;
 456   5                                                      Cmdok = FALSE;
 457   5      
 458   5                                                      while( !TI );
 459   5                                                      TI = FALSE;
 460   5                                                      En485 = RECV;
 461   5                              
 462   5                                                      //Ir_En = RECV;
 463   5                                                      START_T0(T_533_ms);
 464   5                                              }
 465   4                                              else
 466   4                            {
 467   5                                                      CALL_isr_T0() ;
 468   5                            };
 469   4                                              break;
 470   4      
 471   4                      case RECV_DATA_DLE_ETX:// Receive data,DEL,ETX  and answer DLE
 472   4                                      if (c == DLE)
 473   4                                      {
 474   5                                              if (!DataDleReceived)   //如果上一个不是DLE        丢掉
 475   5                                 {
 476   6                                      DataDleReceived = TRUE;
 477   6                                      RecvState = RECV_DATA_DLE_ETX;
 478   6                                      START_T0(T_533_ms);
 479   6                                      break;
 480   6                                 }
 481   5                                else                                      //如果上一个是DLE
 482   5                                 {
 483   6                                       DataDleReceived = FALSE; //留下
 484   6                                 };
 485   5                                      }
C51 COMPILER V7.05   MAIN                                                                  12/20/2004 15:31:04 PAGE 9   

⌨️ 快捷键说明

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