📄 dataproc.lis
字号:
02EF 08 push A
02F0 5A00 mov [__r1],X
02F2 060003 add [__r1],3
02F5 5100 mov A,[__r0]
02F7 08 push A
02F8 5100 mov A,[__r1]
02FA 08 push A
02FB 9D3B xcall _median_filter
02FD 38FD add SP,-3
02FF .dbline 145
02FF ; aver = med_buffer[MEDIAN_FILTER2_LENGHT >> 1];
02FF 5208 mov A,[X+8]
0301 540E mov [X+14],A
0303 5207 mov A,[X+7]
0305 540D mov [X+13],A
0307 .dbline 147
0307 ;
0307 ; if ((instant_pulse > (aver -(aver >> 2))) && (instant_pulse < (aver + (aver >> 2))))
0307 520E mov A,[X+14]
0309 5300 mov [__r1],A
030B 520D mov A,[X+13]
030D 5300 mov [__r0],A
030F 70FB and F,-5
0311 6E00 rrc [__r0]
0313 6E00 rrc [__r1]
0315 70FB and F,-5
0317 6E00 rrc [__r0]
0319 6E00 rrc [__r1]
031B 520E mov A,[X+14]
031D 1200 sub A,[__r1]
031F 5300 mov [__r3],A
0321 520D mov A,[X+13]
0323 1A00 sbb A,[__r0]
0325 5300 mov [__r2],A
0327 5201 mov A,[X+1]
0329 3A00 cmp A,[__r2]
032B B007 jnz X16
032D 5202 mov A,[X+2]
032F 3A00 cmp A,[__r3]
0331 A183 jz L44
0333 X16:
0333 C181 jc L44
0335 X15:
0335 520E mov A,[X+14]
0337 0200 add A,[__r1]
0339 5300 mov [__r1],A
033B 520D mov A,[X+13]
033D 0A00 adc A,[__r0]
033F 5300 mov [__r0],A
0341 5201 mov A,[X+1]
0343 3A00 cmp A,[__r0]
0345 B007 jnz X18
0347 5202 mov A,[X+2]
0349 3A00 cmp A,[__r1]
034B A169 jz L44
034D X18:
034D D167 jnc L44
034F X17:
034F .dbline 148
034F ; state = RUNNING;
034F 550202 mov [_state],2
0352 .dbline 149
0352 ; }
0352 .dbline 150
0352 ; break;
0352 8162 xjmp L44
0354 L57:
0354 .dbline 152
0354 5200 mov A,[X+0]
0356 5300 mov [__r1],A
0358 550000 mov [__r0],0
035B 6500 asl [__r1]
035D 6B00 rlc [__r0]
035F 5A00 mov [__r3],X
0361 060003 add [__r3],3
0364 5100 mov A,[__r1]
0366 0200 add A,[__r3]
0368 5300 mov [__r3],A
036A 5100 mov A,[__r0]
036C 0A00 adc A,[__r2]
036E 060000 add [__r1],<_pulse_buffer
0371 0E0000 adc [__r0],>_pulse_buffer
0374 3E00 mvi A,[__r1]
0376 5300 mov [__r0],A
0378 3E00 mvi A,[__r1]
037A 5300 mov [__r1],A
037C 5100 mov A,[__r0]
037E 3F00 mvi [__r3],A
0380 5100 mov A,[__r1]
0382 3F00 mvi [__r3],A
0384 L58:
0384 .dbline 152
0384 ; case RUNNING:
0384 ; while(i--) med_buffer[i] = pulse_buffer[i];
0384 5200 mov A,[X+0]
0386 5300 mov [__r1],A
0388 550000 mov [__r0],0
038B 1101 sub A,1
038D 5300 mov [__r3],A
038F 5000 mov A,0
0391 1900 sbb A,0
0393 5100 mov A,[__r3]
0395 5400 mov [X+0],A
0397 3C0000 cmp [__r0],0
039A BFB9 jnz L57
039C 3C0000 cmp [__r1],0
039F BFB4 jnz L57
03A1 X19:
03A1 .dbline 153
03A1 ; median_filter(med_buffer, MEDIAN_FILTER2_LENGHT);
03A1 5005 mov A,5
03A3 08 push A
03A4 5A00 mov [__r1],X
03A6 060003 add [__r1],3
03A9 5100 mov A,[__r0]
03AB 08 push A
03AC 5100 mov A,[__r1]
03AE 08 push A
03AF 9C87 xcall _median_filter
03B1 38FD add SP,-3
03B3 .dbline 154
03B3 ; aver = med_buffer[MEDIAN_FILTER2_LENGHT >> 1];
03B3 5208 mov A,[X+8]
03B5 540E mov [X+14],A
03B7 5207 mov A,[X+7]
03B9 540D mov [X+13],A
03BB .dbline 156
03BB ;
03BB ; if ((instant_pulse > (aver -(aver >> 2))) && (instant_pulse < (aver + (aver >> 2)))) pulses++;
03BB 520E mov A,[X+14]
03BD 5300 mov [__r1],A
03BF 520D mov A,[X+13]
03C1 5300 mov [__r0],A
03C3 70FB and F,-5
03C5 6E00 rrc [__r0]
03C7 6E00 rrc [__r1]
03C9 70FB and F,-5
03CB 6E00 rrc [__r0]
03CD 6E00 rrc [__r1]
03CF 520E mov A,[X+14]
03D1 1200 sub A,[__r1]
03D3 5300 mov [__r3],A
03D5 520D mov A,[X+13]
03D7 1A00 sbb A,[__r0]
03D9 5300 mov [__r2],A
03DB 5201 mov A,[X+1]
03DD 3A00 cmp A,[__r2]
03DF B007 jnz X21
03E1 5202 mov A,[X+2]
03E3 3A00 cmp A,[__r3]
03E5 A022 jz L61
03E7 X21:
03E7 C020 jc L61
03E9 X20:
03E9 520E mov A,[X+14]
03EB 0200 add A,[__r1]
03ED 5300 mov [__r1],A
03EF 520D mov A,[X+13]
03F1 0A00 adc A,[__r0]
03F3 5300 mov [__r0],A
03F5 5201 mov A,[X+1]
03F7 3A00 cmp A,[__r0]
03F9 B007 jnz X23
03FB 5202 mov A,[X+2]
03FD 3A00 cmp A,[__r1]
03FF A008 jz L61
0401 X23:
0401 D006 jnc L61
0403 X22:
0403 .dbline 156
0403 7607 inc [L40+1]
0405 0E0600 adc [L40],0
0408 L61:
0408 .dbline 158
0408 ;
0408 ; total_intervals += instant_pulse;
0408 5202 mov A,[X+2]
040A 0405 add [L39+1],A
040C 5201 mov A,[X+1]
040E 0C04 adc [L39],A
0410 .dbline 159
0410 ; if (total_intervals > PULSE_TIME_INTERVAL)
0410 5F0005 mov [__r3],[L39+1]
0413 5F0004 mov [__r2],[L39]
0416 5000 mov A,0
0418 3180 xor A,-128
041A 5300 mov [__rY],A
041C 5000 mov A,0
041E 3180 xor A,-128
0420 5300 mov [__rZ],A
0422 550000 mov [__rX],0
0425 5100 mov A,[__r3]
0427 11B8 sub A,-72
0429 2C00 or [__rX],A
042B 5100 mov A,[__r2]
042D 190B sbb A,11
042F 2C00 or [__rX],A
0431 5000 mov A,0
0433 1900 sbb A,0
0435 2C00 or [__rX],A
0437 5100 mov A,[__rY]
0439 1A00 sbb A,[__rZ]
043B 2C00 or [__rX],A
043D C077 jc L44
043F 5100 mov A,[__rX]
0441 A073 jz L44
0443 X24:
0443 .dbline 160
0443 ; {
0443 .dbline 161
0443 ; state = RESET;
0443 550200 mov [_state],0
0446 .dbline 162
0446 ; return (PULSE_SCALE_FACTOR*pulses*PULSE_TIME_INTERVAL)/(long)total_intervals;
0446 5F0007 mov [__r3],[L40+1]
0449 5F0006 mov [__r2],[L40]
044C 550000 mov [__r1],0
044F 550000 mov [__r0],0
0452 6500 asl [__r3]
0454 6B00 rlc [__r2]
0456 6B00 rlc [__r1]
0458 6B00 rlc [__r0]
045A 5100 mov A,[__r0]
045C 08 push A
045D 5100 mov A,[__r1]
045F 08 push A
0460 5100 mov A,[__r2]
0462 08 push A
0463 5100 mov A,[__r3]
0465 08 push A
0466 5000 mov A,0
0468 08 push A
0469 08 push A
046A 500B mov A,11
046C 08 push A
046D 50B8 mov A,-72
046F 08 push A
0470 7C0000 xcall __mul_32X32_32
0473 38FC add SP,-4
0475 18 pop A
0476 5300 mov [__r3],A
0478 18 pop A
0479 5300 mov [__r2],A
047B 18 pop A
047C 5300 mov [__r1],A
047E 18 pop A
047F 5300 mov [__r0],A
0481 5F0005 mov [__r7],[L39+1]
0484 5F0004 mov [__r6],[L39]
0487 5000 mov A,0
0489 08 push A
048A 08 push A
048B 5100 mov A,[__r6]
048D 08 push A
048E 5100 mov A,[__r7]
0490 08 push A
0491 5100 mov A,[__r0]
0493 08 push A
0494 5100 mov A,[__r1]
0496 08 push A
0497 5100 mov A,[__r2]
0499 08 push A
049A 5100 mov A,[__r3]
049C 08 push A
049D 7C0000 xcall __divmod_32X32_32
04A0 18 pop A
04A1 5300 mov [__r3],A
04A3 18 pop A
04A4 5300 mov [__r2],A
04A6 18 pop A
04A7 18 pop A
04A8 38FC add SP,-4
04AA 5F0000 mov [__r1],[__r3]
04AD 5F0000 mov [__r0],[__r2]
04B0 8049 xjmp L38
04B2 X9:
04B2 .dbline 164
04B2 ; }
04B2 ; break;
04B2 L43:
04B2 .dbline 167
04B2 ;
04B2 ; default:
04B2 ; state = RESET;
04B2 550200 mov [_state],0
04B5 .dbline 168
04B5 ; break;
04B5 L44:
04B5 .dbline 171
04B5 ; }
04B5 ;
04B5 ; pulse_buffer[index++] = instant_pulse;
04B5 5F0003 mov [__r1],[_index]
04B8 550000 mov [__r0],0
04BB 5100 mov A,[__r1]
04BD 0101 add A,1
04BF 5300 mov [__r3],A
04C1 5000 mov A,0
04C3 0900 adc A,0
04C5 5F0300 mov [_index],[__r3]
04C8 6500 asl [__r1]
04CA 6B00 rlc [__r0]
04CC 060000 add [__r1],<_pulse_buffer
04CF 0E0000 adc [__r0],>_pulse_buffer
04D2 5201 mov A,[X+1]
04D4 3F00 mvi [__r1],A
04D6 5202 mov A,[X+2]
04D8 3F00 mvi [__r1],A
04DA .dbline 172
04DA ; if (index == MEDIAN_FILTER2_LENGHT) index = 0;
04DA 3C0305 cmp [_index],5
04DD B016 jnz L42
04DF .dbline 172
04DF 550300 mov [_index],0
04E2 .dbline 173
04E2 ; }
04E2 8011 xjmp L42
04E4 L41:
04E4 .dbline 175
04E4 ; else
04E4 ; if (!CHECKTIMER())
04E4 3C0000 cmp [_timer_pulse],0
04E7 B00C jnz L67
04E9 .dbline 176
04E9 ; {
04E9 .dbline 177
04E9 ; state = RESET;
04E9 550200 mov [_state],0
04EC .dbline 178
04EC ; return PULSE_CALC_ERROR;
04EC 5500FF mov [__r1],-1
04EF 5500FF mov [__r0],-1
04F2 8007 xjmp L38
04F4 L67:
04F4 L42:
04F4 .dbline 181
04F4 ; }
04F4 ;
04F4 ; return PULSE_IN_PROGRESS;
04F4 550000 mov [__r1],0
04F7 550000 mov [__r0],0
04FA .dbline -2
04FA L38:
04FA 38EF add SP,-17
04FC 20 pop X
04FD .dbline 0 ; func end
04FD 7F ret
04FE .dbsym l aver 13 i
04FE .dbsym l med_buffer 3 A[10:5]i
04FE .dbsym l instant_pulse 1 I
04FE .dbsym l i 0 c
04FE .dbend
.area bss(ram, con, rel)
0000 .dbfile ./dataproc.c
0000 _pulse_buffer:
0000 .blkb 26
001A .dbsym s pulse_buffer _pulse_buffer A[26:13]i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -