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

📄 main.lst

📁 这是本人有幸收集的最完整的10多级液晶显示程序模块
💻 LST
📖 第 1 页 / 共 5 页
字号:
 249   2                           break;
 250   2              case 186:
 251   2                           menu_caozuo();
 252   2                           break;
 253   2      //-----------chenjw-------s----
 254   2      
 255   2              case 95:     alarm_message1();break;
 256   2              case 97:     alarm_message2();break;
 257   2              case 98:     alarm_message3();break;
 258   2      
 259   2              case 100:    trip_alarm_dis1();break;
 260   2              case 105:    trip_alarm_dis1();break;
 261   2      
 262   2              case 110:    notrip_alarm_dis();break;
 263   2      
 264   2              case 113:
 265   2              case 115:
 266   2              case 117:
 267   2              case 119:
 268   2              case 121:
 269   2              case 163:
 270   2              case 165:    fault_message_dis();break;
 271   2      
 272   2              case 124:
 273   2              case 127:
 274   2              case 130:
 275   2              case 133:
 276   2              case 136:
 277   2              case 139:
 278   2              case 142:
 279   2              case 145:
 280   2              case 148:
 281   2              case 151:
 282   2              case 154:
 283   2              case 157:
 284   2              case 167:
 285   2              case 160:    fault_dis();break;
 286   2              case 185:    menu_guzhangjl_zero();break;
 287   2      
 288   2        case 9:      //添加允许分断电流的特殊处理
 289   2        case 54:
 290   2        case 55:
 291   2        case 56:
 292   2        case 57:
 293   2        case 58:
 294   2        case 59:
 295   2        case 60:
 296   2        case 61:
 297   2        case 62:
 298   2        case 63:
 299   2        case 64:
C51 COMPILER V7.01  MAIN                                                                   12/21/2003 15:17:23 PAGE 6   

 300   2        case 65:
 301   2        case 66:
 302   2        case 67:
 303   2        case 68:
 304   2        case 69:
 305   2        case 70:
 306   2        case 71:
 307   2        case 72:
 308   2        case 73:
 309   2        case 74:
 310   2        case 75:
 311   2        case 76:
 312   2        case 77:
 313   2        case 78:
 314   2        case 79:
 315   2        case 80:
 316   2        case 81:
 317   2        case 82:
 318   2        case 83:
 319   2        case 84:
 320   2        case 85:
 321   2        case 86:
 322   2        case 87:
 323   2        case 89:
 324   2        case 31:
 325   2        case 88:    set_set_dis();break;
 326   2        case 90:    protect_set_dis();break;
 327   2      //------------------chenjw ----------e---------
 328   2      
 329   2      //-----------------jyj
 330   2          case 170:    io_set();  break;
 331   2      
 332   2              case 173:    io_state();break;
 333   2              case 174:    di_display();break;
 334   2              case 175:    do_display();break;
 335   2              case 176:
 336   2              case 178:     parameter_set();break;
 337   2      
 338   2              case 250:     alone_dis1();break;
 339   2      
 340   2      
 341   2      
 342   2              default:             break;
 343   2           }
 344   1      }
 345          
 346          /*---------------------------------------    界面显示程序结束    ----------------------------------------*
             -/
 347          
 348          
 349          /*---------------------------------------    通讯控制程序开始    ----------------------------------------*
             -/
 350          
 351          
 352          
 353          /********************************************************************
 354          *
 355          * 名称: remote_build
 356          * 说明: 试用不同波特率,发送特殊报文取设备动态地址.
 357          * 功能: 通讯建立
 358          * 调用: 1,由通讯初始化程序;
 359                          2,通讯失败10次后由接收中断程序
C51 COMPILER V7.01  MAIN                                                                   12/21/2003 15:17:23 PAGE 7   

 360          * 输入: 无
 361          * 返回值: remote_type_address=1;
 362          ***********************************************************************/
 363          void remote_build(void)
 364          {//通讯建立程序
 365   1              remote_type_address=1;
 366   1              remote_sign_built=0;
 367   1       while(remote_sign_built==0)
 368   1       {    //单机/首次工作模式执行一次;联机工作模式则始终搜索设备
 369   2         if(program_state==1)  return;
 370   2      
 371   2         //22.1184MHz
 372   2         if((PCON&0x80)==0)
 373   2         {  //不加倍
 374   3           if(TH1==0xf4){TH1=0xfa;TL1=0xfa;}             //4.8K->9.6K
 375   3           else if(TH1==0xfa){TH1=0xfd;TL1=0xfd;}        //9.6K->19.2K
 376   3           else {PCON|=0x80;TH1=0xfd;TL1=0xfd;}          //19.2K->38.4K
 377   3         }
 378   2         else
 379   2         {PCON&=0x7f;TH1=0xf4;TL1=0xf4;}                 //38.4K->4.8K
 380   2      
 381   2      //12MHz                                            //for debug
 382   2      
 383   2      
 384   2      
 385   2      
 386   2                                                      //通讯故障,显示通讯故障
 387   2              trbuf[0]=0x68;
 388   2              trbuf[1]=0x00;
 389   2              trbuf[2]=0x00;
 390   2              trbuf[3]=0x68;
 391   2              trbuf[4]=0xd0;                          //特殊报文校验码
 392   2              read_trbuf_p=trbuf;                     //指向发送缓存
 393   2              TxdLength=5;    //发送缓存使用长度
 394   2              receive_byte_number=5;          //接收字节数
 395   2              Txded_Number=0;                 //发送缓存读计数清零
 396   2              REN=0;
 397   2           Current_Message_End=1;
 398   2              CLK=1;
 399   2              SBUF=*read_trbuf_p;                     //起动发送
 400   2      
 401   2         WaitTime=0;
 402   2         while((remote_sign_built!=1)&&(WaitTime<200))
 403   2           WD_SDA=~WD_SDA;
 404   2         if(alone_user==1){remote_sign_built=1;}//单机模式,建立通讯只执行一次
 405   2         //remote_sign_built=1;//for debug
 406   2       }
 407   1      }//remote_build
 408          
 409          void GetData(void)
 410          {
 411   1       unsigned char i;
 412   1       unsigned char j;
 413   1       value_message_count=0;
 414   1       for(i=0;i< message_count[dis_number];i++)
 415   1       {
 416   2        again:
 417   2        if(program_state==1)  return;
 418   2        if(value_message_count==0)
 419   2        {     //于首条报文
 420   3          value_message_p = &dis_message_tab[0][0] + dis_number * long_dis_message;   //发送报文的首地址
 421   3          write_rebuf_p=union_vlaue.revalue_buf;//指向其接收缓存
C51 COMPILER V7.01  MAIN                                                                   12/21/2003 15:17:23 PAGE 8   

 422   3          RxdPointBak=write_rebuf_p;
 423   3        }
 424   2        trbuf[0]=address_device;
 425   2        trbuf[1]=0x03;
 426   2        for(j=0;j<4;j++) //取报文数据
 427   2           trbuf[j+2]=*(value_message_p+value_message_count*4+j);     //[行][列]*(p+i*long_dis_message+j)
 428   2      
 429   2           receive_byte_number=5+(*(read_trbuf_p+5))*2;       //计算条报文接收字节数(支持到256)
 430   2           RemoteTypeBak=3;
 431   2      
 432   2          /*debug*/                 if(receive_byte_number>37)   //接收长度出错可能导致系统有问题.
 433   2              return;
 434   2      
 435   2       //---------故障记录区读取的特殊处理--s-------
 436   2        if((trbuf[3]!=0xb3)&&(TripLogState==1)) //非接地类型地址,地址偏移,0xb3为接地保护方式
 437   2        {
 438   3                      trbuf[3]+=0x8e;   //(570h-454h)/2=8e.
 439   3        }
 440   2       //---------故障记录区读取的特殊处理--s-------                                  receive_byte_number=37;
 441   2      
 442   2      
 443   2         TxdLength=6;//实际发送缓存有效长度
 444   2         crc_account();                                               //crc计算
 445   2         Txded_Number=0;    //发送缓存读计数清零,接收缓存清零在发送结束时清零.                                                                                                        //发送缓存读计数清零
 446   2         Current_Message_End=1;
 447   2         REN=0;                     //启动发送                                                        //起动输出
 448   2         CLK=1;
 449   2         RI=0;
 450   2         RxdPointBak=write_rebuf_p;//
 451   2         SBUF=trbuf[0];
 452   2         WaitTime=0;
 453   2         //Current_Message_End=0;//for debug
 454   2         while((Current_Message_End!=0)&&(WaitTime<150))
 455   2           WD_SDA=~WD_SDA;
 456   2         //Current_Message_End=0;//for debug
 457   2         if(Current_Message_End!=0)
 458   2         {
 459   3            if(++remote_fault_count>10)
 460   3            {
 461   4              remote_fault_count=0;
 462   4              old_dis_number=dis_number;
 463   4              ComunicationFault();
 464   4              remote_build();
 465   4              dis_number=old_dis_number;
 466   4       //       key=nokey;
 467   4       //       display();
 468   4            }
 469   3      
 470   3           write_rebuf_p=RxdPointBak;
 471   3           goto again;
 472   3         }
 473   2         else
 474   2           {
 475   3             value_message_count++;//报文计数加一
 476   3             remote_fault_count=0;
 477   3           }
 478   2       }
 479   1      }
 480          void WriteData(void)
 481          {
 482   1      
 483   1       again:
C51 COMPILER V7.01  MAIN                                                                   12/21/2003 15:17:23 PAGE 9   

 484   1          if(program_state==1)  return;
 485   1          trbuf[0]=address_device;
 486   1          trbuf[1]=0x06;
 487   1          trbuf[2]=set_addh;
 488   1          trbuf[3]=set_addl;
 489   1          trbuf[4]=set_valueh;
 490   1          trbuf[5]=set_valuel;
 491   1          TxdLength=6;//实际发送缓存有效长度
 492   1          receive_byte_number=8;                      //06功能码接收总字节数
 493   1          RemoteTypeBak=1;
 494   1      
 495   1         crc_account();                                               //crc计算
 496   1         Txded_Number=0;    //发送缓存读计数清零,接收缓存清零在发送结束时清零.                                                                                                        //发送缓存读计数清零
 497   1         Current_Message_End=1;
 498   1         REN=0;                     //启动发送                                                        //起动输出
 499   1         CLK=1;
 500   1         RI=0;
 501   1      
 502   1         SBUF=trbuf[0];
 503   1         WaitTime=0;
 504   1         //Current_Message_End=0;//for debug
 505   1         while((Current_Message_End!=0)&&(WaitTime<100))
 506   1           WD_SDA=~WD_SDA;
 507   1         if(Current_Message_End!=0)

⌨️ 快捷键说明

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