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

📄 main.lst

📁 矿工定位系统单端
💻 LST
📖 第 1 页 / 共 3 页
字号:
 246   4                   }
 247   3                               i=0;
 248   3                      break;
 249   3               case 3:
 250   3                     RX_BEEP=c;
 251   3                          START_T0(20);
 252   3                               RXSTAT=4;
 253   3                               RXtem[3]=c;
 254   3                      /*if(c==ADDR)
 255   3                              { 
 256   3                    
 257   3                               if(set)
 258   3                               {
 259   3                                RXSTAT=4;
 260   3                                START_T0(20);
 261   3                               }
 262   3                               else
 263   3                               {
 264   3                    RXSTAT=0;
 265   3                                rxok=1;
 266   3                    CALL_isr_T0();
 267   3                               }
 268   3                                
 269   3                              }*/
 270   3                      
 271   3                  break;
 272   3                case 4:
 273   3                    if(set)
 274   3                        {
 275   4                      RX_addr=c;
 276   4                              set_ok=1;
 277   4                              set=0;
 278   4                          RXSTAT=0;
 279   4                  CALL_isr_T0();
 280   4                         }
 281   3                         else
 282   3                         {
 283   4                           CRC.chrX[0]=c;
 284   4                  //SBUF=CRC.chrX[0];
 285   4                              //  while(!TI);
 286   4                      //        TI=0;
 287   4      
 288   4                               RXSTAT=5;
 289   4                               START_T0(20);
 290   4                         }
 291   3                      break;
 292   3                 case 5:
 293   3                      CRC.chrX[1]=c;
 294   3                               //SBUF=CRC.chrX[1];
 295   3                                //while(!TI);
 296   3                               // TI=0;
 297   3                              
 298   3      
 299   3                      //      if(crcx==CRC.intX)//crc交验通过
C51 COMPILER V7.05   MAIN                                                                  04/08/2005 13:54:31 PAGE 6   

 300   3                          { 
 301   4                           rxok=1;
 302   4                  }
 303   3                               RXSTAT=0;
 304   3                           CALL_isr_T0();
 305   3                        
 306   3                    break;
 307   3                default:
 308   3                   RXSTAT=0;
 309   3                           break;
 310   3              }
 311   2      
 312   2        }
 313   1       else
 314   1       {
 315   2             TI=0;
 316   2                 
 317   2        }
 318   1      }
 319          /*************************原有的函数需改变*************************************
 320          *                                                                           *
 321          * Function:     isr_timer0                                                  *
 322          *                                                                           *
 323          * Input:        -                                                           *
 324          * Output:       -                                                           *
 325          *                                                                           *
 326          * Description:                                                              *
 327          *                                                                           *
 328          *                                                                           *
 329          ****************************************************************************/
 330          void isr_timer0(void) interrupt 1 using 2
 331          {
 332   1        TR0=0;
 333   1         if(RXTimerOUT!=0)        //此if{}else{} 为新加入的判断超时功能
 334   1          { 
 335   2             RXTimerOUT--;
 336   2          }
 337   1          else
 338   1          {
 339   2            RXSTAT=0;
 340   2            RXNOM=0;
 341   2                set=0;
 342   2          }
 343   1      
 344   1      
 345   1        
 346   1        TH0=0Xac;
 347   1        TL0=0X95;
 348   1        TR0=1;   
 349   1      }
 350          //**********************************************************
 351          void Send_ok(unsigned char key)
 352          { 
 353   1         unsigned char i;
 354   1          ES=0;
 355   1          TX_EN=1; 
 356   1              //Delay1msa(5);
 357   1              for(i=0;i<8;i++)
 358   1              {
 359   2            SBUF = 0x88;                              // 发送数据
 360   2            while(0==TI);                     // 等待发送完毕
 361   2            TI = 0;                           // 清除发送标志
C51 COMPILER V7.05   MAIN                                                                  04/08/2005 13:54:31 PAGE 7   

 362   2                SBUF = 0xff;                          // 发送数据
 363   2            while(0==TI);                     // 等待发送完毕
 364   2            TI = 0;                           // 清除发送标志
 365   2      
 366   2                SBUF = key;                           // 发送数据
 367   2            while(0==TI);                     // 等待发送完毕
 368   2            TI = 0;                           // 清除发送标志
 369   2                SBUF = key;                           // 发送数据
 370   2            while(0==TI);                     // 等待发送完毕
 371   2            TI = 0;                           // 清除发送标志
 372   2         }
 373   1         if(key_tem==0x02)
 374   1         {
 375   2           wring_send_times--;
 376   2               if(wring_send_times==0)
 377   2               {
 378   3              key_tem=0x01;
 379   3               }
 380   2         }
 381   1         else
 382   1         {
 383   2          key_tem=0x01;
 384   2         }
 385   1              TX_EN=0; 
 386   1              //Delay1msa(4);
 387   1          ES=1;
 388   1        
 389   1      }
 390          
 391          /******************************************************************
 392          * 名称:UART_SendByte
 393          * 功能:向串口发送字节数据。
 394          * 入口参数:dat   待发送的数据
 395          * 出口参数:无
 396          ******************************************************************
 397          void  UART_SendByte(uint8 dat)
 398          {  SBUF = dat;                          // 发送数据
 399             while(0==TI);                        // 等待发送完毕
 400             TI = 0;                              // 清除发送标志
 401          }
 402          
 403          
 404          /******************************************************************
 405          * 名称:UART_SendCode
 406          * 功能:读取FLASH中的数据,并发送到串口。
 407          * 入口参数:addr          读取的起始地址
 408          *          no     读取的数据个数
 409          * 出口参数:无
 410          ******************************************************************
 411          void  UART_SendCode(uint16 addr, uint16 no)
 412          {  uint8 code *readp;
 413          
 414             readp = addr;
 415             for(; no>0; no--)
 416             {  UART_SendByte(*readp++);          // 读取数据并发送
 417             }
 418          }
 419          
 420          */
 421          void flash_led(unsigned char j )
 422          {  
 423   1         char i;
C51 COMPILER V7.05   MAIN                                                                  04/08/2005 13:54:31 PAGE 8   

 424   1         for(i=0;i<j;i++)
 425   1         {
 426   2              LED=0;
 427   2              Delay1ms(50);
 428   2                  LED=1;
 429   2                      Delay1ms(50);
 430   2         }
 431   1       LED=1;   
 432   1      }
 433          //***************************************************************
 434          void flash_beep(unsigned char j )
 435          {  
 436   1         char i;
 437   1         beep_delay++;
 438   1         if(beep_delay>40000)
 439   1         {
 440   2          beep_delay=0;
 441   2          for(i=0;i<j;i++)
 442   2          {
 443   3              BEEP=0;
 444   3              Delay1ms(60);
 445   3                  BEEP=1;
 446   3                      Delay1ms(60);
 447   3          }
 448   2         }
 449   1        BEEP=0;       
 450   1         
 451   1      }
 452          //******************************************************************
 453          //**********************************************************
 454          void Setok(void)
 455          { 
 456   1        
 457   1          ES=0;
 458   1          SBUF ='O';                          // 发送数据
 459   1          while(0==TI);                       // 等待发送完毕
 460   1          TI = 0;                             // 清除发送标志
 461   1          SBUF = 'K';                         // 发送数据
 462   1          while(0==TI);                       // 等待发送完毕
 463   1          TI = 0;                             // 清除发送标志
 464   1          ES=1;
 465   1      }
 466          //**************************************************************
 467          void main(void)
 468          {
 469   1        unsigned  char Link_ok=0,j,CS_state=0;
 470   1        unsigned int powoffdelay=0;
 471   1      
 472   1        
 473   1        ports_init();
 474   1        BEEP=0;
 475   1        LED=0;
 476   1       Delay100ms(2);
 477   1       LED=1;
 478   1       if(ISP) 
 479   1        {
 480   2         user_uart_init();//用户串口初始化
 481   2          watchdog_init();//初始化看门狗
 482   2        
 483   2         }
 484   1       else
 485   1        {
C51 COMPILER V7.05   MAIN                                                                  04/08/2005 13:54:31 PAGE 9   

 486   2         uart_init();  //进入ISP模式
 487   2         FLASH_WriteByte(0xc04, 0);
 488   2        }
 489   1      
 490   1        osc_init();
 491   1        rtc_init();
 492   1        EA=1;
 493   1        ES=1;
 494   1        CS=0;
 495   1        TX_EN=0; //接收状态
 496   1        PWR =1;
 497   1       //rtc_start();
 498   1       
 499   1        if((FLASH_ReadByte(0XC05)==0x55)&(FLASH_ReadByte(0XC06)==0xaa))//初始化模块的ID
 500   1        {
 501   2          EA=0;
 502   2          ADDR=FLASH_ReadByte(0XC04); 
 503   2          EA=1;

⌨️ 快捷键说明

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