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

📄 main.lst

📁 linBUS驱动原码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 195   2                      {
 196   3                              if(l_rec_data[0]==CMDID)
 197   3                              {
 198   4                                      l_cmd_handle();
 199   4                              }
 200   3                              else if(l_rec_data[0]==0x80)
 201   3                              {
 202   4                                      sleep_cout=1999;
 203   4                              }
 204   3                              TR1=0;
 205   3                              IE1=0;
 206   3                              EX1=1;
 207   3                              l_sys_mode=MODE0;
 208   3                              l_flg_recgood=0;
 209   3                              TR1=0;
 210   3                      }
 211   2                      if((RTCCON&0x80)==0x80)
 212   2                      {
 213   3                              RTCCON&=0x63;
 214   3                              if(time==l_ledsep)
 215   3                                      {
 216   4                                              l_flg_timeok=1;
 217   4                                              time=0;
 218   4                                      }
 219   3                              else
 220   3                                      time++;
 221   3                              sleep_cout++;
 222   3                              if(sleep_cout==2000)
 223   3                              {
 224   4                                      P0=0XFF;
 225   4                                      PCON=PCON|0X03;
 226   4                              }
 227   3                      }
 228   2                      if((l_flg_timeok==1)&&(led_all_light==1))
 229   2                      {
 230   3                              switch(l_ledsta&0x03)
 231   3                              {
 232   4                                      case 2 :
 233   4                                              if(flash!=0)
 234   4                                                      flash=flash<<1;
 235   4                                              else
 236   4                                                      flash=0x01;
 237   4                                              break;
 238   4                                      case 3 :
 239   4                                              if(flash!=0)
 240   4                                                      flash=flash>>1;
 241   4                                              else
C51 COMPILER V7.06   MAIN                                                                  08/08/2003 11:35:03 PAGE 5   

 242   4                                                      flash=0x80;
 243   4                                              break;
 244   4                                      default : 
 245   4                                              break;
 246   4                              }
 247   3                              l_flg_timeok=0;
 248   3                              P0=flash^0xff;
 249   3                      }
 250   2              }
 251   1      }
 252          void delay()
 253          {
 254   1      unsigned char i,j;
 255   1      for(i=0;i<110;i++)
 256   1      for(j=0;j<110;j++);
 257   1      
 258   1      }
 259          void delayNS(unsigned int k)
 260          {
 261   1      unsigned char i,j;
 262   1      for(;k>0;k--)
 263   1      for(i=0;i<110;i++)
 264   1      for(j=0;j<110;j++);
 265   1      
 266   1      }
 267          uint8 checksum8(uint8 *chk8,uint8 num)
 268          {
 269   1      uint8 temp=0;
 270   1              for( ;num>0;num--)
 271   1              {
 272   2                      temp=temp+*chk8;
 273   2                      if(temp<*chk8)
 274   2                              temp++;
 275   2                      chk8++;
 276   2              }
 277   1              return(0xff-temp);      
 278   1      }
 279          bit l_rce_data(void)
 280          {
 281   1      uint8 ii,temp;
 282   1              TH0=0;
 283   1              TL0=0;//可以增加选项
 284   1              TR0=1;
 285   1              while(RI==0&&TF0==0);
 286   1              TR0=0;
 287   1              if(TF0==0)
 288   1              {
 289   2                      RI=0;
 290   2                      l_rec_data[1]=SBUF;
 291   2                      if(l_rec_data[0]==CMDID)
 292   2                              temp=5;
 293   2                      else 
 294   2                              temp=3;
 295   2                      for(ii=2;ii<=temp;ii++)
 296   2                      {       
 297   3                              TH0=0;
 298   3                              TR0=1;
 299   3                              while(RI==0&&TF0==0);
 300   3                              TR0=0;
 301   3                              if(TF0==0)
 302   3                              {
 303   4                                      RI=0;
C51 COMPILER V7.06   MAIN                                                                  08/08/2003 11:35:03 PAGE 6   

 304   4                                      l_rec_data[ii]=SBUF;
 305   4                              }
 306   3                              else
 307   3                              {
 308   4                                      TF0=0;
 309   4                                      break;
 310   4                              }       
 311   3                      }
 312   2                      if(l_rec_data[temp]==checksum8(&l_rec_data[1],temp-1))
 313   2                      {
 314   3                              l_rec_data[temp]=0;//清除校验和
 315   3                              return 1;
 316   3                      }
 317   2                      l_rec_data[temp]=0;//清除校验和
 318   2                      return 0;       
 319   2              }
 320   1              else
 321   1              {
 322   2                      TF0=0;
 323   2                      return(0);
 324   2              }
 325   1      }
 326          void l_send_back(uint8 * data_ptr,uint8 num)
 327          {
 328   1      uint8 temp;
 329   1              EX1=0;
 330   1              SCON=0X40;
 331   1              for(temp=0;temp<num;temp++)
 332   1              {
 333   2                      SBUF=*data_ptr;
 334   2                      while(TI==0);
 335   2                      TI=0;
 336   2                      data_ptr++;
 337   2              }
 338   1              data_ptr=data_ptr-num;
 339   1              SBUF=checksum8(data_ptr,num);
 340   1              while(TI==0);
 341   1              TI=0;
 342   1              SCON=0X50;
 343   1              IE1=0;
 344   1              //EX1=1;
 345   1      }
 346          void l_cmd_handle()
 347          {
 348   1              l_ledsta=l_rec_data[1]&0x03;
 349   1              l_ledsep=(l_rec_data[1]&0xf0)>>4;
 350   1              if(l_ledsep==0)
 351   1              {
 352   2                      led_all_light=0;
 353   2                      P0=0;
 354   2              }
 355   1              else
 356   1                      led_all_light=1;
 357   1              flash=0;
 358   1              time=0;
 359   1      }
 360          void l_sta_handle()
 361          {
 362   1              l_rec_data[1]=(l_ledsep<<4)+l_ledsta;
 363   1              l_send_back(&l_rec_data[1],2);
 364   1      }
 365          void l_con_handle()
C51 COMPILER V7.06   MAIN                                                                  08/08/2003 11:35:03 PAGE 7   

 366          {
 367   1              l_rec_data[1]=1;
 368   1              l_rec_data[2]=0;
 369   1              l_send_back(&l_rec_data[1],2);
 370   1      }
 371          void l_rtc_init()
 372          {
 373   1      
 374   1      RTCH=0x3;
 375   1      RTCL=0Xff;
 376   1      RTCCON=0X63;//??
 377   1      PWDRT=0;
 378   1      //EWDRT=1;
 379   1      }
 380          
 381          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    859    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     17       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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