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

📄 board.lst

📁 单片机控制面板程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 424   8                                                       }
 425   7                                               case 2:
 426   7                                                  {
 427   8                                                       SBUF=send_or_number;
 428   8                                                       send_point=0;
 429   8                                                       send_over_kind=SET_FU_CMD;// 同上
 430   8                                                       send_over_flag=1;//同上
 431   8                                                       send_on_kind=0;
 432   8                                                       break;
 433   8                                                       }
 434   7                                               default:break;
 435   7                                               }
 436   6                        break;
 437   6                                       }
 438   5                                 case SEND_FAULT_STACK:
 439   5                                   {
 440   6                                        send_on_flag=1;
 441   6                        switch(send_point)
 442   6                                          {
 443   7                                               case 0:
 444   7                                                 {
 445   8                                                  SBUF=FAULT_STACK_CMD;
 446   8                                                      send_point++;
 447   8                                                      send_on_kind=FAULT_STACK_CMD;
 448   8                                                      break;
 449   8                                                      }
 450   7                                               case 1:
 451   7                                                  {
 452   8                                                       SBUF=led_data;
 453   8                                                       send_point++;
 454   8                                                       send_or_number=FAULT_STACK_CMD^led_data;
 455   8                                                       send_on_kind=FAULT_STACK_CMD;
 456   8                                                       break;
 457   8                                                       }
 458   7                                               case 2:
 459   7                                                  {
 460   8                                                       SBUF=send_or_number;
 461   8                                                       send_point=0;
 462   8                                                       send_over_kind=FAULT_STACK_CMD;// 同上
 463   8                                                       send_over_flag=1;//同上
 464   8                                                       send_on_kind=0;
 465   8                                                       break;
 466   8                                                       }
 467   7                                               default:break;
 468   7                                               }
 469   6                        break;
 470   6                                       }
 471   5                                 case SEND_HEART:
 472   5                                   {
 473   6                                       send_on_flag=1;
 474   6                       SBUF=HEART_CMD;
 475   6                                       send_over_kind=HEART_CMD;//同上
 476   6                                       send_over_flag=1;//同上
 477   6                                       send_on_kind=0;
 478   6                                       break;
 479   6                                       }
 480   5                                 case SEND_FAULT:
 481   5                                   {
 482   6                                    send_on_flag=1;
 483   6                                    SBUF=FAULT_CMD;
 484   6                                        send_over_kind=FAULT_CMD;//同上
 485   6                                        send_over_flag=1;//同上
C51 COMPILER V7.06   BOARD                                                                 03/19/2009 21:23:59 PAGE 9   

 486   6                                        send_on_kind=0;
 487   6                                        break;
 488   6                       } 
 489   5                     case SEND_KEY:
 490   5                                   {
 491   6                                   send_on_flag=1; 
 492   6                                   SBUF=RESET_KEY_CMD;
 493   6                                       send_over_kind=RESET_KEY_CMD;//同上
 494   6                                       send_over_flag=1;//同上
 495   6                                       send_on_kind=0;
 496   6                                       break;
 497   6                      }//case
 498   5                                default:break;
 499   5                               }//switch
 500   4                         }//if
 501   3                 }//else
 502   2          }//if
 503   1      }
 504          
 505          //===========================================================
 506          //程序说明:这里有两类中断:一是发送中断;二是接收中断
 507          //===========================================================
 508          void receive(void) interrupt 4        //外中断,接收中断子程序
 509          {
 510   1          if(TI==1)
 511   1            {
 512   2             TI=0;
 513   2                 send_on_flag=0;//每次8位字发送完成后,清楚正在发送标志位
 514   2             }
 515   1          else
 516   1            {
 517   2                 RI=0;
 518   2             rx_buffer[rx_point]=SBUF;//接收数据,接收指针加一
 519   2                 rx_point++;
 520   2                 reveive_pro();
*** WARNING C206 IN LINE 520 OF BOARD.C: 'reveive_pro': missing function-prototype
 521   2            }
 522   1      }
 523          //============================================================
 524          //程序说明:接收程序根据数据类别进行接收,必须与前面发送的数据
 525          //一一对应接收,否则将不出错,根据心跳数据来断开通讯
 526          //============================================================
 527          reveive_pro()
 528          {
 529   1            char kind,temp_data;
 530   1                kind=rx_buffer[0];
 531   1                switch(kind)
 532   1                  {
 533   2                       case HAND_CMD:
 534   2                          {
 535   3                              rx_point=0;
 536   3                              send_success_flag=1;//置联网成功标志
 537   3                              send_over_kind=0;
 538   3                              send_over_flag=0;
 539   3                              break;
 540   3                          }
 541   2                       case SET_CMD:
 542   2                          {
 543   3                              rx_point=0;
 544   3                              if(send_over_kind==SET_CMD)
 545   3                                {
 546   4                            send_over_kind=0;
C51 COMPILER V7.06   BOARD                                                                 03/19/2009 21:23:59 PAGE 10  

 547   4                                send_over_flag=0;//清除一类数据发送完标志位
 548   4                                send_kind=send_kind&0xfb;//清除本次设置命令标志位
 549   4                    if(function_key_kind==2)//参数粘帖键处理程序
 550   4                       {
 551   5                       led_data++;
 552   5                       } 
 553   4                                }
 554   3                              break;
 555   3                              }
 556   2                       case SHOW_CMD:
 557   2                          {
 558   3                              if(rx_point>=5)
 559   3                                {
 560   4                                rx_point=0;
 561   4                                if(send_over_kind==SHOW_CMD)
 562   4                                   {
 563   5                                       send_over_kind=0;
 564   5                       send_over_flag=0;//清除一类数据发送完标志位
 565   5                                   send_kind=send_kind&0xbf;//清除本次显示命令标志位
 566   5                                   temp_data=rx_buffer[0]^rx_buffer[1]^rx_buffer[2]^rx_buffer[3];
 567   5                                   if(temp_data==rx_buffer[4])
 568   5                                    {
 569   6                                        show_data=(rx_buffer[2]<<8)|rx_buffer[3];     
 570   6                                        switch(led_data)
 571   6                                          {
 572   7                                               case 24:case 25:
 573   7                                                 {
 574   8                                                  show_data=(long)show_data/30;//3000表示T1周期寄存器最大值
 575   8                                                      break;
 576   8                                                      }
 577   7                                               default:break;
 578   7                                               }
 579   6                                        }
 580   5                                      }
 581   4                                }
 582   3                              break;
 583   3                              }
 584   2                       case FAULT_STACK_CMD:
 585   2                          {
 586   3                              if(rx_point>=4)
 587   3                                {
 588   4                                rx_point=0;
 589   4                                if(send_over_kind==FAULT_STACK_CMD)
 590   4                                   {
 591   5                                       send_over_kind=0;
 592   5                       send_over_flag=0;//清除一类数据发送完标志位
 593   5                                   send_kind=send_kind&0xdf;//清除本次显示命令标志位
 594   5                                   temp_data=rx_buffer[0]^rx_buffer[1]^rx_buffer[2];
 595   5                                   if(temp_data==rx_buffer[3])
 596   5                                    {
 597   6                                        error_data=rx_buffer[2];               
 598   6                                        }
 599   5                                      }
 600   4                                }
 601   3                              break;
 602   3                              }
 603   2                       case HEART_CMD:
 604   2                          {
 605   3                              rx_point=0;
 606   3                              if(send_over_kind==HEART_CMD)
 607   3                                {
 608   4                                 send_over_kind=0;
C51 COMPILER V7.06   BOARD                                                                 03/19/2009 21:23:59 PAGE 11  

 609   4                                 send_over_flag=0;//清除一类数据发送完标志位
 610   4                                 send_heart_last_count=0;
 611   4                                 send_kind=send_kind&0x7f;//清除本次心跳命令标志位
 612   4                                }
 613   3                              break;
 614   3                              }
 615   2                        case FAULT_CMD:
 616   2                          {
 617   3                              if(rx_point>=5)
 618   3                                {
 619   4                                rx_point=0; 
 620   4                                if(send_over_kind==FAULT_CMD)
 621   4                                 {  
 622   5                                  send_over_kind=0; 
 623   5                                  send_over_flag=0;//清除一类数据发送完标志位
 624   5                                  send_kind=send_kind&0xef;//清除本次故障显示命令标志位
 625   5                                  temp_data=rx_buffer[0]^rx_buffer[1]^rx_buffer[2]^rx_buffer[3];
 626   5                                  if(temp_data==rx_buffer[4])
 627   5                                   {
 628   6                       fault_data=(rx_buffer[1]<<8)|rx_buffer[2];     
 629   6                       sys_state=rx_buffer[3];
 630   6                                       }
 631   5                                 }
 632   4                                }
 633   3                              break;
 634   3                          }
 635   2                    case RESET_KEY_CMD:
 636   2                          {    
 637   3                              rx_point=0;
 638   3                              if(send_over_kind==RESET_KEY_CMD)
 639   3                                {
 640   4                    send_over_kind=0;
 641   4                                send_over_flag=0;//清除一类数据发送完标志位

⌨️ 快捷键说明

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