📄 4pled-a3.lst
字号:
260 00074 0803 BC STATUS,C
261 00075 06DA RLC DISP_BIT
262 00076 0E03 JBS STATUS,C
263 00077 0012 RET
264 00078 1810 MOV A,@0x10
265 00079 005A MOV DISP_BIT,A
266 0007A 0012 RET
267 ;*********************************************************************
268 0007B RXD_IN:
269 0007B 0011 disi
270 0007C 00EA CLR D_COUNT
271 0007D 00EB CLR L_COUNT
272 0007E 00EC CLR H_COUNT
273 0007F RXD_MARK:
274 0007F 0E06 JBS RB,RXD
275 00080 147F JMP RXD_MARK
276 ; JMP RXD_ERR ;起始位超时出错返回
277 00081 RXD_M_L:
278 00081 0E06 JBS RB,RXD
279 00082 1486 JMP RXD_M_M
280 00083 05EB DJZ L_COUNT
281 00084 1481 JMP RXD_M_L
282 00085 14D4 JMP RXD_ERR ;起始位超时出错返回
283 00086 RXD_M_M:
284 00086 00EA CLR D_COUNT
285 00087 04AB COMA L_COUNT ;计算窄脉冲宽度
286 00088 1F01 ADD A,@1
287 00089 006B MOV L_COUNT,A
288 0008A RXD_M_M1:
289 0008A 0E06 JBS RB,RXD
290 0008B 148A JMP RXD_M_M1
291 ; JMP RXD_ERR ;起始位超时出错返回
292 0008C RXD_M_H:
293 0008C 0E06 JBS RB,RXD
294 0008D 1491 JMP RXD_COMD
295 0008E 05EC DJZ H_COUNT
296 0008F 148C JMP RXD_M_H
297 00090 14D4 JMP RXD_ERR ;起始位超时出错返回
298 00091 RXD_COMD:
299 00091 04AC COMA H_COUNT ;计算宽脉冲宽度
300 00092 1F01 ADD A,@1
301 00093 006C MOV H_COUNT,A
302 00094 0803 BC STATUS,C
303 00095 062C RRCA H_COUNT ;宽脉冲宽度除二
304 00096 012B SUB A,L_COUNT ;比较两个脉冲
305 00097 0C03 JBC STATUS,C
306 00098 149C JMP RXD_COMD1 ;误差=正
307 00099 006A MOV D_COUNT,A ;误差=负,取绝对值
308 0009A 04AA COMA D_COUNT
309 0009B 1F01 ADD A,@1
310 0009C RXD_COMD1:
311 0009C 1D03 SUB A,@3
312 0009D 0E03 JBS STATUS,C
313 0009E 14D4 JMP RXD_ERR ;识别码出错返回
314 0009F 00EC CLR H_COUNT
315 000A0 00EB CLR L_COUNT
316 000A1 1810 MOV A,@16 ;8
317 000A2 006A MOV D_COUNT,A ;20US+16+104=132US
318 000A3 PPPP:
319 000A3 0E46 JBS RB,RCP
320 000A4 14A3 JMP PPPP
321 000A5 0803 BC STATUS,C
322 000A6 06EB RLC L_COUNT
323 000A7 06EC RLC H_COUNT
324 000A8 0C06 JBC RB,RXD
325 000A9 0A2B BS L_COUNT,0
326 000AA 10DB CALL T52US
327 000AB 05EA DJZ D_COUNT
328 000AC 14A3 JMP PPPP
329 000AD 10DB CALL T52US
330
331 000AE RXD_LOP:
332 000AE 0E06 JBS RB,RXD
333 000AF 14AE JMP RXD_LOP ;等待停止位结束
334 000B0 0000 NOP
335 000B1 0000 NOP
336 000B2 0010 ENI
337 000B3 180F MOV A,@15
338 000B4 006A MOV D_COUNT,A
339 000B5 042B MOV A,L_COUNT
340 000B6 0060 MOV DP_SA,A ;暂存数据
341 000B7 042C MOV A,H_COUNT
342 000B8 0061 MOV DP_SAH,A
343 000B9 00DD CLR TEMP1
344 000BA RXD_RED1:
345 000BA 0803 BC STATUS,C
346 000BB 066C RRC H_COUNT
347 000BC 066B RRC L_COUNT
348 000BD 0C03 JBC STATUS,C
349 000BE 055D INC TEMP1
350 000BF 05EA DJZ D_COUNT
351 000C0 14BA JMP RXD_RED1
352
353 000C1 00EC CLR H_COUNT
354 000C2 041D MOV A,TEMP1
355 000C3 1A01 AND A,@1
356 000C4 032B XOR A,L_COUNT
357 000C5 0E83 JBS STATUS,Z
358 000C6 14D4 JMP RXD_ERR
359
360 000C7 0420 MOV A,DP_SA
361 000C8 10E1 CALL DIV_10
362 000C9 0060 MOV DP_SA,A
363
364 000CA 1830 MOV A,@DA_RA
365 000CB 0044 MOV FSR,A
366 000CC 0721 SWAPA DP_SAH
367 000CD 1A07 AND A,@7
368 000CE 03C4 ADD FSR,A
369 000CF 0420 MOV A,DP_SA
370 000D0 0040 MOV F0,A
371
372 ; MOV A,DP_SA
373 ; SUB A,RXD_SA
374 ; MOV A,DP_SA
375 ; JBC STATUS,C
376 ; MOV A,RXD_SA
377 ; MOV RXD_SA,A
378 000D1 0A2D BS MARK,RXDM
379 000D2 0010 eni
380 000D3 0012 RET
381 000D4 RXD_ERR:
382 000D4 00EA CLR D_COUNT ;出错
383 000D5 RXD_ERR_PASS:
384 000D5 0E06 JBS RB,RXD ;等待高电平退出
385 000D6 14D4 JMP RXD_ERR
386 000D7 05EA DJZ D_COUNT ;高电平持续5X256=1.31MS
387 000D8 14D5 JMP RXD_ERR_PASS
388 ; mov a,rxd_sa
389 ; mov dp_sa,a
390 000D9 0010 eni
391 000DA 0012 RET
392
393 ;*********************************************************************
394 000DB T52US:
395 000DB 1815 MOV A,@21 ;15
396 000DC 005E MOV TEMP2,A
397 000DD T52US_LOOP:
398 000DD 05DE DJZ TEMP2
399 000DE 14DD JMP T52US_LOOP
400 ; nop
401 000DF 0000 nop
402 000E0 0012 RET
403
404 ;****************************************************************
405 000E1 DIV_10:
406 000E1 005E MOV TEMP2,A
407 000E2 00DD CLR TEMP1
408 000E3 DIV_LOOP:
409 000E3 180A MOV A,@10
410 000E4 011E SUB A,TEMP2
411 000E5 0E03 JBS STATUS,C
412 000E6 14EA JMP DIV_END
413 000E7 005E MOV TEMP2,A
414 000E8 055D INC TEMP1
415
416 000E9 14E3 JMP DIV_LOOP
417 000EA DIV_END:
418 000EA 041D MOV A,TEMP1
419 000EB 0012 RET
420 /*********************************************************************
421 T52US:
422 MOV A,@15
423 MOV H_COUNT,A
424 T52US_LOOP:
425 DJZ H_COUNT
426 JMP T52US_LOOP
427 RET
428
429 ;*********************************************************************/
430 000EC ERR_PASS:
431 000EC 0000 NOP
432 000ED MAIN:
433 000ED 0403 MOV A,STATUS
434 000EE 1A18 AND A,@0x18
435 000EF 1B18 XOR A,@0x18
436 000F0 0C83 JBC STATUS,Z
437 000F1 00E7 CLR ATTTT
438 000F2 0080 CLRA
439 000F3 0005 IOW RA
440 000F4 00C5 CLR RA
441 000F5 1807 MOV A,@7 ;P6.0=IN
442 000F6 0006 IOW RB
443 000F7 0046 MOV RB,A
444 000F8 18F8 MOV A,@0xF8
445 000F9 000D IOW IOCD
446 000FA 1880 MOV A,@0x80 ;使能WDT与设置P6.0=EXINE
447 000FB 000E IOW IOCE
448 000FC 18B2 MOV A,@T10MSD ;10MS=128*78*1US=9984US
449 000FD 0041 MOV TCC,A ;256-78=178 B2H 定时初值
450 000FE 1844 MOV A,@0x44 ;T=1/32 01000100
451 000FF 0002 CONTW ;T=1/4*4*32*78=2496uS=2.496mS
452 00100 1801 MOV A,@0x01 ;OPEN EXINT & TXINT
453 00101 000F IOW IOCF
454 00102 1819 MOV A,@0x19 ;设接收初态76
455 00103 005C MOV RXD_SA,A
456 00104 00D0 CLR COUNT
457 00105 00ED CLR MARK
458 00106 00DB CLR T100MST
459 00107 180A MOV A,@0x0A ;初始化显示数据图形,"-.-"
460 00108 0051 MOV DATA_A,A
461 00109 0052 MOV DATA_B,A
462 0010A 1880 MOV A,@0x80
463 0010B 0055 MOV DOUT_A,A
464 0010C 0056 MOV DOUT_B,A
465 0010D 00D3 CLR DATA_C ;关闭段码显示图形
466 0010E 00D4 CLR DATA_D
467 ; CLR DOUT_C
468 ; CLR DOUT_D
469 ; CLR MOVE_DOT
470 0010F 1810 MOV A,@0x10
471 00110 005A MOV DISP_BIT,A
472 00111 0AC6 BS RB,SP ;初始化完成后"B"一声
473 00112 0000 NOP
474 00113 0000 NOP
475 00114 0004 WDTC
476 00115 0010 ENI
477 00116 00CF CLR RF
478 00117 MLOOP:
479 00117 0010 ENI
480 00118 0004 WDTC
481 00119 0E06 JBS RB,RXD
482 0011A 107B CALL RXD_IN
483 0011B 0C2D JBC MARK,RXDM
484 0011C 1150 CALL DT_AMP_SA ;调用数据处理
485 0011D 0F6D JBS MARK,PX_OUT ;100MS DISP OUT T10MS
486 0011E 1517 JMP MLOOP
487 0011F 0DED JBC MARK,FLASH
488 00120 112E CALL T_FLASH_POR
489 00121 1139 CALL DATA_DISP
490 00122 MSHOW:
491 00122 0D27 JBC ATTTT,ALARM
492 00123 152A JMP ALARM_DISI
493 00124 0DAD JBC MARK,ALA_EN
494 00125 1528 JMP MSHOW1
495 00126 08C6 BC RB,SP ;关报警输出
496 00127 00E2 CLR ALARM_TIME ;初始化报警时间
497 00128 MSHOW1:
498 00128 0DAD JBC MARK,ALA_EN
499 00129 11C9 CALL ALARM_PRO ;调用报警子程序
500 0012A ALARM_DISI:
501 0012A 0D27 JBC ATTTT,ALARM
502 0012B 08C6 BC RB,SP
503 0012C 096D BC MARK,PX_OUT
504 0012D 1517 JMP MLOOP
505 ;*********************************************************************
506 ;显示输出子程序
507 ;*********************************************************************
508 0012E T_FLASH_POR:
509 0012E 0563 INC T_FLASH
510 0012F 0423 MOV A,T_FLASH
511 00130 1D02 SUB A,@2
512 00131 0C03 JBC STATUS,C
513 00132 0012 RET
514 00133 0EED JBS MARK,EN_OUT
515 00134 1537 JMP TO_T_ON
516 00135 08ED BC MARK,EN_OUT
517 00136 0012 RET
518 00137 TO_T_ON:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -