📄 main.lis
字号:
0362 436604 or REG[102],4
0365 70EF and F,0xEF ; iopage = 0
0367 .dbline 149
0367 ;
0367 ; SETBIT(INT_MSK3, 0);
0367 43DE01 or REG[-34],1
036A .dbline 150
036A ; SETBIT(INT_MSK0, 6);
036A 43E040 or REG[-32],64
036D .dbline 152
036D ;
036D ; ADC_SetResolution(13);
036D 10 push X
036E 500D mov A,13
0370 7C0000 xcall _ADC_SetResolution
0373 20 pop X
0374 .dbline 154
0374 ;
0374 ; ADC_bPWM_IntTime_LSB = (BYTE)ADC_INTEGRATION;
0374 622620 mov REG[38],32
0377 .dbline 155
0377 ; ADC_bPWM_IntTime_MSB = (BYTE)(ADC_INTEGRATION >> 8);
0377 622A4E mov REG[42],78
037A .dbline 157
037A ;
037A ; ADC_bPWM_Period_LSB = (BYTE)ADC_PERIOD;
037A 622584 mov REG[37],-124
037D .dbline 158
037D ; ADC_bPWM_Period_MSB = (BYTE)(ADC_PERIOD >> 8);
037D 62294E mov REG[41],78
0380 .dbline 160
0380 ;
0380 ; M8C_EnableGInt;
0380 7101 or F, 01h
0382
0382 .dbline 166
0382 ;
0382 ; #if DEBUG
0382 ; Exchange_Start();
0382 ; #endif
0382 ;
0382 ; ADC_Start(ADC_HIGHPOWER);
0382 10 push X
0383 5003 mov A,3
0385 7C0000 xcall _ADC_Start
0388 .dbline 167
0388 ; ADC_GetSamples(0);
0388 5000 mov A,0
038A 7C0000 xcall _ADC_GetSamples
038D 20 pop X
038E .dbline 170
038E ;
038E ;
038E ; pulse.flags = BIT(FLAG_INIT_BIT);
038E 550802 mov [_pulse+8],2
0391 .dbline 171
0391 ; LCDUpdate(&pulse);
0391 5000 mov A,>_pulse
0393 08 push A
0394 5000 mov A,<_pulse
0396 08 push A
0397 9CF7 xcall _LCDUpdate
0399 38FE add SP,-2
039B 812E xjmp L41
039D L40:
039D .dbline 174
039D ;
039D ; while(1)
039D ; {
039D .dbline 175
039D ; temp = ReadButtons();
039D 9F79 xcall _ReadButtons
039F 530A mov [_temp+1],A
03A1 550900 mov [_temp],0
03A4 .dbline 176
03A4 ; if (CHECKBIT(temp, BUTTON_MODE_BIT))
03A4 510A mov A,[_temp+1]
03A6 2120 and A,32
03A8 5300 mov [__r1],A
03AA 5109 mov A,[_temp]
03AC 2100 and A,0
03AE B006 jnz X8
03B0 3C0000 cmp [__r1],0
03B3 A011 jz L43
03B5 X8:
03B5 .dbline 177
03B5 ; {
03B5 .dbline 178
03B5 ; pulse.flags ^= BIT(FLAG_MODE_BIT);
03B5 360804 xor [_pulse+8],4
03B8 .dbline 179
03B8 ; Pulse_Init_Calculate();
03B8 7C0000 xcall _Pulse_Init_Calculate
03BB .dbline 180
03BB ; LCDUpdate(&pulse);
03BB 5000 mov A,>_pulse
03BD 08 push A
03BE 5000 mov A,<_pulse
03C0 08 push A
03C1 9CCD xcall _LCDUpdate
03C3 38FE add SP,-2
03C5 .dbline 181
03C5 ; }
03C5 L43:
03C5 .dbline 183
03C5 ;
03C5 ; if (CHECKBIT(temp, BUTTON_RESET_BIT))
03C5 510A mov A,[_temp+1]
03C7 2108 and A,8
03C9 5300 mov [__r1],A
03CB 5109 mov A,[_temp]
03CD 2100 and A,0
03CF B006 jnz X9
03D1 3C0000 cmp [__r1],0
03D4 A020 jz L46
03D6 X9:
03D6 .dbline 184
03D6 ; {
03D6 .dbline 185
03D6 ; pulse.last = pulse.min = pulse.max = 0;
03D6 550500 mov [_pulse+4+1],0
03D9 550400 mov [_pulse+4],0
03DC 550300 mov [_pulse+2+1],0
03DF 550200 mov [_pulse+2],0
03E2 550100 mov [_pulse+1],0
03E5 550000 mov [_pulse],0
03E8 .dbline 186
03E8 ; LCDUpdate(&pulse);
03E8 5000 mov A,>_pulse
03EA 08 push A
03EB 5000 mov A,<_pulse
03ED 08 push A
03EE 9CA0 xcall _LCDUpdate
03F0 38FE add SP,-2
03F2 .dbline 187
03F2 ; Pulse_Init_Calculate();
03F2 7C0000 xcall _Pulse_Init_Calculate
03F5 .dbline 188
03F5 ; }
03F5 L46:
03F5 .dbline 190
03F5 ;
03F5 ; temp = (CHECKBIT(pulse.flags, FLAG_MODE_BIT))?
03F5 470804 tst [_pulse+8],4
03F8 A00E jz L52
03FA 7C0000 xcall _Pulse_Averaged_Calculate
03FD 5100 mov A,[__r1]
03FF 5401 mov [X+1],A
0401 5100 mov A,[__r0]
0403 5400 mov [X+0],A
0405 800C xjmp L53
0407 L52:
0407 7C0000 xcall _Pulse_Instant_Calculate
040A 5100 mov A,[__r1]
040C 5401 mov [X+1],A
040E 5100 mov A,[__r0]
0410 5400 mov [X+0],A
0412 L53:
0412 5201 mov A,[X+1]
0414 530A mov [_temp+1],A
0416 5200 mov A,[X+0]
0418 5309 mov [_temp],A
041A .dbline 193
041A ; (Pulse_Averaged_Calculate()) : (Pulse_Instant_Calculate());
041A ;
041A ; pulse.gain = GetGainLevel();
041A 7C0000 xcall _GetGainLevel
041D 5306 mov [_pulse+6],A
041F .dbline 194
041F ; pulse.swing = GetADCRange() >> ADC_RANGE_SHIFT;
041F 7C0000 xcall _GetADCRange
0422 6800 asr [__r0]
0424 6E00 rrc [__r1]
0426 6800 asr [__r0]
0428 6E00 rrc [__r1]
042A 6800 asr [__r0]
042C 6E00 rrc [__r1]
042E 6800 asr [__r0]
0430 6E00 rrc [__r1]
0432 6800 asr [__r0]
0434 6E00 rrc [__r1]
0436 6800 asr [__r0]
0438 6E00 rrc [__r1]
043A 5F0700 mov [_pulse+7],[__r1]
043D .dbline 196
043D ;
043D ; if (PULSE_IN_PROGRESS == temp) CLEARBIT(pulse.flags, FLAG_ERROR_BIT);
043D 3C0900 cmp [_temp],0
0440 B00B jnz L56
0442 3C0A00 cmp [_temp+1],0
0445 B006 jnz L56
0447 X10:
0447 .dbline 196
0447 2608FE and [_pulse+8],-2
044A 806E xjmp L57
044C L56:
044C .dbline 198
044C ; else
044C ; if (PULSE_CALC_ERROR == temp) SETBIT(pulse.flags, FLAG_ERROR_BIT);
044C 3C09FF cmp [_temp],-1
044F B00D jnz L59
0451 3C0AFF cmp [_temp+1],-1
0454 B008 jnz L59
0456 X11:
0456 .dbline 198
0456 2E0801 or [_pulse+8],1
0459 5108 mov A,[_pulse+8]
045B 805D xjmp L60
045D L59:
045D .dbline 200
045D ; else
045D ; {
045D .dbline 201
045D ; pulse.last = temp;
045D 5F010A mov [_pulse+1],[_temp+1]
0460 5F0009 mov [_pulse],[_temp]
0463 .dbline 202
0463 ; if (pulse.max < pulse.last) pulse.max = pulse.last;
0463 5104 mov A,[_pulse+4]
0465 3180 xor A,-128
0467 5300 mov [__rY],A
0469 5100 mov A,[_pulse]
046B 3180 xor A,-128
046D 5300 mov [__rZ],A
046F 550000 mov [__rX],0
0472 5105 mov A,[_pulse+4+1]
0474 1201 sub A,[_pulse+1]
0476 2C00 or [__rX],A
0478 5100 mov A,[__rY]
047A 1A00 sbb A,[__rZ]
047C 2C00 or [__rX],A
047E D00B jnc L62
0480 5100 mov A,[__rX]
0482 A007 jz L62
0484 X12:
0484 .dbline 202
0484 5F0501 mov [_pulse+4+1],[_pulse+1]
0487 5F0400 mov [_pulse+4],[_pulse]
048A L62:
048A .dbline 203
048A 5102 mov A,[_pulse+2]
048C 3180 xor A,-128
048E 5300 mov [__rY],A
0490 5100 mov A,[_pulse]
0492 3180 xor A,-128
0494 5300 mov [__rZ],A
0496 550000 mov [__rX],0
0499 5103 mov A,[_pulse+2+1]
049B 1201 sub A,[_pulse+1]
049D 2C00 or [__rX],A
049F 5100 mov A,[__rY]
04A1 1A00 sbb A,[__rZ]
04A3 2C00 or [__rX],A
04A5 A003 jz X13
04A7 D00B jnc L70
04A9 X13:
04A9 3C0200 cmp [_pulse+2],0
04AC B00C jnz L66
04AE 3C0300 cmp [_pulse+2+1],0
04B1 B007 jnz L66
04B3 X14:
04B3 L70:
04B3 .dbline 203
04B3 ; if ((pulse.min > pulse.last) || (0 == pulse.min)) pulse.min = pulse.last;
04B3 5F0301 mov [_pulse+2+1],[_pulse+1]
04B6 5F0200 mov [_pulse+2],[_pulse]
04B9 L66:
04B9 .dbline 204
04B9 ; }
04B9 L60:
04B9 L57:
04B9 .dbline 206
04B9 ;
04B9 ; if (Check_Update_Timeout()) LCDUpdate(&pulse);
04B9 7C0000 xcall _Check_Update_Timeout
04BC 3900 cmp A,0
04BE A00B jz L72
04C0 .dbline 206
04C0 5000 mov A,>_pulse
04C2 08 push A
04C3 5000 mov A,<_pulse
04C5 08 push A
04C6 9BC8 xcall _LCDUpdate
04C8 38FE add SP,-2
04CA L72:
04CA .dbline 215
04CA L41:
04CA .dbline 173
04CA 8ED2 xjmp L40
04CC X7:
04CC .dbline -2
04CC .dbline 218
04CC ;
04CC ; #if DEBUG
04CC ; while (!ADC_fIsDataAvailable());
04CC ; ADC_Data.y = GetDebugVar();
04CC ; ADC_Data.x = ADC_iGetDataClearFlag();
04CC ; Exchange_SendBuf((BYTE*)&ADC_Data, 4);
04CC ; #endif
04CC ;
04CC ; }
04CC ;
04CC ;
04CC ; }
04CC L38:
04CC 38FE add SP,-2
04CE 20 pop X
04CF .dbline 0 ; func end
04CF 7F ret
04D0 .dbend
.area bss(ram, con, rel)
0000 .dbfile ./main.c
0000 _pulse:
0000 .blkb 9
0009 .dbsym s pulse _pulse X
0009 _temp:
0009 .blkb 2
000B .dbsym s temp _temp I
.area lit(rom, con, rel)
01C7 L33:
01C7 576F726B2000 .byte 'W,'o,'r,'k,32,0
01CD L32:
01CD 4572726F7200 .byte 'E,'r,'r,'o,'r,0
01D3 L29:
01D3 4661737400 .byte 'F,'a,'s,'t,0
01D8 L28:
01D8 536C6F7700 .byte 'S,'l,'o,'w,0
01DD L23:
01DD 202D2D2000 .byte 32,45,45,32,0
01E2 L20:
01E2 434F4E443A00 .byte 'C,'O,'N,'D,58,0
01E8 L19:
01E8 4741494E3A00 .byte 'G,'A,'I,'N,58,0
01EE L18:
01EE 4D4F44453A00 .byte 'M,'O,'D,'E,58,0
01F4 L17:
01F4 204D41583A00 .byte 32,'M,'A,'X,58,0
01FA L16:
01FA 204D494E3A00 .byte 32,'M,'I,'N,58,0
0200 L15:
0200 4C4153543A00 .byte 'L,'A,'S,'T,58,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -