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

📄 main_0928.lst

📁 基于485的51单片机多机通讯程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 222          void start_i2a()
 223          {
 224   1         P1_6=1;              //SCL
 225   1         P1_7=1;              //SDA
 226   1         S1CON=0x47;          //ENS1=1 STA=0 STO=0 SI=0 AA=1
 227   1         PS1=1;
 228   1         EA=1;
 229   1         ES1=1;
 230   1         STA=1;
 231   1      }
 232          
 233          void get_SLA()
 234          {
 235   1      
 236   1              if(PRG<50)
 237   1              {
 238   2                      SLA=0xA0;
 239   2                      temp_PRG=PRG;
 240   2              }
C51 COMPILER V7.06   MAIN_0928                                                             10/13/2005 09:21:33 PAGE 5   

 241   1              else
 242   1              {
 243   2                      if(PRG<100)
 244   2                      {
 245   3                              SLA=0XA2;
 246   3                              temp_PRG=PRG-50;
 247   3                      }
 248   2              }
 249   1              mainDDR=temp_PRG*768;
 250   1      }
 251          
 252          void get_SLA1()
 253          {
 254   1              if(PRG<50)
 255   1              {
 256   2                      SLA=0XA0;
 257   2                      temp_PRG=PRG;
 258   2              }
 259   1              else
 260   1              {
 261   2                      if(PRG<100)
 262   2                      {
 263   3                              SLA=0XA2;
 264   3                              temp_PRG=PRG-50;
 265   3                      }
 266   2                      else
 267   2                      {
 268   3                              if(PRG<150)
 269   3                              {
 270   4                                      SLA=0XA4;
 271   4                                      temp_PRG=PRG-100;
 272   4                              }
 273   3                              else
 274   3                              {
 275   4                                      SLA=0XA6;
 276   4                                      temp_PRG=PRG-150;
 277   4                              }
 278   3                      }
 279   2              }
 280   1              mainDDR=temp_PRG*768;
 281   1      }
 282          
 283          void readEEP_byte()
 284          {
 285   1              nums=0;
 286   1              readEEPbyte=1;
 287   1              SLA=0XA0;
 288   1              COMM=0xFF;
 289   1              start_i2a();
 290   1              while(readEEPbyte==1)
 291   1              {
 292   2                      if(urgent_stop==1)
 293   2                              readEEPbyte=0;
 294   2              }
 295   1      }
 296          
 297          void readEEP_page()
 298          {
 299   1              nums=0;
 300   1              nums1=0;
 301   1              delt=2;
 302   1              point=&pp.pn;
C51 COMPILER V7.06   MAIN_0928                                                             10/13/2005 09:21:33 PAGE 6   

 303   1              readEEPpage=1;
 304   1              get_SLA1();
 305   1              COMM=(mainDDR+times*128)/256;
 306   1              start_i2a();
 307   1              while(readEEPpage==1)
 308   1              {
 309   2                      if(urgent_stop==1)
 310   2                              readEEPpage=0;
 311   2              }
 312   1      }
 313          
 314          void writeEEP_byte()
 315          {
 316   1              nums=0;
 317   1              writeEEPbyte=1;
 318   1              SLA=0XA0;
 319   1              COMM=0XFF;
 320   1              start_i2a();
 321   1              while(writeEEPbyte==1)
 322   1              {
 323   2                      if(urgent_stop==1)
 324   2                              writeEEPbyte=0;
 325   2              }
 326   1      }
 327          
 328          void writeEEP_word()
 329          {
 330   1              nums=0;
 331   1              writeEEPword=1;
 332   1              start_i2a();
 333   1              while(writeEEPword==1)
 334   1              {
 335   2                      if(urgent_stop==1)
 336   2                              writeEEPword=0;
 337   2              }
 338   1      }
 339          
 340          void writeEEP_page(unsigned char t)                     //将指定专家参数复制到目的程序号下
 341          {
 342   1              nums=0;
 343   1              delt=2;
 344   1              writeEEPpage=1;
 345   1              get_SLA1();
 346   1              COMM=(mainDDR+t*128)/256;
 347   1              start_i2a();
 348   1              while(writeEEPpage==1)
 349   1              {
 350   2                      if(urgent_stop==1)
 351   2                              writeEEPpage=0;
 352   2              }
 353   1      }
 354          
 355          void save_prg()
 356          {
 357   1              savePRG=1;
 358   1              SLA=0XA0;
 359   1              COMM=0XFF;
 360   1              writeEEP_byte();
 361   1      }
 362          
 363          void TR_noans()
 364          {
C51 COMPILER V7.06   MAIN_0928                                                             10/13/2005 09:21:33 PAGE 7   

 365   1              noans_ok=0;
 366   1              TB8=1;
 367   1              POINTER0=0;
 368   1              SSUM=0;
 369   1              send=1;
 370   1              c_t1=0;
 371   1              TR1=1;
 372   1              while(POINTER0<s_byte_nums);
 373   1              TR1=0;
 374   1              noans_ok=1;
 375   1      }
 376          
 377          void TR_ans()
 378          {
 379   1              REN=0;
 380   1              ans=1;
 381   1              POINTER1=0;
 382   1              RSUM=0;
 383   1              TB8=1;
 384   1              POINTER0=0;
 385   1              SSUM=0;
 386   1              send=1;
 387   1              c_t1=0;
 388   1              TR1=1;
 389   1              while(POINTER0<s_byte_nums);
 390   1              TR1=0;
 391   1      
 392   1              REN=1;
 393   1              send=0;
 394   1              c_t1=0;
 395   1              TR1=1;
 396   1              while(POINTER1<r_byte_nums&&overtime==0);
 397   1              TR1=0;
 398   1              POINTER1=0;
 399   1              RSUM=0;
 400   1              c_t1=0;
 401   1              if(overtime==1)
 402   1              {
 403   2                      if(wait_ans==1)
 404   2                      {
 405   3                              err=2;
 406   3                              main_err=1;
 407   3                      }
 408   2                      c_t1=0;
 409   2              }
 410   1              ans=0;
 411   1              REN=0;
 412   1      }
 413          
 414          void get_secondDDR()
 415          {
 416   1              switch(p_name)
 417   1              {
 418   2                      case T01:       secondDDR=2;break;
 419   2                      case T02:       secondDDR=4;break;
 420   2                      case GAS2:      secondDDR=6;break;
 421   2                      case T03:       secondDDR=8;break;
 422   2                      case T04:       secondDDR=10;break;
 423   2                      case K1:        secondDDR=12;break;
 424   2                      case Ignit:     secondDDR=14;break;
 425   2                      case I11:       secondDDR=16;break;
 426   2                      case T12:       secondDDR=18;break;
C51 COMPILER V7.06   MAIN_0928                                                             10/13/2005 09:21:33 PAGE 8   

 427   2                      case I12:       secondDDR=20;break;
 428   2                      case T13:       secondDDR=22;break;
 429   2                      case T13_SD:    secondDDR=24;break;
 430   2                      case T14:       secondDDR=26;break;
 431   2                      case I14:       secondDDR=28;break;
 432   2                      case T15:       secondDDR=30;break;
 433   2                      case I15:       secondDDR=32;break;
 434   2                      case DI:        secondDDR=34;break;
 435   2                      case AHF:       secondDDR=36;break;
 436   2                      case I16:       secondDDR=38;break;
 437   2                      case F:         secondDDR=40;break;
 438   2                      case T16:       secondDDR=42;break;
 439   2                      case N11:       secondDDR=44;break;
 440   2                      case N11_SD:    secondDDR=46;break;
 441   2                      case T17:       secondDDR=48;break;
 442   2                      case I17:       secondDDR=50;break;
 443   2                      case K2:        secondDDR=52;break;
 444   2                      case RN:        secondDDR=54;break;
 445   2                      case D:         secondDDR=56;break;
 446   2                      case K21:       secondDDR=58;break;
 447   2                      case V21_P:     secondDDR=60;break;
 448   2                      case V21_B:     secondDDR=62;break;
 449   2                      case T21:       secondDDR=64;break;
 450   2                      case T21_SD:    secondDDR=66;break;

⌨️ 快捷键说明

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