📄 sigproc.lis
字号:
.module sigproc.c
.area data(ram, con, rel)
0000 _adc_max_prev:
0000 .blkb 2
.area idata
0000 0000 .word 0
.area data(ram, con, rel)
0002 .dbfile ./sigproc.c
0002 .dbsym s adc_max_prev _adc_max_prev I
0002 _peak_delta:
0002 .blkb 2
.area idata
0002 0000 .word 0
.area data(ram, con, rel)
0004 .dbfile ./sigproc.c
0004 .dbsym s peak_delta _peak_delta i
.area lit(rom, con, rel)
0000 _gain_table:
0000 0102 .byte 1,2
0002 0304 .byte 3,4
0004 0508 .byte 5,8
0006 0C10 .byte 12,16
0008 .dbsym s gain_table _gain_table A[8:8]c
.area data(ram, con, rel)
0004 .dbfile ./sigproc.c
0004 _gain_level:
0004 .blkb 1
.area idata
0004 00 .byte 0
.area data(ram, con, rel)
0005 .dbfile ./sigproc.c
0005 .dbsym s gain_level _gain_level c
0005 L3:
0005 .blkb 2
.area idata
0005 0000 .word 0
.area data(ram, con, rel)
0007 .dbfile ./sigproc.c
0007 L4:
0007 .blkb 2
.area idata
0007 0000 .word 0
.area data(ram, con, rel)
0009 .dbfile ./sigproc.c
0009 L5:
0009 .blkb 1
.area idata
0009 00 .byte 0
.area data(ram, con, rel)
000A .dbfile ./sigproc.c
.area bss(ram, con, rel)
0000 .dbfile ./sigproc.c
0000 L6:
0000 .blkb 2
0002 L7:
0002 .blkb 2
.area data(ram, con, rel)
000A .dbfile ./sigproc.c
000A L8:
000A .blkb 1
.area idata
000A 00 .byte 0
.area data(ram, con, rel)
000B .dbfile ./sigproc.c
000B L9:
000B .blkb 2
.area idata
000B 012C .word 300
.area data(ram, con, rel)
000D .dbfile ./sigproc.c
000D L10:
000D .blkb 2
.area idata
000D 0000 .word 0
.area data(ram, con, rel)
000F .dbfile ./sigproc.c
000F L11:
000F .blkb 2
.area idata
000F 0000 .word 0
.area data(ram, con, rel)
0011 .dbfile ./sigproc.c
0011 L12:
0011 .blkb 2
.area idata
0011 0000 .word 0
.area data(ram, con, rel)
0013 .dbfile ./sigproc.c
0013 L13:
0013 .blkb 2
.area idata
0013 0000 .word 0
.area data(ram, con, rel)
0015 .dbfile ./sigproc.c
.area bss(ram, con, rel)
0004 .dbfile ./sigproc.c
0004 L14:
0004 .blkb 2
.area text(rom, con, rel)
0000 .dbfile ./sigproc.c
0000 .dbfunc e adc_sig_proc _adc_sig_proc fV
0000 .dbsym s peak_ind_old L14 i
0000 .dbsym s peak_ind L13 i
0000 .dbsym s int_cnt L12 i
0000 .dbsym s peak_max L11 I
0000 .dbsym s adc_max L10 I
0000 .dbsym s th L9 I
0000 .dbsym s ran_cnt L8 c
0000 .dbsym s temp L7 I
0000 .dbsym s hpf_data L6 I
0000 .dbsym s loop L5 c
0000 .dbsym s lpf2 L4 I
0000 .dbsym s lpf1 L3 I
0000 _adc_sig_proc::
0000 .dbline -1
0000 08 push A
0001 5100 mov A,[__r0]
0003 08 push A
0004 5100 mov A,[__r1]
0006 08 push A
0007 5100 mov A,[__r2]
0009 08 push A
000A 5100 mov A,[__r3]
000C 08 push A
000D 5100 mov A,[__rX]
000F 08 push A
0010 5100 mov A,[__rY]
0012 08 push A
0013 5100 mov A,[__rZ]
0015 08 push A
0016 10 push X
0017 4F mov X,SP
0018 3802 add SP,2
001A .dbline 38
001A ;
001A ; #include "PSoCApi.h"
001A ; #include <m8c.h>
001A ; #include "globdefs.h"
001A ; #include "utils.h"
001A ;
001A ; #define TH_DELTA 200
001A ;
001A ; #define LPF_SHIFT 2
001A ;
001A ; extern INT ADC_iResult;
001A ;
001A ; #define HPF_BUFFER_LEN 7
001A ; static INT hpf_buffer[HPF_BUFFER_LEN];
001A ;
001A ; static INT adc_max_prev = 0;
001A ; static PULSE_INTERVAL_TYPE peak_delta = 0;
001A ;
001A ; #define RANGE_POINTS 200
001A ; #define TH_MIN 300
001A ; #define TH_MAX 1500
001A ; #define TH_FILTER_SHIFT 1
001A ;
001A ; #define AGC_DOWN_THESHOLD 10000
001A ; #define AGC_UP_THESHOLD 4000
001A ; #define GAIN_LEVELS 8
001A ; #define AGC_GAIN_HIGH 6
001A ; #define AGC_GAIN_LOW 0
001A ; static const BYTE gain_table[GAIN_LEVELS] = {1, 2, 3, 4, 5, 8, 12, 16};
001A ; static BYTE gain_level = 0;
001A ;
001A ; #if DEBUG
001A ; static INT debug = 0;
001A ; #endif
001A ;
001A ; #pragma interrupt_handler adc_sig_proc;
001A ; void adc_sig_proc(void)
001A ; {
001A .dbline 51
001A ; static INT lpf1 = 0, lpf2 = 0;
001A ; static BYTE loop = 0;
001A ; static INT hpf_data;
001A ; static INT temp;
001A ;
001A ; static BYTE ran_cnt = 0;
001A ; static INT th = TH_MIN, adc_max = 0;
001A ;
001A ; static INT peak_max = 0;
001A ; static PULSE_INTERVAL_TYPE int_cnt = 0, peak_ind = 0, peak_ind_old;
001A ;
001A ;
001A ; lpf1 -= (lpf1 >> LPF_SHIFT) - (ADC_iResult - ADC_SHIFT);
001A 5F0006 mov [__r1],[L3+1]
001D 5F0005 mov [__r0],[L3]
0020 6800 asr [__r0]
0022 6E00 rrc [__r1]
0024 6800 asr [__r0]
0026 6E00 rrc [__r1]
0028 5101 mov A,[_ADC_iResult+1]
002A 11C4 sub A,-60
002C 5300 mov [__r3],A
002E 5100 mov A,[_ADC_iResult]
0030 1909 sbb A,9
0032 5300 mov [__r2],A
0034 5100 mov A,[__r3]
0036 1400 sub [__r1],A
0038 5100 mov A,[__r2]
003A 1C00 sbb [__r0],A
003C 5100 mov A,[__r1]
003E 1406 sub [L3+1],A
0040 5100 mov A,[__r0]
0042 1C05 sbb [L3],A
0044 .dbline 52
0044 ; lpf2 += (lpf1 >> 1) - (lpf2 >> LPF_SHIFT);
0044 5F0006 mov [__r1],[L3+1]
0047 5F0005 mov [__r0],[L3]
004A 6800 asr [__r0]
004C 6E00 rrc [__r1]
004E 5F0008 mov [__r3],[L4+1]
0051 5F0007 mov [__r2],[L4]
0054 6800 asr [__r2]
0056 6E00 rrc [__r3]
0058 6800 asr [__r2]
005A 6E00 rrc [__r3]
005C 5100 mov A,[__r3]
005E 1400 sub [__r1],A
0060 5100 mov A,[__r2]
0062 1C00 sbb [__r0],A
0064 5100 mov A,[__r1]
0066 0408 add [L4+1],A
0068 5100 mov A,[__r0]
006A 0C07 adc [L4],A
006C .dbline 54
006C ;
006C ; M8C_EnableGInt;
006C 7101 or F, 01h
006E
006E .dbline 56
006E ;
006E ; if ((lpf2 > AGC_DOWN_THESHOLD) && (gain_level > AGC_GAIN_LOW))
006E 5107 mov A,[L4]
0070 3180 xor A,-128
0072 5300 mov [__rY],A
0074 5027 mov A,39
0076 3180 xor A,-128
0078 5300 mov [__rZ],A
007A 550000 mov [__rX],0
007D 5108 mov A,[L4+1]
007F 1110 sub A,16
0081 2C00 or [__rX],A
0083 5100 mov A,[__rY]
0085 1A00 sbb A,[__rZ]
0087 2C00 or [__rX],A
0089 C036 jc L15
008B 5100 mov A,[__rX]
008D A032 jz L15
008F X0:
008F 3C0400 cmp [_gain_level],0
0092 C02D jc L15
0094 A02B jz L15
0096 X1:
0096 .dbline 57
0096 ; In_BPF_FILT_C1_REG = (In_BPF_FILT_C1_REG & 0xE0) | gain_table[--gain_level];
0096 5104 mov A,[_gain_level]
0098 1101 sub A,1
009A 5300 mov [__r0],A
009C 5304 mov [_gain_level],A
009E 5D80 mov A,REG[-128]
00A0 5300 mov [__r2],A
00A2 2600E0 and [__r2],-32
00A5 5F0000 mov [__r1],[__r0]
00A8 550000 mov [__r0],0
00AB 060000 add [__r1],<_gain_table
00AE 0E0000 adc [__r0],>_gain_table
00B1 5100 mov A,[__r0]
00B3 10 push X
00B4 5800 mov X,[__r1]
00B6 28 romx
00B7 20 pop X
00B8 5300 mov [__r0],A
00BA 5100 mov A,[__r2]
00BC 2A00 or A,[__r0]
00BE 6080 mov REG[-128],A
00C0 L15:
00C0 .dbline 59
00C0 ;
00C0 ; if ((lpf2 < AGC_UP_THESHOLD) && (gain_level < AGC_GAIN_HIGH))
00C0 5107 mov A,[L4]
00C2 3180 xor A,-128
00C4 5300 mov [__rY],A
00C6 500F mov A,15
00C8 3180 xor A,-128
00CA 5300 mov [__rZ],A
00CC 550000 mov [__rX],0
00CF 5108 mov A,[L4+1]
00D1 11A0 sub A,-96
00D3 2C00 or [__rX],A
00D5 5100 mov A,[__rY]
00D7 1A00 sbb A,[__rZ]
00D9 2C00 or [__rX],A
00DB D034 jnc L17
00DD 5100 mov A,[__rX]
00DF A030 jz L17
00E1 X2:
00E1 3C0406 cmp [_gain_level],6
00E4 D02B jnc L17
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -