📄 dataproc.lis
字号:
.module dataproc.c
.area data(ram, con, rel)
0000 _timer_pulse:
0000 .blkb 1
.area idata
0000 BE .byte 190
.area data(ram, con, rel)
0001 .dbfile ./dataproc.c
0001 .dbsym s timer_pulse _timer_pulse X
0001 _timer_update:
0001 .blkb 1
.area idata
0001 10 .byte 16
.area data(ram, con, rel)
0002 .dbfile ./dataproc.c
0002 .dbsym s timer_update _timer_update X
0002 _state:
0002 .blkb 1
.area idata
0002 00 .byte 0
.area data(ram, con, rel)
0003 .dbfile ./dataproc.c
0003 .dbsym s state _state c
0003 _index:
0003 .blkb 1
.area idata
0003 00 .byte 0
.area data(ram, con, rel)
0004 .dbfile ./dataproc.c
0004 .dbsym s index _index c
.area text(rom, con, rel)
0000 .dbfile ./dataproc.c
0000 .dbfunc e SleepTimer_handler _SleepTimer_handler fV
0000 _SleepTimer_handler::
0000 .dbline -1
0000 .dbline 41
0000 ; #include "PSoCApi.h"
0000 ; #include <m8c.h>
0000 ; #include "globdefs.h"
0000 ; #include "utils.h"
0000 ; #include "sigproc.h"
0000 ;
0000 ;
0000 ;
0000 ;
0000 ; #define TIMER_PULSE_INIT_VALUE 190
0000 ; static volatile BYTE timer_pulse = TIMER_PULSE_INIT_VALUE;
0000 ;
0000 ; #define INITTIMER() {timer_pulse = TIMER_PULSE_INIT_VALUE;}
0000 ; #define CHECKTIMER()(timer_pulse)
0000 ;
0000 ; #define TIMER_UPDATE_INIT_VALUE 16
0000 ; static volatile BYTE timer_update = TIMER_UPDATE_INIT_VALUE;
0000 ;
0000 ;
0000 ; static BYTE state = RESET;
0000 ; static BYTE index = 0;
0000 ;
0000 ; #define MEDIAN_FILTER1_LENGHT 13
0000 ; #define MEDIAN1 (MEDIAN_FILTER1_LENGHT >> 1)
0000 ;
0000 ; #define MEDIAN_FILTER2_LENGHT 5
0000 ; #define MEDIAN2 ((MEDIAN_FILTER2_LENGHT >> 1))
0000 ;
0000 ; #if (MEDIAN_FILTER1_LENGHT > MEDIAN_FILTER2_LENGHT)
0000 ; static PULSE_INTERVAL_TYPE pulse_buffer[MEDIAN_FILTER1_LENGHT];
0000 ; #else
0000 ; static PULSE_INTERVAL_TYPE pulse_buffer[MEDIAN_FILTER2_LENGHT];
0000 ; #endif
0000 ;
0000 ; #if ((MEDIAN_FILTER1_LENGHT < 3) || (MEDIAN_FILTER2_LENGHT < 3))
0000 ; #error "please set correct lenght for filters"
0000 ; #endif
0000 ;
0000 ; #pragma interrupt_handler SleepTimer_handler;
0000 ; void SleepTimer_handler(void)
0000 ; {
0000 .dbline 42
0000 3C00BE cmp [_timer_pulse],-66
0003 B006 jnz L3
0005 .dbline 42
0005 430408 or REG[4],8
0008 8004 xjmp L4
000A L3:
000A .dbline 42
000A ; if (TIMER_PULSE_INIT_VALUE == timer_pulse) SETBIT(LED_PORT, LED_BIT); else CLEARBIT(LED_PORT, LED_BIT);
000A 4104F7 and REG[4],-9
000D L4:
000D .dbline 43
000D ; if (timer_pulse) timer_pulse--;
000D 3C0000 cmp [_timer_pulse],0
0010 A003 jz L5
0012 .dbline 43
0012 7A00 dec [_timer_pulse]
0014 L5:
0014 .dbline 45
0014 3C0100 cmp [_timer_update],0
0017 A003 jz L7
0019 .dbline 45
0019 7A01 dec [_timer_update]
001B L7:
001B .dbline -2
001B .dbline 46
001B ;
001B ; if (timer_update) timer_update--;
001B ; }
001B L2:
001B .dbline 0 ; func end
001B 7E reti
001C .dbend
001C .dbfunc e Check_Update_Timeout _Check_Update_Timeout fc
001C ; temp -> X+0
001C _Check_Update_Timeout::
001C .dbline -1
001C 10 push X
001D 4F mov X,SP
001E 3801 add SP,1
0020 .dbline 49
0020 ;
0020 ; BYTE Check_Update_Timeout(void)
0020 ; {
0020 .dbline 50
0020 ; BYTE temp = 0;
0020 560000 mov [X+0],0
0023 .dbline 52
0023 ;
0023 ; M8C_DisableGInt;
0023 70FE and F, FEh
0025
0025 .dbline 53
0025 ; if (!timer_update)
0025 3C0100 cmp [_timer_update],0
0028 B007 jnz L10
002A .dbline 54
002A ; {
002A .dbline 55
002A ; timer_update = TIMER_UPDATE_INIT_VALUE;
002A 550110 mov [_timer_update],16
002D .dbline 56
002D ; temp = TRUE;
002D 560001 mov [X+0],1
0030 .dbline 57
0030 ; }
0030 L10:
0030 .dbline 58
0030 ; M8C_EnableGInt;
0030 7101 or F, 01h
0032
0032 .dbline 60
0032 ;
0032 ; return temp;
0032 5200 mov A,[X+0]
0034 .dbline -2
0034 L9:
0034 38FF add SP,-1
0036 20 pop X
0037 .dbline 0 ; func end
0037 7F ret
0038 .dbsym l temp 0 c
0038 .dbend
0038 .dbfunc e median_filter _median_filter fV
0038 ; changed -> X+3
0038 ; temp -> X+1
0038 ; i -> X+0
0038 ; len -> X-6
0038 ; buffer -> X-5
0038 _median_filter::
0038 .dbline -1
0038 10 push X
0039 4F mov X,SP
003A 3804 add SP,4
003C .dbline 64
003C ; }
003C ;
003C ; void median_filter(PULSE_INTERVAL_TYPE *buffer, BYTE len)
003C ; {
003C L13:
003C .dbline 68
003C ; PULSE_INTERVAL_TYPE temp;
003C ; BYTE i, changed;
003C ;
003C ; do {
003C .dbline 69
003C ; changed = 0;
003C 560300 mov [X+3],0
003F .dbline 70
003F ; for (i = 0; i < (len-1); i++)
003F 560000 mov [X+0],0
0042 80C8 xjmp L19
0044 L16:
0044 .dbline 71
0044 ; if (buffer[i] > buffer[i+1])
0044 5200 mov A,[X+0]
0046 5300 mov [__r1],A
0048 550000 mov [__r0],0
004B 6500 asl [__r1]
004D 6B00 rlc [__r0]
004F 52FC mov A,[X-4]
0051 0400 add [__r1],A
0053 52FB mov A,[X-5]
0055 0C00 adc [__r0],A
0057 3E00 mvi A,[__r1]
0059 5300 mov [__r0],A
005B 3E00 mvi A,[__r1]
005D 5300 mov [__r1],A
005F 5200 mov A,[X+0]
0061 5300 mov [__r3],A
0063 550000 mov [__r2],0
0066 060001 add [__r3],1
0069 0E0000 adc [__r2],0
006C 6500 asl [__r3]
006E 6B00 rlc [__r2]
0070 52FC mov A,[X-4]
0072 0400 add [__r3],A
0074 52FB mov A,[X-5]
0076 0C00 adc [__r2],A
0078 3E00 mvi A,[__r3]
007A 5300 mov [__r2],A
007C 3E00 mvi A,[__r3]
007E 5300 mov [__r3],A
0080 5100 mov A,[__r0]
0082 3A00 cmp A,[__r2]
0084 B007 jnz X1
0086 5100 mov A,[__r1]
0088 3A00 cmp A,[__r3]
008A A07E jz L20
008C X1:
008C C07C jc L20
008E X0:
008E .dbline 72
008E ; {
008E .dbline 73
008E ; changed = 1;
008E 560301 mov [X+3],1
0091 .dbline 75
0091 ;
0091 ; temp = buffer[i];
0091 5200 mov A,[X+0]
0093 5300 mov [__r1],A
0095 550000 mov [__r0],0
0098 6500 asl [__r1]
009A 6B00 rlc [__r0]
009C 52FC mov A,[X-4]
009E 0400 add [__r1],A
00A0 52FB mov A,[X-5]
00A2 0C00 adc [__r0],A
00A4 3E00 mvi A,[__r1]
00A6 5401 mov [X+1],A
00A8 3E00 mvi A,[__r1]
00AA 5402 mov [X+2],A
00AC .dbline 76
00AC ; buffer[i] = buffer[i+1];
00AC 5200 mov A,[X+0]
00AE 5300 mov [__r1],A
00B0 550000 mov [__r0],0
00B3 6500 asl [__r1]
00B5 6B00 rlc [__r0]
00B7 52FC mov A,[X-4]
00B9 0400 add [__r1],A
00BB 52FB mov A,[X-5]
00BD 0C00 adc [__r0],A
00BF 5200 mov A,[X+0]
00C1 5300 mov [__r3],A
00C3 550000 mov [__r2],0
00C6 060001 add [__r3],1
00C9 0E0000 adc [__r2],0
00CC 6500 asl [__r3]
00CE 6B00 rlc [__r2]
00D0 52FC mov A,[X-4]
00D2 0400 add [__r3],A
00D4 52FB mov A,[X-5]
00D6 0C00 adc [__r2],A
00D8 3E00 mvi A,[__r3]
00DA 5300 mov [__r2],A
00DC 3E00 mvi A,[__r3]
00DE 5300 mov [__r3],A
00E0 5100 mov A,[__r2]
00E2 3F00 mvi [__r1],A
00E4 5100 mov A,[__r3]
00E6 3F00 mvi [__r1],A
00E8 .dbline 77
00E8 ; buffer[i+1] = temp;
00E8 5200 mov A,[X+0]
00EA 5300 mov [__r1],A
00EC 550000 mov [__r0],0
00EF 060001 add [__r1],1
00F2 0E0000 adc [__r0],0
00F5 6500 asl [__r1]
00F7 6B00 rlc [__r0]
00F9 52FC mov A,[X-4]
00FB 0400 add [__r1],A
00FD 52FB mov A,[X-5]
00FF 0C00 adc [__r0],A
0101 5201 mov A,[X+1]
0103 3F00 mvi [__r1],A
0105 5202 mov A,[X+2]
0107 3F00 mvi [__r1],A
0109 .dbline 78
0109 ; }
0109 L20:
0109 L17:
0109 .dbline 70
0109 7700 inc [X+0]
010B L19:
010B .dbline 70
010B 52FA mov A,[X-6]
010D 1101 sub A,1
010F 5300 mov [__r0],A
0111 5200 mov A,[X+0]
0113 3A00 cmp A,[__r0]
0115 A003 jz X2
0117 CF2C jc L16
0119 X2:
0119 .dbline 79
0119 L14:
0119 .dbline 79
0119 ; } while (changed);
0119 3D0300 cmp [X+3],0
011C BF1F jnz L13
011E .dbline -2
011E .dbline 80
011E ; }
011E L12:
011E 38FC add SP,-4
0120 20 pop X
0121 .dbline 0 ; func end
0121 7F ret
0122 .dbsym l changed 3 c
0122 .dbsym l temp 1 i
0122 .dbsym l i 0 c
0122 .dbsym l len 0 I
0122 .dbsym l len -6 c
0122 .dbsym l buffer -5 pi
0122 .dbend
0122 .dbfunc e Pulse_Instant_Calculate _Pulse_Instant_Calculate fI
0122 ; instant_pulse -> X+0
0122 _Pulse_Instant_Calculate::
0122 .dbline -1
0122 10 push X
0123 4F mov X,SP
0124 3802 add SP,2
0126 .dbline 83
0126 ;
0126 ; INT Pulse_Instant_Calculate(void)
0126 ; {
0126 .dbline 84
0126 ; INT instant_pulse = GetPulseDelta();
0126 7C0000 xcall _GetPulseDelta
0129 5100 mov A,[__r1]
012B 5401 mov [X+1],A
012D 5100 mov A,[__r0]
012F 5400 mov [X+0],A
0131 .dbline 86
0131 ;
0131 ; if (instant_pulse)
0131 3D0000 cmp [X+0],0
0134 B006 jnz X3
0136 3D0100 cmp [X+1],0
0139 A0DE jz L23
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -