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

📄 main.lst

📁 矿工定位系统单端
💻 LST
📖 第 1 页 / 共 2 页
字号:
 302   2            RXNOM=0;
 303   2                set=0;
 304   2          }
 305   1      
 306   1      
 307   1        
 308   1        TH0=0Xac;
 309   1        TL0=0X95;
 310   1        TR0=1;   
 311   1      }
 312          //**********************************************************
 313          void Send_ok(unsigned char key)
 314          { 
 315   1         unsigned char i;
 316   1          ES=0;
 317   1          TX_EN=1; 
 318   1              Delay1msa(10);
 319   1              for(i=0;i<3;i++)
 320   1              {
 321   2            SBUF = 0x88;                              // 发送数据
 322   2            while(0==TI);                     // 等待发送完毕
 323   2            TI = 0;                           // 清除发送标志
 324   2                SBUF = 0xff;                          // 发送数据
 325   2            while(0==TI);                     // 等待发送完毕
 326   2            TI = 0;                           // 清除发送标志
 327   2      
 328   2                SBUF = key;                           // 发送数据
 329   2            while(0==TI);                     // 等待发送完毕
 330   2            TI = 0;                           // 清除发送标志
 331   2                SBUF = key;                           // 发送数据
 332   2            while(0==TI);                     // 等待发送完毕
 333   2            TI = 0;                           // 清除发送标志
 334   2         }
 335   1         if(key_tem==0x02)
 336   1         {
 337   2           wring_send_times--;
 338   2               if(wring_send_times==0)
 339   2               {
 340   3              key_tem=0x01;
 341   3               }
 342   2         }
 343   1         else
 344   1         {
 345   2          key_tem=0x01;
 346   2         }
 347   1              TX_EN=0; 
 348   1              Delay1msa(4);
 349   1          ES=1;
 350   1        
 351   1      }
 352          
 353          /******************************************************************
 354          * 名称:UART_SendByte
 355          * 功能:向串口发送字节数据。
 356          * 入口参数:dat   待发送的数据
 357          * 出口参数:无
 358          ******************************************************************
 359          void  UART_SendByte(uint8 dat)
C51 COMPILER V7.05   MAIN                                                                  04/13/2004 13:35:26 PAGE 7   

 360          {  SBUF = dat;                          // 发送数据
 361             while(0==TI);                        // 等待发送完毕
 362             TI = 0;                              // 清除发送标志
 363          }
 364          
 365          
 366          /******************************************************************
 367          * 名称:UART_SendCode
 368          * 功能:读取FLASH中的数据,并发送到串口。
 369          * 入口参数:addr          读取的起始地址
 370          *          no     读取的数据个数
 371          * 出口参数:无
 372          ******************************************************************
 373          void  UART_SendCode(uint16 addr, uint16 no)
 374          {  uint8 code *readp;
 375          
 376             readp = addr;
 377             for(; no>0; no--)
 378             {  UART_SendByte(*readp++);          // 读取数据并发送
 379             }
 380          }
 381          
 382          */
 383          void flash_led(unsigned char j )
 384          {  
 385   1         char i;
 386   1         for(i=0;i<j;i++)
 387   1         {
 388   2              LED=0;
 389   2              Delay1ms(50);
 390   2                  LED=1;
 391   2                      Delay1ms(50);
 392   2         }
 393   1       LED=1;   
 394   1      }
 395          //******************************************************************
 396          //**********************************************************
 397          void Setok(void)
 398          { 
 399   1        
 400   1          ES=0;
 401   1          SBUF ='O';                          // 发送数据
 402   1          while(0==TI);                       // 等待发送完毕
 403   1          TI = 0;                             // 清除发送标志
 404   1          SBUF = 'K';                         // 发送数据
 405   1          while(0==TI);                       // 等待发送完毕
 406   1          TI = 0;                             // 清除发送标志
 407   1          ES=1;
 408   1      }
 409          //**************************************************************
 410          void main(void)
 411          {
 412   1        unsigned  char Link_ok=0,j,CS_state=0;
 413   1      
 414   1        ports_init();
 415   1       if(ISP) 
 416   1        {
 417   2         user_uart_init();//用户串口初始化
 418   2          watchdog_init();//初始化看门狗
 419   2        
 420   2         }
 421   1       else
C51 COMPILER V7.05   MAIN                                                                  04/13/2004 13:35:26 PAGE 8   

 422   1        {
 423   2         uart_init();  //进入ISP模式
 424   2         FLASH_WriteByte(0xc04, 0);
 425   2        }
 426   1        osc_init();
 427   1        rtc_init();
 428   1        EA=1;
 429   1        ES=1;
 430   1        CS=0;
 431   1        TX_EN=0; //接收状态
 432   1        PWR =1;
 433   1       //rtc_start();
 434   1       LED=0;
 435   1       Delay100ms(2);
 436   1       LED=1;
 437   1        if((FLASH_ReadByte(0XC05)==0x55)&(FLASH_ReadByte(0XC06)==0xaa))//初始化模块的ID
 438   1        {
 439   2          EA=0;
 440   2          ADDR=FLASH_ReadByte(0XC04); 
 441   2          EA=1;
 442   2            //FLASH_WriteByte(0xc04, 0); 
 443   2        }
 444   1        else
 445   1         {
 446   2          ADDR=0;
 447   2              EA=0;
 448   2          FLASH_WriteByte(0xc04, 0);
 449   2          FLASH_WriteByte(0xc05, 0x55);
 450   2              FLASH_WriteByte(0xc06, 0xAA);
 451   2          EA=1;
 452   2         }
 453   1      //ADDR=0;
 454   1      while(1)
 455   1       { 
 456   2        
 457   2         if(ISP)
 458   2         {
 459   3            watchdog_start();
 460   3           
 461   3                if(!KEY){wring_send_times=3; key_tem=0x02; LED=0; Delay100ms(2); LED=!LED;LED=0; Delay100ms(2); LED=!LE
             -D;}//有键按下
 462   3                 watchdog_feed();
 463   3            if(rxok)
 464   3                {
 465   4                  rxok=0;
 466   4                      Send_ok(key_tem);
 467   4                  flash_led(4);
 468   4                      i=0;
 469   4                  LED=1;
 470   4                      Link_ok=1;
 471   4              watchdog_feed();
 472   4               }
 473   3               if(set_ok)//设置模块的ID
 474   3               {
 475   4              watchdog_feed();
 476   4                      set_ok=0;
 477   4                      Send_ok(key_tem);
 478   4      
 479   4                      watchdog_feed();
 480   4                      EA=0;
 481   4                  FLASH_WriteByte(0xc04,RX_addr);   //存入新ID
 482   4                  EA=1;
C51 COMPILER V7.05   MAIN                                                                  04/13/2004 13:35:26 PAGE 9   

 483   4                      ADDR=RX_addr;
 484   4                  LED=0;
 485   4              flash_led(4);
 486   4                      i=0;
 487   4                  LED=1;
 488   4                      Link_ok=1;
 489   4              watchdog_feed();
 490   4               }
 491   3          rtc_start();
 492   3        switch(CS_state)
 493   3        {
 494   4         case 0:
 495   4         CS=0;
 496   4         if(T_flag)
 497   4              {    
 498   5             watchdog_feed();
 499   5            rtc_stop();  
 500   5            T_flag=0;
 501   5                i++;
 502   5                if(i>3)
 503   5                {
 504   6                  i=0;
 505   6              watchdog_feed();
 506   6                  if(Link_ok)
 507   6                  {
 508   7                     Link_ok=0;
 509   7                 watchdog_feed();
 510   7                 
 511   7                  }
 512   6                 else
 513   6                  {
 514   7                     LED=0;
 515   7                 Delay1ms(50);
 516   7                     LED=1;
 517   7                     j++;
 518   7                 watchdog_feed();
 519   7                 CS_state=1;
 520   7                         if(j>10)
 521   7                        {
 522   8                          j=0;
 523   8                          DIVM =0x00;
 524   8                  watchdog_feed();
 525   8                      power_mode(POWER_TOTALPOWERDOWN);//休眠
 526   8                        }
 527   7                  }
 528   6               }
 529   5              }
 530   4          break;
 531   4         case 1:
 532   4           CS=1;
 533   4         if(T_flag)
 534   4              {    
 535   5             watchdog_feed();
 536   5            rtc_stop();  
 537   5            T_flag=0;
 538   5                i++;
 539   5                if(i>3)
 540   5                {
 541   6                 i=0;
 542   6             watchdog_feed();
 543   6                 if(Link_ok)
 544   6                 {
C51 COMPILER V7.05   MAIN                                                                  04/13/2004 13:35:26 PAGE 10  

 545   7                  Link_ok=0;
 546   7              watchdog_feed();
 547   7                 
 548   7                 }
 549   6                 else
 550   6                 {
 551   7                  LED=0;
 552   7              Delay1ms(50);
 553   7                  LED=1;
 554   7                  j++;
 555   7              watchdog_feed();
 556   7              CS_state=0;
 557   7                      if(j>10)
 558   7                      {
 559   8                       j=0;
 560   8                       DIVM =0x00;
 561   8               watchdog_feed();
 562   8                   power_mode(POWER_TOTALPOWERDOWN);//休眠
 563   8                      }
 564   7                 }
 565   6               }
 566   5              }
 567   4          break;
 568   4         default:
 569   4          CS_state=0;
 570   4          break;
 571   4         }//end swtich
 572   3       
 573   3      
 574   3         }
 575   2         else
 576   2         {
 577   3          LED=!LED;
 578   3          Delay100ms(10);
 579   3      
 580   3              
 581   3              
 582   3               if(set_ok)//设置模块的ID
 583   3               {
 584   4                  
 585   4              watchdog_feed();
 586   4                      set_ok=0;
 587   4                  EA=0;
 588   4                  FLASH_WriteByte(0xc04,RX_addr);   //存入新ID
 589   4                  EA=1;
 590   4                      ADDR=RX_addr;
 591   4                  LED=0;
 592   4              flash_led(4);
 593   4                      i=0;
 594   4                  LED=1;
 595   4                      Link_ok=1;
 596   4              watchdog_feed();
 597   4                      Setok();
 598   4               }
 599   3         }
 600   2       }
 601   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1062    ----
   CONSTANT SIZE    =   ----    ----
C51 COMPILER V7.05   MAIN                                                                  04/13/2004 13:35:26 PAGE 11  

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     20      10
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      4    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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