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

📄 main.lst

📁 针对STC8051单片机的开发包
💻 LST
📖 第 1 页 / 共 2 页
字号:
 289   1              uart_putc(tmp);                         //发送校验和。
 290   1              en485 = 1;                              //485接收使能
 291   1      } 
 292          /***********************************************************************************
 293          //命令处理程序
 294          
 295          
 296          ************************************************************************************/
 297          void cmd_process()
 298          {
 299   1      UINT8  i,tmp;
 300   1              INT_UART(false);                        //禁止中断
 301   1              if(buffer[0] != machine_addr)
 302   1              {
 303   2                      if((buffer[0] != RA_FLAG) || (buffer[1] != READ_ADDR))
C51 COMPILER V7.50   MAIN                                                                  09/30/2006 21:59:31 PAGE 6   

 304   2                      {
 305   3                              INT_UART(true);
 306   3                              return;
 307   3                      }
 308   2              }
 309   1              i = HEAD + buffer[0] + buffer[1];       //校验和
 310   1              if( i != buffer[2])
 311   1              {
 312   2                      INT_UART(true);
 313   2                      return;
 314   2              }
 315   1         switch(buffer[1])
 316   1         {
 317   2              case SET_ADDR:          //设置地址
 318   2                      i = uart_getc();
 319   2                      tmp = uart_getc();
 320   2                      if( tmp != i)           
 321   2                      {
 322   3              //              uart_putc(ERR_VERI);
 323   3                              i = ERR_VERI;
 324   3                              mcu2pc(&i,1);
 325   3                              INT_UART(true);
 326   3                              return;
 327   3                      }
 328   2                      buffer[1] = i;
 329   2                      buffer[0] = SYS_ADDR;           //系统设置标志
 330   2                      bit_iap = flsh_sector_wr(EEP_SECTOR1,2,buffer);         
 331   2                      if(bit_iap)
 332   2                      {
 333   3                              i = SUCC_ADDR;
 334   3                              mcu2pc(&i,1);
 335   3                              machine_addr = buffer[1];
 336   3                                      //设置地址成功
 337   3                      }
 338   2                      else
 339   2                      {
 340   3                              i = ERR_ADDR;
 341   3                              mcu2pc(&i,1);
 342   3                                              //设置地址失败
 343   3                      }
 344   2                      break;
 345   2              case READ_ADDR:            //读本机地址
 346   2                              mcu2pc(&machine_addr,1);                
 347   2                      break;
 348   2              case READ_T:                            //读温度
 349   2                              if(bit_tpsensor)
 350   2                              {
 351   3                                      buffer[0] = ERR_TH;
 352   3                              }
 353   2                              else
 354   2                              {
 355   3                                      buffer[0] = SUCC_TH;            //读数据无误
 356   3                              }
 357   2                              
 358   2                              buffer[1] = tp >> 8;
 359   2                              buffer[2] = tp & 0x00ff;
 360   2                              mcu2pc(buffer,3);                       //发送3个字节。状态+温度h+温度l
 361   2                      break;
 362   2              case READ_S:
 363   2                              if(bit_tpsensor)
 364   2                              {
 365   3                                      buffer[0] = ERR_TH;
C51 COMPILER V7.50   MAIN                                                                  09/30/2006 21:59:31 PAGE 7   

 366   3                              }
 367   2                              else
 368   2                              {
 369   3                                      buffer[0] = SUCC_TH;            //读数据无误
 370   3                              }
 371   2                              
 372   2                              buffer[1] = t;
 373   2                              mcu2pc(buffer,2);                       //发送3个字节。状态+温度h+温度l       
 374   2                      break;
 375   2              case OPEN:
 376   2                              relay_os(1);
 377   2                              buffer[0] = ASK;
 378   2                              mcu2pc(buffer,1);
 379   2                      break;
 380   2              case SHUT:
 381   2                              relay_os(0);
 382   2                              buffer[0] = ASK;
 383   2                              mcu2pc(buffer,1);
 384   2                      break;
 385   2              case TEST:
 386   2                                SEG_DRV =  uart_getc()   ;
 387   2                      break;
 388   2                      default:
 389   2                              break;
 390   2                      }
 391   1              INT_UART(true);
 392   1      }
 393          /**************************************************************************/
 394          void look_up_code()
 395          {
 396   1              if(dabuff[6]==0x01)
 397   1              {
 398   2                      if(dabuff[2] == 0 && dabuff[3] == 0)
 399   2                      {       
 400   3                              disbuff[0] = ~table[11];                        //first seg dark
 401   3                              disbuff[1] = ~table[dabuff[4]] | 0x80;          //个位显示在Q1
 402   3                              disbuff[2] = ~table[dabuff[5]];         //小数位显示在Q2
 403   3                      }
 404   2                      else if(dabuff[2] == 0 && dabuff[3] != 0)
 405   2                      {
 406   3                              disbuff[0] = ~table[dabuff[3]];         //十位显示在Q0
 407   3                              disbuff[1] = ~table[dabuff[4]] | 0x80;          //个位显示在Q1
 408   3                              disbuff[2] = ~table[dabuff[5]];         //小数位显示在Q2
 409   3                      }
 410   2                      else if(dabuff[2] != 0)
 411   2                      {
 412   3                              disbuff[0] = ~table[dabuff[2]];
 413   3                              disbuff[1] = ~table[dabuff[3]];
 414   3                              disbuff[2] = ~table[dabuff[4]];
 415   3                      }
 416   2              }
 417   1              else if(dabuff[6] == 0x00)
 418   1              {
 419   2                      disbuff[0] = ~table[10];
 420   2                      if(dabuff[3] == 0)
 421   2                      {
 422   3                              disbuff[1] = ~table[dabuff[4]] | 0x80;
 423   3                              disbuff[2] = ~table[dabuff[5]];
 424   3                      }
 425   2                      else
 426   2                      {
 427   3                              disbuff[1] = ~table[dabuff[3]];
C51 COMPILER V7.50   MAIN                                                                  09/30/2006 21:59:31 PAGE 8   

 428   3                              disbuff[2] = ~table[dabuff[4]];
 429   3                      }
 430   2              } 
 431   1              else
 432   1              {
 433   2                      dabuff[6] = 0x01;
 434   2                      return;
 435   2              }
 436   1      }       
 437          /**************************************************************************/
 438          void do_tem()
 439          {
 440   1      SINT8 tmp,tmp1;
 441   1              ibus_reset();
 442   1              read_rom(dabuff);
 443   1              if(dabuff[0] != 0x28)
 444   1              {
 445   2                      bit_tpsensor = 1;
 446   2                      return;
 447   2              }
 448   1              bit_tpsensor = 0;
 449   1              read_scratchpad(dabuff);
 450   1              if((dabuff[4]&0x60) != 0x40)
 451   1              {
 452   2                      dabuff[0]=125;
 453   2                      dabuff[1]=-55;
 454   2                      dabuff[2]=0x5f;   //1f->9bit/93.75ms;3f->10bit/187.5ms;5f->11bit/375ms;7f->12bit/750ms;
 455   2                      ibus_reset();
 456   2                      write_skip();
 457   2                      write_scratchpad(dabuff);
 458   2                      copy_scratchpad();
 459   2              }
 460   1              ibus_reset();
 461   1              write_skip();
 462   1              convert_t();
 463   1              ibus_reset();
 464   1              write_skip(); 
 465   1              read_temperature(dabuff); //read temperature
 466   1              tp = dabuff[1] << 8 | dabuff[0];
 467   1              t = (dabuff[1] << 4) | (dabuff[0] >> 4); 
 468   1              
 469   1              dabuff[2]=dabuff[3]=dabuff[4]=dabuff[5] =dabuff[6]=0;
 470   1        // 百位               十位       个位     小数位    状态位
 471   1              tmp = t;
 472   1              tmp1 = dabuff[0] & 0x0e;
 473   1              if(tmp >= 0)
 474   1              {                                                                
 475   2                      dabuff[6] = 0x01;                        //表示正数
 476   2                      while(tmp>=100)
 477   2                      {
 478   3                              tmp = tmp - 100;                 //温度大于等于100度.百位加1
 479   3                              dabuff[2]++;
 480   3                      }
 481   2                      while(tmp>=10)
 482   2                      {
 483   3                              tmp = tmp-10;                    //大于等于10度,十位加一
 484   3                              dabuff[3]++;
 485   3                      }
 486   2                      dabuff[4] = tmp;                         //个位就是剩下的数
 487   2                      
 488   2              }
 489   1              else
C51 COMPILER V7.50   MAIN                                                                  09/30/2006 21:59:31 PAGE 9   

 490   1              {
 491   2                      dabuff[6] = 0x00;                        //温度值小于0度,负值
 492   2                      dabuff[2] = 10;                         //因为负值最小为-55度,没有百位,该位用作-号              
 493   2                      while(t<=10)
 494   2                      {
 495   3                              tmp = tmp+10;                    //负10位,加10,直到十位为0.
 496   3                              dabuff[3]++;
 497   3                      }
 498   2                      while(tmp<0)                                    //个位,不断加1,计数.知道为0
 499   2                      {
 500   3                              tmp = tmp+1;
 501   3                              dabuff[4]++;
 502   3                      }
 503   2                      tmp1 = tmp1 -1;
 504   2                      tmp1 &= 0x0f;
 505   2                      tmp1 = ~tmp1;
 506   2                      
 507   2           }
 508   1               switch(tmp1)
 509   1                      {
 510   2                              case 0x0:
 511   2                                      dabuff[5]=0;
 512   2                                      break;
 513   2                              case 0x02:
 514   2                                      dabuff[5] = 1;
 515   2                                      break;
 516   2                              case 0x04:
 517   2                                      dabuff[5] = 2;
 518   2                                      break;
 519   2                              case 0x06:
 520   2                                      dabuff[5] = 4;
 521   2                                      break;
 522   2                              case 0x08:
 523   2                                      dabuff[5] = 5;
 524   2                                      break;
 525   2                              case 0x0a:
 526   2                                      dabuff[5] = 7;
 527   2                                      break;
 528   2                              case 0x0c:
 529   2                                      dabuff[5] = 8;
 530   2                                      break;
 531   2                              case 0x0e:
 532   2                                      dabuff[5] = 9;
 533   2                                      break;
 534   2                              default:
 535   2                                      dabuff[5] = 6;
 536   2                                      break;
 537   2                              } 
 538   1               look_up_code();
 539   1      
 540   1      
 541   1      }
 542          /**************************************************************************/
 543          
 544          
 545          void main(void)
 546          {
 547   1      UINT8   i;
 548   1              cpu_init();
 549   1              bit_disp = 1;    //start display scan
 550   1      //      uart_putc(0xaa);
 551   1      //      uart_putc(0xbb);
C51 COMPILER V7.50   MAIN                                                                  09/30/2006 21:59:31 PAGE 10  

 552   1              //----------------------------
 553   1              while(1)
 554   1              { 
 555   2               WDT_CLR;
 556   2               do_tem();
 557   2               if(bit_ut_over)
 558   2               {
 559   3                      //for(i = 0;i<5;i++)
 560   3                      //uart_putc(buffer[i]);
 561   3                      cmd_process();
 562   3                      bit_ut_over = 0;        
 563   3                }
 564   2              }
 565   1      
 566   1      }               
*** WARNING C280 IN LINE 547 OF SRC\MAIN.C: 'i': unreferenced local variable


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1106    ----
   CONSTANT SIZE    =     12    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     31       8
   IDATA SIZE       =   ----    ----
   BIT SIZE         =     12       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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