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

📄 rs232.lst

📁 一整套电梯控制器源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 338      =1  void message_quit(void);                        //0x3 及m_message_quit 执行程序
 339      =1  void command(uchar *pBuf);			//完整命令解析
 340      =1  void monitor_send(void);
 341      =1  void make_send_buf(void);
 342      =1  uchar __toascii(uchar c);
 343      =1  uchar __tofig(uchar cAscii);
 344      =1  uint GetValidAdd(uchar *pBuf);
 345      =1  void SetParamVal(uchar *pSrcBuf, uchar *pDestBuf, uchar type);
 346      =1  void serial_command_resolve(void);
 347      =1  void serial_make_senddata(void);
 348      =1  
 349      =1  //datainit.c
 350      =1  void data_init(void);
 351      =1  void orgdata_init(void);							//恢复原始数据
 352      =1  void orgdata_init_total(void);
 353      =1  void orgdata_init_input(void);
 354      =1  void orgdata_init_output(void);
 355      =1  void GetUserParamSaveOverFlg();
 356      =1  void SetUserParamSaveOverFlg();
 357      =1  
 358      =1  //param_save_restore.c
 359      =1  void restore_user_param(void);
 360      =1  void save_user_param(void);
 361      =1  void restore_factory_param(void);
 362      =1  uchar erase(uint addr);
 363      =1  uchar writef(uint x,uchar y);
 364      =1  
 365      =1  //can.c
 366      =1  void can_init(uint pointa);          					//can初始化
 367      =1  void can_reset(void);
 368      =1  void can_call_in(uchar a);           //外呼
 369      =1  can_receive_more(uchar a);      //控制器
 370      =1  can_receive_only(uchar a);      //控制器
 371      =1  clear_unknow_code(uchar a);     //清乱码
 372      =1  void can_call_assign();              //外呼分派
 373      =1  can_call_lamp();                //暂定50ms循环点灯,灭灯
 374      =1  
 375      =1  
   5          /*
   6          void timer0 (void) interrupt 1 using 1
   7          {
   8              m_nTestTimer = m_nTestTimer + 5;
   9              if(m_nTestTimer==1000){
  10                  m_nTestTimer=0;
  11                  P1_0=0;
  12              }
  13              mE_InputData.mDianTi[0].nJiaSuDu=m_nTestTimer;
  14              
  15          }
  16          */
  17          //void timer0 (void)interrupt 1 using 2                                          //5ms 定时器
  18          void timer2 (void)interrupt 5 using 2                                          //5ms 定时器
  19          {  
C51 COMPILER V6.12  RS232                                                                  06/05/2005 15:44:46 PAGE 15  

  20   1          uchar a;
  21   1          TF2=0;
  22   1          EA=0;
  23   1      //  TH0=-(0x28B0/256);
  24   1      //  TL0=-(0x28B0/256);
  25   1          //串口通讯处理(串口在主程序及中断中)
  26   1      	serial_comm();
  27   1      
  28   1      	//监视延迟
  29   1      	m_monitor_delay_count++;
  30   1      	if(m_monitor_delay_count>=SCC_MONITOR_DELAYCOUNT)
  31   1      		m_monitor_delay_count=SCC_MONITOR_DELAYCOUNT;
  32   1      //---------------------------------04-5-17
  33   1         
  34   1          can_send_count++;
  35   1          if(can_send_count>5){
  36   2              m_state_20ms=~m_state_20ms;
  37   2              can_send_count=0;
  38   2          }
  39   1          if((m_state_20ms>0x7f)&&(can_send_count==3)){
  40   2              e_out_call_flag=1;                   //发一组外呼数据
  41   2              e_lamp_call_flag=0;                  //发一组外呼灯亮灭
  42   2          }else if((m_state_20ms<0x7f)&&(can_send_count==3)){
  43   2              e_lamp_call_flag=1;                  //发一组外呼灯亮灭
  44   2              e_out_call_flag=0;                   //发一组外呼数据
  45   2          } 
  46   1      
  47   1      
  48   1      
  49   1      //---------群控器连接计时处理04-5-10
  50   1      //以下程序联机1分钟可为群控,脱机1分钟必为单梯
  51   1       
  52   1          for(a=0;a<=3;a++){   
  53   2              //can在线计时
  54   2              if(e_online_time_count[a]<200){    //如1S未接收到群控器的数据,视群控器脱机
  55   3                  e_online_time_count[a]++;
  56   3                  e_1_second_flag[a]=0;
  57   3                  e_online_flag[a]=1;               //群控器在线
  58   3                  e_group_comm_count[a]=0;          //群控器计时=0
  59   3              }else if((e_online_time_count[a]>=200)&&(e_1_second_flag[a]==0)){
  60   3                  e_online_flag[a]=0;               //群控器不在线
  61   3                  e_1_second_flag[a]=1;
  62   3                  e_group_comm_count[a]=1;           //群控器通讯计时 
  63   3                  e_single_comm_count[a]=0;
  64   3              }
  65   2              if(e_group_comm_count[a]>0)           //群控器脱机1分钟,自动改为单梯控制
  66   2                  e_group_comm_count[a]++;             
  67   2              if(e_group_comm_count[a]>=1000){
  68   3                  e_online[a]=0;                    //单梯运行,初值即为单梯
  69   3                  mE_InputData.mDianTi[a].TongXun.bCanChuShiOK=0;		//2004.06.16 added by LHM(改为1分钟通讯)  
  70   3                  e_group_comm_count[a]=1000;
  71   3              }
  72   2              if(e_online_flag[a]==1)               //群控器在线         
  73   2                  e_single_comm_count[a]++;              //群控器脱机1分钟,自动改为单梯控制 
  74   2              if(e_single_comm_count[a]>=1000){     
  75   3                  e_online[a]=1;           //群控运行
  76   3                  mE_InputData.mDianTi[a].TongXun.bCanChuShiOK=1;		//2004.06.16 added by LHM(改为1分钟通讯)   
  77   3                  e_single_comm_count[a]=1000;
  78   3              } 
  79   2              //关门不到位计时
  80   2              if(mE_InputData.mDianTi[a].Men.bGuanMenDaoWei==0){	          //关门不到位
  81   3                  m_Timer.lChaoShiTimer[a] =m_Timer.lChaoShiTimer[a]+5;	  //累加5ms
C51 COMPILER V6.12  RS232                                                                  06/05/2005 15:44:46 PAGE 16  

  82   3              }else{
  83   3                  m_Timer.lChaoShiTimer[a]=0;
  84   3              }
  85   2      			//2004.11.23
  86   2              //淘汰标志计时
  87   2              if(m_MenGuZhang_flg[a]==1)
  88   2              if(mE_InputData.mDianTi[a].Men.bMenGuZhang==0)
  89   2              if((m_MenGuZhang_count[a]--)==0){
  90   3                  mE_InputData.mDianTi[a].Men.bMenGuZhang=1;
  91   3                  m_MenGuZhang_count[a]=COUNT_10s;
  92   3              }
  93   2              if(m_ManZai_flg[a]==1)
  94   2              if(mE_InputData.mDianTi[a].ChengZai.bManZai==0)
  95   2              if((m_ManZai_count[a]--)==0){
  96   3                  mE_InputData.mDianTi[a].ChengZai.bManZai=1;
  97   3                  m_ManZai_count[a]=COUNT_3s;
  98   3              }
  99   2              if(m_ChaoZai_flg[a]==1)
 100   2              if(mE_InputData.mDianTi[a].ChengZai.bChaoZai==0)
 101   2              if((m_ChaoZai_count[a]--)==0){
 102   3                  mE_InputData.mDianTi[a].ChengZai.bChaoZai=1;
 103   3                  m_ChaoZai_count[a]=COUNT_3s;
 104   3              }
 105   2              if(m_JianXiu_flg[a]==1)
 106   2              if(mE_InputData.mDianTi[a].TeBie.bJianXiu==0)
 107   2              if((m_JianXiu_count[a]--)==0){
 108   3                  mE_InputData.mDianTi[a].TeBie.bJianXiu=1;
 109   3                  m_JianXiu_count[a]=COUNT_1s;
 110   3              }
 111   2              if(m_SiJi_flg[a]==1)
 112   2              if(mE_InputData.mDianTi[a].TeBie.bSiJi==0)
 113   2              if((m_SiJi_count[a]--)==0){
 114   3                  mE_InputData.mDianTi[a].TeBie.bSiJi=1;
 115   3                  m_SiJi_count[a]=COUNT_1s;
 116   3              }
 117   2              if(m_ZhiShi_flg[a]==1)
 118   2              if(mE_InputData.mDianTi[a].TeBie.bZhiShi==0)
 119   2              if((m_ZhiShi_count[a]--)==0){
 120   3                  mE_InputData.mDianTi[a].TeBie.bZhiShi=1;
 121   3                  m_ZhiShi_count[a]=COUNT_1s;
 122   3              }
 123   2              if(m_BaoLiu_flg[a]==1)
 124   2              if(mE_InputData.mDianTi[a].TeBie.bBaoLiu==0)
 125   2              if((m_BaoLiu_count[a]--)==0){
 126   3                  mE_InputData.mDianTi[a].TeBie.bBaoLiu=1;
 127   3                  m_BaoLiu_count[a]=COUNT_1s;
 128   3              }
 129   2              if(m_SuoTi_flg[a]==1)
 130   2              if(mE_InputData.mDianTi[a].TeBie.bSuoTi==0)
 131   2              if((m_SuoTi_count[a]--)==0){
 132   3                  mE_InputData.mDianTi[a].TeBie.bSuoTi=1;
 133   3                  m_SuoTi_count[a]=COUNT_1s;
 134   3              }
 135   2              if(m_XiaoFang_flg[a]==1)
 136   2              if(mE_InputData.mDianTi[a].TeBie.bXiaoFang==0)
 137   2              if((m_XiaoFang_count[a]--)==0){
 138   3                  mE_InputData.mDianTi[a].TeBie.bXiaoFang=1;
 139   3                  m_XiaoFang_count[a]=COUNT_1s;
 140   3              }
 141   2              if(m_JiTing_flg[a]==1)
 142   2              if(mE_InputData.mDianTi[a].TeBie.bJiTing==0)
 143   2              if((m_JiTing_count[a]--)==0){
C51 COMPILER V6.12  RS232                                                                  06/05/2005 15:44:46 PAGE 17  

 144   3                  mE_InputData.mDianTi[a].TeBie.bJiTing=1;
 145   3                  m_JiTing_count[a]=COUNT_1s;
 146   3              }
 147   2              if(m_GuZhang_flg[a]==1)
 148   2              if(mE_InputData.mDianTi[a].TeBie.bGuZhang==0)
 149   2              if((m_GuZhang_count[a]--)==0){
 150   3                  mE_InputData.mDianTi[a].TeBie.bGuZhang=1;
 151   3                  m_GuZhang_count[a]=COUNT_1s;
 152   3              }
 153   2              if(m_JingGao_flg[a]==1)
 154   2              if(mE_InputData.mDianTi[a].TeBie.bJingGao==0)
 155   2              if((m_JingGao_count[a]--)==0){
 156   3                  mE_InputData.mDianTi[a].TeBie.bJingGao=1;
 157   3                  m_JingGao_count[a]=COUNT_1s;
 158   3              }
 159   2      
 160   2          }
 161   1          
 162   1          if(m_IsExistWaiInFlg==0)
 163   1          	m_pTimer->lJingTaiTimer = m_pTimer->lJingTaiTimer +5; 
 164   1          else
 165   1          	m_pTimer->lJingTaiTimer = 0; 
 166   1          
 167   1          if(m_read_time==0)
 168   1          if((m_read_time_count--)==0){
 169   2              m_read_time=1;
 170   2              m_read_time_count=COUNT_5s;
 171   2          }
 172   1      
 173   1      	if(m_can0_flg==1)
 174   1      	if(m_can0err_flg==0)
 175   1      	if((m_can0_count--)==0){
 176   2      		m_can0err_flg=1;
 177   2      		m_can0_count=COUNT_ERR;
 178   2      	}
 179   1      	if(m_can1_flg==1)
 180   1      	if(m_can1err_flg==0)
 181   1      	if((m_can1_count--)==0){
 182   2      		m_can1err_flg=1;
 183   2      		m_can1_count=COUNT_ERR;
 184   2      	}
 185   1      	if(m_can2_flg==1)
 186   1      	if(m_can2err_flg==0)
 187   1      	if((m_can2_count--)==0){
 188   2      		m_can2err_flg=1;
 189   2      		m_can2_count=COUNT_ERR;
 190   2      	}
 191   1      	if(m_can3_flg==1)
 192   1      	if(m_can3err_flg==0)
 193   1      	if((m_can3_count--)==0){
 194   2      		m_can3err_flg=1;
 195   2      		m_can3_count=COUNT_ERR;
 196   2      	}
 197   1      //---------------------------------------------------------------------
 198   1      
 199   1      		EA=1;
 200   1      }
 201          
 202          // 串口通信处理
 203          void serial_comm(void)
 204          {
 205   1      
C51 COMPILER V6.12  RS232                                                                  06/05/2005 15:44:46 PAGE 18  

 206   1      	comm_check();						// 上位机通讯检测程序 
 207   1      	monitor_rec();
 208   1      	monitor_send();
 209   1      
 210   1      }
 211          
 212          // 串口命令解析
 213          void serial_command_resolve(void)
 214          {
 215   1      	if(m_comm_enable_flg==1){
 216   2      		if(m_resolve_flg==1)
 217   2      			command(m_scc.m_ReadBuf);
 218   2      	}
 219   1      }
 220          
 221          // 串口发送数据作成
 222          void serial_make_senddata(void)
 223          {
 224   1      	if(m_comm_enable_flg==1){
 225   2      		//作成发送缓冲区
 226   2      		if(m_scc.WriteFlg==0){							//完整命令起始
 227   3      /*			if(m_monitor_type[m_active_idx]!=0){				//有效的类型
 228   3      				make_send_buf();						//作成发送数据
 229   3      			}else{		//遇无效类型,尝试监视下一参数
 230   3      				m_active_idx++;
 231   3      				if(m_active_idx>=MORN_PARAM_NUM){
 232   3      					m_active_idx=0;
 233   3      					return;	
 234   3      				}				
 235   3      			}*/
 236   3      VALIDE_TYPE:if(m_monitor_type[m_active_idx]!=0){				//有效的类型
 237   4      				make_send_buf();						//作成发送数据
 238   4      			}else{		//遇无效类型,尝试监视下一参数
 239   4      				m_active_idx++;

⌨️ 快捷键说明

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