⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dataproc.lis

📁 测量脉搏的源码 Cypress公司使用 CY27443 完成相关的功能
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 013B           X3:
 013B                   .dbline 87
 013B           ;   {
 013B                   .dbline 88
 013B           ;     INITTIMER();
 013B                   .dbline 88
 013B 5500BE            mov [_timer_pulse],-66
 013E                   .dbline 88
 013E                   .dbline 88
 013E                   .dbline 89
 013E           ;     pulse_buffer[index++] = instant_pulse;
 013E 5F0003            mov [__r1],[_index]
 0141 550000            mov [__r0],0
 0144 5100              mov A,[__r1]
 0146 0101              add A,1
 0148 5300              mov [__r3],A
 014A 5000              mov A,0
 014C 0900              adc A,0
 014E 5F0300            mov [_index],[__r3]
 0151 6500              asl [__r1]
 0153 6B00              rlc [__r0]
 0155 060000            add [__r1],<_pulse_buffer
 0158 0E0000            adc [__r0],>_pulse_buffer
 015B 5200              mov A,[X+0]
 015D 3F00              mvi [__r1],A
 015F 5201              mov A,[X+1]
 0161 3F00              mvi [__r1],A
 0163                   .dbline 91
 0163           ;     
 0163           ;     if (MEDIAN_FILTER1_LENGHT == index)
 0163 3C030D            cmp [_index],13
 0166 B0A9              jnz L25
 0168                   .dbline 92
 0168           ;     {
 0168                   .dbline 93
 0168           ;       index = 0;
 0168 550300            mov [_index],0
 016B                   .dbline 94
 016B           ;       median_filter(pulse_buffer, MEDIAN_FILTER1_LENGHT);
 016B 500D              mov A,13
 016D 08                push A
 016E 5000              mov A,>_pulse_buffer
 0170 08                push A
 0171 5000              mov A,<_pulse_buffer
 0173 08                push A
 0174 9EC2              xcall _median_filter
 0176 38FD              add SP,-3
 0178                   .dbline 96
 0178           ;       
 0178           ;       instant_pulse = pulse_buffer[MEDIAN1 + 1] - pulse_buffer[MEDIAN1 - 1];
 0178 510F              mov A,[_pulse_buffer+14+1]
 017A 120B              sub A,[_pulse_buffer+10+1]
 017C 5300              mov [__r1],A
 017E 510E              mov A,[_pulse_buffer+14]
 0180 1A0A              sbb A,[_pulse_buffer+10]
 0182 5300              mov [__r0],A
 0184 5100              mov A,[__r1]
 0186 5401              mov [X+1],A
 0188 5100              mov A,[__r0]
 018A 5400              mov [X+0],A
 018C                   .dbline 97
 018C           ;       instant_pulse <<= 3;
 018C 6601              asl [X+1]
 018E 6C00              rlc [X+0]
 0190 6601              asl [X+1]
 0192 6C00              rlc [X+0]
 0194 6601              asl [X+1]
 0196 6C00              rlc [X+0]
 0198                   .dbline 98
 0198           ;       if (instant_pulse > pulse_buffer[MEDIAN1]) return PULSE_CALC_ERROR;
 0198 5200              mov A,[X+0]
 019A 3A0C              cmp A,[_pulse_buffer+12]
 019C B007              jnz X5
 019E 5201              mov A,[X+1]
 01A0 3A0D              cmp A,[_pulse_buffer+12+1]
 01A2 A00B              jz L29
 01A4           X5:
 01A4 C009              jc L29
 01A6           X4:
 01A6                   .dbline 98
 01A6 5500FF            mov [__r1],-1
 01A9 5500FF            mov [__r0],-1
 01AC 8081              xjmp L22
 01AE           L29:
 01AE                   .dbline 100
 01AE           ;              
 01AE           ;       instant_pulse = pulse_buffer[MEDIAN1] + pulse_buffer[MEDIAN1-1] + pulse_buffer[MEDIAN1+1];      
 01AE 510D              mov A,[_pulse_buffer+12+1]
 01B0 020B              add A,[_pulse_buffer+10+1]
 01B2 5300              mov [__r1],A
 01B4 510C              mov A,[_pulse_buffer+12]
 01B6 0A0A              adc A,[_pulse_buffer+10]
 01B8 5300              mov [__r0],A
 01BA 510F              mov A,[_pulse_buffer+14+1]
 01BC 0400              add [__r1],A
 01BE 510E              mov A,[_pulse_buffer+14]
 01C0 0C00              adc [__r0],A
 01C2 5100              mov A,[__r1]
 01C4 5401              mov [X+1],A
 01C6 5100              mov A,[__r0]
 01C8 5400              mov [X+0],A
 01CA                   .dbline 101
 01CA           ;       return (LONG)(3*60*PULSE_ADC_SAMPLE_FREQ)/instant_pulse;
 01CA 5201              mov A,[X+1]
 01CC 5300              mov [__r3],A
 01CE 5200              mov A,[X+0]
 01D0 5300              mov [__r2],A
 01D2 470080            tst [__r2],-128
 01D5 A009              jz X6
 01D7 5500FF            mov [__r1],-1
 01DA 5500FF            mov [__r0],-1
 01DD 8007              jmp X7
 01DF           X6:
 01DF 550000            mov [__r1],0
 01E2 550000            mov [__r0],0
 01E5           X7:
 01E5 5100              mov A,[__r0]
 01E7 08                push A
 01E8 5100              mov A,[__r1]
 01EA 08                push A
 01EB 5100              mov A,[__r2]
 01ED 08                push A
 01EE 5100              mov A,[__r3]
 01F0 08                push A
 01F1 5000              mov A,0
 01F3 08                push A
 01F4 08                push A
 01F5 5046              mov A,70
 01F7 08                push A
 01F8 5050              mov A,80
 01FA 08                push A
 01FB 7C0000            xcall __divmod_32X32_32
 01FE 18                pop A
 01FF 5300              mov [__r3],A
 0201 18                pop A
 0202 5300              mov [__r2],A
 0204 18                pop A
 0205 18                pop A
 0206 38FC              add SP,-4
 0208 5F0000            mov [__r1],[__r3]
 020B 5F0000            mov [__r0],[__r2]
 020E 801F              xjmp L22
 0210           L25:
 0210                   .dbline 103
 0210           ;     }
 0210           ;       return PULSE_IN_PROGRESS;
 0210 550000            mov [__r1],0
 0213 550000            mov [__r0],0
 0216 8017              xjmp L22
 0218           L23:
 0218                   .dbline 106
 0218           ;   }
 0218           ;     else 
 0218           ;   if (CHECKTIMER()) return PULSE_IN_PROGRESS; else
 0218 3C0000            cmp [_timer_pulse],0
 021B A009              jz L35
 021D                   .dbline 106
 021D 550000            mov [__r1],0
 0220 550000            mov [__r0],0
 0223 800A              xjmp L22
 0225           L35:
 0225                   .dbline 107
 0225           ;   {
 0225                   .dbline 108
 0225           ;     index = 0;
 0225 550300            mov [_index],0
 0228                   .dbline 109
 0228           ;     return PULSE_CALC_ERROR;   
 0228 5500FF            mov [__r1],-1
 022B 5500FF            mov [__r0],-1
 022E                   .dbline -2
 022E           L22:
 022E 38FE              add SP,-2
 0230 20                pop X
 0231                   .dbline 0 ; func end
 0231 7F                ret
 0232                   .dbsym l instant_pulse 0 I
 0232                   .dbend
 0232                   .dbfunc e Pulse_Init_Calculate _Pulse_Init_Calculate fV
 0232           _Pulse_Init_Calculate::
 0232                   .dbline -1
 0232                   .dbline 114
 0232           ;   }
 0232           ; }
 0232           ; 
 0232           ; void Pulse_Init_Calculate(void)
 0232           ; {
 0232                   .dbline 115
 0232           ;   state = RESET;
 0232 550200            mov [_state],0
 0235                   .dbline 116
 0235           ;   index = 0;
 0235 550300            mov [_index],0
 0238                   .dbline -2
 0238                   .dbline 117
 0238           ; }
 0238           L37:
 0238                   .dbline 0 ; func end
 0238 7F                ret
 0239                   .dbend
                        .area data(ram, con, rel)
 0004                   .dbfile ./dataproc.c
 0004           L39:
 0004                   .blkb 2
                        .area idata
 0004 0000              .word 0
                        .area data(ram, con, rel)
 0006                   .dbfile ./dataproc.c
 0006           L40:
 0006                   .blkb 2
                        .area idata
 0006 0000              .word 0
                        .area data(ram, con, rel)
 0008                   .dbfile ./dataproc.c
                        .area text(rom, con, rel)
 0239                   .dbfile ./dataproc.c
 0239                   .dbfunc e Pulse_Averaged_Calculate _Pulse_Averaged_Calculate fI
 0239                   .dbsym s pulses L40 i
 0239                   .dbsym s total_intervals L39 i
 0239           ;           aver -> X+13
 0239           ;     med_buffer -> X+3
 0239           ;  instant_pulse -> X+1
 0239           ;              i -> X+0
 0239           _Pulse_Averaged_Calculate::
 0239                   .dbline -1
 0239 10                push X
 023A 4F                mov X,SP
 023B 3811              add SP,17
 023D                   .dbline 121
 023D           ; 
 023D           ; 
 023D           ; INT Pulse_Averaged_Calculate(void)
 023D           ; {
 023D                   .dbline 125
 023D           ;   static WORD total_intervals = 0;  
 023D           ;   static WORD pulses = 0;
 023D           ;   
 023D           ;   INT instant_pulse = GetPulseDelta();
 023D 7C0000            xcall _GetPulseDelta
 0240 5100              mov A,[__r1]
 0242 5402              mov [X+2],A
 0244 5100              mov A,[__r0]
 0246 5401              mov [X+1],A
 0248                   .dbline 128
 0248           ;   
 0248           ;   WORD med_buffer[MEDIAN_FILTER2_LENGHT], aver;
 0248           ;   BYTE i = MEDIAN_FILTER2_LENGHT;
 0248 560005            mov [X+0],5
 024B                   .dbline 130
 024B           ;   
 024B           ;   if (instant_pulse)
 024B 3D0100            cmp [X+1],0
 024E B006              jnz X10
 0250 3D0200            cmp [X+2],0
 0253 A290              jz L41
 0255           X10:
 0255                   .dbline 131
 0255           ;   {
 0255                   .dbline 132
 0255           ;     INITTIMER();
 0255                   .dbline 132
 0255 5500BE            mov [_timer_pulse],-66
 0258                   .dbline 132
 0258                   .dbline 132
 0258                   .dbline 134
 0258           ;        
 0258           ;     switch (state)
 0258 5102              mov A,[_state]
 025A 5410              mov [X+16],A
 025C 560F00            mov [X+15],0
 025F 3D0F00            cmp [X+15],0
 0262 B006              jnz X11
 0264 3D1000            cmp [X+16],0
 0267 A017              jz L46
 0269           X11:
 0269 3D0F00            cmp [X+15],0
 026C B006              jnz X12
 026E 3D1001            cmp [X+16],1
 0271 A027              jz L47
 0273           X12:
 0273 3D0F00            cmp [X+15],0
 0276 B006              jnz X13
 0278 3D1002            cmp [X+16],2
 027B A108              jz L58
 027D           X13:
 027D 8234              xjmp L43
 027F           X8:
 027F                   .dbline 135
 027F           ;     {
 027F           L46:
 027F                   .dbline 137
 027F           ;       case RESET: 
 027F           ;         pulses = total_intervals = index = 0;
 027F 550300            mov [_index],0
 0282 550000            mov [__r1],0
 0285 550000            mov [__r0],0
 0288 550500            mov [L39+1],0
 028B 550400            mov [L39],0
 028E 550700            mov [L40+1],0
 0291 550600            mov [L40],0
 0294                   .dbline 138
 0294           ;         state = INITFILL;
 0294 550201            mov [_state],1
 0297                   .dbline 139
 0297           ;         break;
 0297 821D              xjmp L44
 0299           L47:
 0299                   .dbline 141
 0299           ;       case INITFILL:  
 0299           ;         if ((MEDIAN_FILTER2_LENGHT-1) == index)
 0299 3C0304            cmp [_index],4
 029C B218              jnz L44
 029E                   .dbline 142
 029E           ;         {
 029E 8031              xjmp L51
 02A0           L50:
 02A0                   .dbline 143
 02A0 5200              mov A,[X+0]
 02A2 5300              mov [__r1],A
 02A4 550000            mov [__r0],0
 02A7 6500              asl [__r1]
 02A9 6B00              rlc [__r0]
 02AB 5A00              mov [__r3],X
 02AD 060003            add [__r3],3
 02B0 5100              mov A,[__r1]
 02B2 0200              add A,[__r3]
 02B4 5300              mov [__r3],A
 02B6 5100              mov A,[__r0]
 02B8 0A00              adc A,[__r2]
 02BA 060000            add [__r1],<_pulse_buffer
 02BD 0E0000            adc [__r0],>_pulse_buffer
 02C0 3E00              mvi A,[__r1]
 02C2 5300              mov [__r0],A
 02C4 3E00              mvi A,[__r1]
 02C6 5300              mov [__r1],A
 02C8 5100              mov A,[__r0]
 02CA 3F00              mvi [__r3],A
 02CC 5100              mov A,[__r1]
 02CE 3F00              mvi [__r3],A
 02D0           L51:
 02D0                   .dbline 143
 02D0           ;           while(i--) med_buffer[i] = pulse_buffer[i];
 02D0 5200              mov A,[X+0]
 02D2 5300              mov [__r1],A
 02D4 550000            mov [__r0],0
 02D7 1101              sub A,1
 02D9 5300              mov [__r3],A
 02DB 5000              mov A,0
 02DD 1900              sbb A,0
 02DF 5100              mov A,[__r3]
 02E1 5400              mov [X+0],A
 02E3 3C0000            cmp [__r0],0
 02E6 BFB9              jnz L50
 02E8 3C0000            cmp [__r1],0
 02EB BFB4              jnz L50
 02ED           X14:
 02ED                   .dbline 144
 02ED           ;           median_filter(med_buffer, MEDIAN_FILTER2_LENGHT);
 02ED 5005              mov A,5

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -