📄 rs232.lst
字号:
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 + -