📄 main.lst
字号:
202 4
203 4 case 0x08:{if(frame[AMR_OS_L] == 0)sync_sendchar(0x7e);}break;
204 4 }
205 3 }break;
206 2
207 2 case 0x02:{ uart_tx_mode(frame);}break;//远程设置控制//发送到远方模块
208 2
209 2 case 0x03:{;}break;
210 2
211 2 }setup_t4(40, timeout_t4);delay_tx = 1;
212 1 }
213 /*=============================================================================*/
214 /* 数据发送到PC */
215 /*=============================================================================*/
216
217 void amr_send_frame(uchar ibuf[])
218 {
219 1 // idata uchar o_frame[26];
220 1 uchar i;
221 1 uchar En;
222 1
223 1 En = ibuf[AMR_OS_L] + 11; //串口返回
224 1
225 1 clr_wdt();
226 1 // preamble
227 1 for (i = 0; i < 5; i++) amr_frame[i] = mcu_pc[i]; //放入0xFE 68
228 1 clr_wdt();
229 1 for (i = 0; i < ibuf[AMR_OS_L]+6; i++)amr_frame[5+i] = ibuf[i]; //从C开始存放
230 1
231 1 amr_frame[En] = 0x16; //多补16h
232 1 uart_sendblock(amr_frame, En+1); //串口送至PC
233 1 clr_wdt();
234 1 }
235 /*=============================================================================* /
236 信息返回
237 /*=============================================================================*/
C51 COMPILER V7.09 MAIN 01/12/2007 09:30:14 PAGE 5
238
239 void return_inf(uchar frame,uchar inf_buf[],uchar dat)
240 {
241 1 uchar con;
242 1 uchar buf[18];
243 1 clr_wdt();
244 1 buf[0] = frame;
245 1 buf[1] = ADSS[0];
246 1 buf[2] = ADSS[1];
247 1 buf[3] = ADSS[2];
248 1 buf[4] = ADSS[3];
249 1 buf[AMR_OS_L] = dat;
250 1 for(con = 0;con < buf[AMR_OS_L];con ++)
251 1 buf[6+con] = inf_buf[con]; //放入状态信息
252 1
253 1 amr_send_frame(buf);//串口返回PC
254 1
255 1 }
256 /*=============================================================================* /
257 串口发到2200C
258 /*=============================================================================*/
259
260 void uart_tx_mode(uchar i_buf[])
261 {
262 1 uchar i,tom;
263 1 uchar no_all = 0;
264 1 uchar o_buf[18];
265 1 tom = i_buf[AMR_OS_L] + 6;
266 1 for (i = 0; i < tom; i++) //C, A,A,A,A,L, DATA
267 1 o_buf[i] = i_buf[i];//放入DATA数据
268 1
269 1 if(tom < 18){ //不够18个数据后补0
270 2 no_all = 18 - tom;
271 2 for (i = 0; i < no_all; i++)
272 2 o_buf[tom+i] = 0x00;
273 2 }
274 1
275 1 if(i_buf[AMR_OS_L] > 18)i_buf[AMR_OS_L] = 18;//超过18个数只认18个数
276 1
277 1
278 1 write_txbuffer(o_buf); //写入2200c
279 1 sync_sendchar(0x7e);
280 1 }
281 /*=============================================================================* /
282 接收数据重组
283 /*=============================================================================*/
284
285 void rx_return(bit y,uchar R_data[])
286 {
287 1 uchar i;
288 1 uchar o_buf[26];
289 1 if(y)
290 1 o_buf[0] = 0x40 + 0x04; //本地上传收到的CRC正确数据 B7B6 =bit-01,B5~B0 = 0x04h
291 1 else
292 1 o_buf[0] = 0x40 + 0x05; //本地上传收到的CRC错误数据 B7B6 =bit-01,B5~B0 = 0x05h
293 1
294 1 o_buf[1] = ADSS[0];
295 1 o_buf[2] = ADSS[1];
296 1 o_buf[3] = ADSS[2];
297 1 o_buf[4] = ADSS[3];
298 1
299 1 o_buf[AMR_OS_L] = 0x12; // L=18
C51 COMPILER V7.09 MAIN 01/12/2007 09:30:14 PAGE 6
300 1
301 1 for (i = 0; i < 18; i++)
302 1 o_buf[6 + i] = R_data[i];
303 1
304 1 amr_send_frame(o_buf);
305 1 }
306
307 /*=============================================================================*/
308 void adss_crc(uchar buf[])
309 {
310 1 if((buf[1] == ADSS[0])&&(buf[2] == ADSS[1])&&(buf[3] == ADSS[2])&&(buf[4] == ADSS[3]))
311 1 adss_ok = 1;
312 1 else adss_ok = 0;
313 1 }
314 /*=============================================================================*/
315 /*=============================================================================* /
316
317 /*=============================================================================*/
318 /*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$<<<<<软件说明>>>>>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/
319 /*=============================================================================* /
320 智能控制演示程序(根据UPLM2200 API协议设定)
321 软件说明:
322
323 1.更新的版本,支持电力线和PC通讯协议,
324 2.可读写FLASH作为地址掉电保存,写时通过串口发地址数据,掉电后地址在片内保存.
325 3.当写FLASH时,RXOK会闪动,之后返回一帧数据.表示已写入FLASH,
326 4.该程序设有看门狗,添加新组件时注意时间差.
327 5.如无接表时,可返回一帧仿真数据< *\ /* >
328 6.该串口的波特率为9600,偶校验, -
329 7.可通过PC或电力线上改变速率寄存器的值,并写入 FLASH ~
330
331 更新项目表:
332 ------------------------------------------------------------------------------------------
333 |更新人 | 模块组件 | 更新时间 | 更新内容
334 --------------------------------------------------------------------------------------
335 | liangfq | 全部 | 2006-02-17 | 程序设计第一版
336 | | | |
337 --------------------------------------------------------------------------------------
338 | liangfq | | |
339 | | | |
340 --------------------------------------------------------------------------------------
341 | liangfq | | |
342 | | | |
343 --------------------------------------------------------------------------------------
344 | liangfq | | |
345 | | | |
346 --------------------------------------------------------------------------------------
347 | liangfq | | |
348 | | | |
349 --------------------------------------------------------------------------------------
350 | liangfq | | |
351 | | | |
352 --------------------------------------------------------------------------------------
353 | liangfq | | |
354 | | | |
355 --------------------------------------------------------------------------------------
356 | liangfq | | |
357 | | | |
358 --------------------------------------------------------------------------------------
359 | liangfq | | |
360 | | | |
361 --------------------------------------------------------------------------------------
C51 COMPILER V7.09 MAIN 01/12/2007 09:30:14 PAGE 7
362
363 !!!!!!重复特别注意:写模块的地址必须从串口写入才有效!!!!!
364
365 !!!!!!重复特别注意:写模块的地址必须从串口写入才有效!!!!!
366 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
367 !!!!!!重复特别注意:写模块的地址必须从串口写入才有效!!!!!
368 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
369 !!!!!!重复特别注意:写模块的地址必须从串口写入才有效!!!!!
370 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
371 !!!!!!重复特别注意:写模块的地址必须从串口写入才有效!!!!!
372 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
373
374 /*$$$$$$$$$$$$$$$$$$$$$$$$$$$$<<<<<软件说明>>>>>$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 978 ----
CONSTANT SIZE = 28 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 19 86
IDATA SIZE = ---- ----
BIT SIZE = 3 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -