📄 main.s
字号:
.dbline 99
mov A,[__r0]
push A
push X
mov A,3
push A
mov A,-25
push A
mov A,[X-4]
add A,2
mov [__r1],A
mov A,[X-5]
adc A,0
mvi A,[__r1]
mov [__r0],A
mvi A,[__r1]
mov [__r1],A
mov A,[__r0]
push A
mov A,[__r1]
push A
xcall _strfrm
mov A,[__r0]
push A
mov A,[__r1]
push A
xcall _LcdStr
add SP,-8
xjmp L25
L24:
.dbline 99
; if (params->min) LcdStr(strfrm(params->min, MAX_VALUE, buffer)); else LcdCStr(INFO_BLANK_NUMBER);
mov A,>L23
push A
mov A,<L23
push A
xcall _LcdCStr
add SP,-2
L25:
.dbline 101
;
; LcdGoto(POS_DATA_COL, POS_MAX_ROW);
mov A,2
push A
mov A,35
push A
xcall _LcdGoto
add SP,-2
.dbline 102
mov A,[X-4]
add A,4
mov [__r1],A
mov A,[X-5]
adc A,0
mvi A,[__r1]
mov [__r0],A
mvi A,[__r1]
cmp [__r0],0
jnz X6
cmp A,0
jz L26
X6:
.dbline 102
mov A,[__r0]
push A
push X
mov A,3
push A
mov A,-25
push A
mov A,[X-4]
add A,4
mov [__r1],A
mov A,[X-5]
adc A,0
mvi A,[__r1]
mov [__r0],A
mvi A,[__r1]
mov [__r1],A
mov A,[__r0]
push A
mov A,[__r1]
push A
xcall _strfrm
mov A,[__r0]
push A
mov A,[__r1]
push A
xcall _LcdStr
add SP,-8
xjmp L27
L26:
.dbline 102
; if (params->max) LcdStr(strfrm(params->max, MAX_VALUE, buffer)); else LcdCStr(INFO_BLANK_NUMBER);
mov A,>L23
push A
mov A,<L23
push A
xcall _LcdCStr
add SP,-2
L27:
.dbline 104
;
; LcdGoto(POS_DATA_COL, POS_MODE_ROW);
mov A,3
push A
mov A,35
push A
xcall _LcdGoto
add SP,-2
.dbline 105
; CHECKBIT(params->flags, FLAG_MODE_BIT)?(LcdCStr(INFO_MODE_INSTANT)):(LcdCStr(INFO_MODE_AVERAGE));
mov A,[X-4]
add A,8
mov [__r1],A
mov A,[X-5]
adc A,0
mvi A,[__r1]
mov [__r0],A
tst [__r0],4
jz L30
mov A,>L28
push A
mov A,<L28
push A
xcall _LcdCStr
add SP,-2
xjmp L31
L30:
mov A,>L29
push A
mov A,<L29
push A
xcall _LcdCStr
add SP,-2
L31:
.dbline 107
;
; LcdGoto(POS_DATA_COL, POS_GAIN_ROW);
mov A,4
push A
mov A,35
push A
xcall _LcdGoto
.dbline 108
; LcdStr(strfrm(params->gain, MAX_VALUE, buffer));
mov A,[__r0]
push A
push X
mov A,3
push A
mov A,-25
push A
mov A,[X-4]
add A,6
mov [__r1],A
mov A,[X-5]
adc A,0
mvi A,[__r1]
mov [__r1],A
mov A,0
push A
mov A,[__r1]
push A
xcall _strfrm
add SP,-8
mov A,[__r0]
push A
mov A,[__r1]
push A
xcall _LcdStr
.dbline 110
;
; LcdGoto(POS_DATA_COL, POS_STATUS_ROW);
mov A,5
push A
mov A,35
push A
xcall _LcdGoto
add SP,-4
.dbline 111
; CHECKBIT(params->flags, FLAG_ERROR_BIT)?(LcdCStr(INFO_STATUS_ERROR)):(LcdCStr(INFO_STATUS_WORK));
mov A,[X-4]
add A,8
mov [__r1],A
mov A,[X-5]
adc A,0
mvi A,[__r1]
mov [__r0],A
tst [__r0],1
jz L34
mov A,>L32
push A
mov A,<L32
push A
xcall _LcdCStr
add SP,-2
xjmp L35
L34:
mov A,>L33
push A
mov A,<L33
push A
xcall _LcdCStr
add SP,-2
L35:
.dbline 113
;
; LcdVBargraph(POS_BARGRAPH, POS_BARGRAPH_START, POS_BARGRAPH_STOP, params->swing);
mov A,[X-4]
add A,7
mov [__r1],A
mov A,[X-5]
adc A,0
mvi A,[__r1]
push A
mov A,5
push A
mov A,0
push A
mov A,75
push A
xcall _LcdVBargraph
add SP,-4
.dbline -2
.dbline 114
; }
L12:
add SP,-5
pop X
.dbline 0 ; func end
ret
.dbsym l buffer 0 A[5:5]c
.dbsym l params -5 pX
.dbend
.area data(ram, con, rel)
.dbfile ./main.c
L37:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile ./main.c
.area text(rom, con, rel)
.dbfile ./main.c
.dbfunc e ReadButtons _ReadButtons fc
.dbsym s last_read L37 c
; result -> X+1
; temp -> X+0
_ReadButtons::
.dbline -1
push X
mov X,SP
add SP,2
.dbline 117
;
; BYTE ReadButtons(void)
; {
.dbline 119
; static BYTE last_read = 0;
; BYTE temp, result = 0;
mov [X+1],0
.dbline 121
;
; BUTTONS_PORT |= BIT(BUTTON_MODE_BIT) | BIT(BUTTON_RESET_BIT);
or REG[8],40
.dbline 122
; temp = BUTTONS_PORT & (BIT(BUTTON_MODE_BIT) | BIT(BUTTON_RESET_BIT));
mov A,REG[8]
and A,40
mov [X+0],A
.dbline 124
;
; result = (temp ^ last_read) & (~temp);
mov A,[X+0]
xor A,[L37]
mov [__r0],A
mov A,[X+0]
cpl A
mov [__r2],A
mov A,[__r0]
and A,[__r2]
mov [X+1],A
.dbline 125
; last_read = temp;
mov A,[X+0]
mov [L37],A
.dbline 127
;
; return result;
mov A,[X+1]
.dbline -2
L36:
add SP,-2
pop X
.dbline 0 ; func end
ret
.dbsym l result 1 c
.dbsym l temp 0 c
.dbend
.dbfunc e main _main fV
_main::
.dbline -1
push X
mov X,SP
add SP,2
.dbline 133
; }
;
;
;
; void main()
; {
.dbline 134
; In_PGA_Start(In_PGA_HIGHPOWER);
push X
mov A,3
xcall _In_PGA_Start
.dbline 135
; In_PGA_SetGain(In_PGA_G1_00);
mov A,-8
xcall _In_PGA_SetGain
.dbline 137
;
; Carrier_Timer_Start();
xcall _Carrier_Timer_Start
.dbline 138
; Mixer_Start(Mixer_HIGHPOWER);
mov A,3
xcall _Mixer_Start
.dbline 140
;
; In_BPF_Start(In_BPF_HIGHPOWER);
mov A,3
xcall _In_BPF_Start
pop X
.dbline 147
;
; #if DEBUG
; Exchange_Start();
; #endif
;
; //AMD_CR1 |= 0x01; -- global output bus driven
; AMD_CR1 |= 0x04; // -- comparator bus driven
or F,0x10 ; iopage = 1
or REG[102],4
and F,0xEF ; iopage = 0
.dbline 149
;
; SETBIT(INT_MSK3, 0);
or REG[-34],1
.dbline 150
; SETBIT(INT_MSK0, 6);
or REG[-32],64
.dbline 152
;
; ADC_SetResolution(13);
push X
mov A,13
xcall _ADC_SetResolution
pop X
.dbline 154
;
; ADC_bPWM_IntTime_LSB = (BYTE)ADC_INTEGRATION;
mov REG[38],32
.dbline 155
; ADC_bPWM_IntTime_MSB = (BYTE)(ADC_INTEGRATION >> 8);
mov REG[42],78
.dbline 157
;
; ADC_bPWM_Period_LSB = (BYTE)ADC_PERIOD;
mov REG[37],-124
.dbline 158
; ADC_bPWM_Period_MSB = (BYTE)(ADC_PERIOD >> 8);
mov REG[41],78
.dbline 160
;
; M8C_EnableGInt;
or F, 01h
.dbline 166
;
; #if DEBUG
; Exchange_Start();
; #endif
;
; ADC_Start(ADC_HIGHPOWER);
push X
mov A,3
xcall _ADC_Start
.dbline 167
; ADC_GetSamples(0);
mov A,0
xcall _ADC_GetSamples
pop X
.dbline 170
;
;
; pulse.flags = BIT(FLAG_INIT_BIT);
mov [_pulse+8],2
.dbline 171
; LCDUpdate(&pulse);
mov A,>_pulse
push A
mov A,<_pulse
push A
xcall _LCDUpdate
add SP,-2
xjmp L41
L40:
.dbline 174
;
; while(1)
; {
.dbline 175
; temp = ReadButtons();
xcall _ReadButtons
mov [_temp+1],A
mov [_temp],0
.dbline 176
; if (CHECKBIT(temp, BUTTON_MODE_BIT))
mov A,[_temp+1]
and A,32
mov [__r1],A
mov A,[_temp]
and A,0
jnz X8
cmp [__r1],0
jz L43
X8:
.dbline 177
; {
.dbline 178
; pulse.flags ^= BIT(FLAG_MODE_BIT);
xor [_pulse+8],4
.dbline 179
; Pulse_Init_Calculate();
xcall _Pulse_Init_Calculate
.dbline 180
; LCDUpdate(&pulse);
mov A,>_pulse
push A
mov A,<_pulse
push A
xcall _LCDUpdate
add SP,-2
.dbline 181
; }
L43:
.dbline 183
;
; if (CHECKBIT(temp, BUTTON_RESET_BIT))
mov A,[_temp+1]
and A,8
mov [__r1],A
mov A,[_temp]
and A,0
jnz X9
cmp [__r1],0
jz L46
X9:
.dbline 184
; {
.dbline 185
; pulse.last = pulse.min = pulse.max = 0;
mov [_pulse+4+1],0
mov [_pulse+4],0
mov [_pulse+2+1],0
mov [_pulse+2],0
mov [_pulse+1],0
mov [_pulse],0
.dbline 186
; LCDUpdate(&pulse);
mov A,>_pulse
push A
mov A,<_pulse
push A
xcall _LCDUpdate
add SP,-2
.dbline 187
; Pulse_Init_Calculate();
xcall _Pulse_Init_Calculate
.dbline 188
; }
L46:
.dbline 190
;
; temp = (CHECKBIT(pulse.flags, FLAG_MODE_BIT))?
tst [_pulse+8],4
jz L52
xcall _Pulse_Averaged_Calculate
mov A,[__r1]
mov [X+1],A
mov A,[__r0]
mov [X+0],A
xjmp L53
L52:
xcall _Pulse_Instant_Calculate
mov A,[__r1]
mov [X+1],A
mov A,[__r0]
mov [X+0],A
L53:
mov A,[X+1]
mov [_temp+1],A
mov A,[X+0]
mov [_temp],A
.dbline 193
; (Pulse_Averaged_Calculate()) : (Pulse_Instant_Calculate());
;
; pulse.gain = GetGainLevel();
xcall _GetGainLevel
mov [_pulse+6],A
.dbline 194
; pulse.swing = GetADCRange() >> ADC_RANGE_SHIFT;
xcall _GetADCRange
asr [__r0]
rrc [__r1]
asr [__r0]
rrc [__r1]
asr [__r0]
rrc [__r1]
asr [__r0]
rrc [__r1]
asr [__r0]
rrc [__r1]
asr [__r0]
rrc [__r1]
mov [_pulse+7],[__r1]
.dbline 196
;
; if (PULSE_IN_PROGRESS == temp) CLEARBIT(pulse.flags, FLAG_ERROR_BIT);
cmp [_temp],0
jnz L56
cmp [_temp+1],0
jnz L56
X10:
.dbline 196
and [_pulse+8],-2
xjmp L57
L56:
.dbline 198
; else
; if (PULSE_CALC_ERROR == temp) SETBIT(pulse.flags, FLAG_ERROR_BIT);
cmp [_temp],-1
jnz L59
cmp [_temp+1],-1
jnz L59
X11:
.dbline 198
or [_pulse+8],1
mov A,[_pulse+8]
xjmp L60
L59:
.dbline 200
; else
; {
.dbline 201
; pulse.last = temp;
mov [_pulse+1],[_temp+1]
mov [_pulse],[_temp]
.dbline 202
; if (pulse.max < pulse.last) pulse.max = pulse.last;
mov A,[_pulse+4]
xor A,-128
mov [__rY],A
mov A,[_pulse]
xor A,-128
mov [__rZ],A
mov [__rX],0
mov A,[_pulse+4+1]
sub A,[_pulse+1]
or [__rX],A
mov A,[__rY]
sbb A,[__rZ]
or [__rX],A
jnc L62
mov A,[__rX]
jz L62
X12:
.dbline 202
mov [_pulse+4+1],[_pulse+1]
mov [_pulse+4],[_pulse]
L62:
.dbline 203
mov A,[_pulse+2]
xor A,-128
mov [__rY],A
mov A,[_pulse]
xor A,-128
mov [__rZ],A
mov [__rX],0
mov A,[_pulse+2+1]
sub A,[_pulse+1]
or [__rX],A
mov A,[__rY]
sbb A,[__rZ]
or [__rX],A
jz X13
jnc L70
X13:
cmp [_pulse+2],0
jnz L66
cmp [_pulse+2+1],0
jnz L66
X14:
L70:
.dbline 203
; if ((pulse.min > pulse.last) || (0 == pulse.min)) pulse.min = pulse.last;
mov [_pulse+2+1],[_pulse+1]
mov [_pulse+2],[_pulse]
L66:
.dbline 204
; }
L60:
L57:
.dbline 206
;
; if (Check_Update_Timeout()) LCDUpdate(&pulse);
xcall _Check_Update_Timeout
cmp A,0
jz L72
.dbline 206
mov A,>_pulse
push A
mov A,<_pulse
push A
xcall _LCDUpdate
add SP,-2
L72:
.dbline 215
L41:
.dbline 173
xjmp L40
X7:
.dbline -2
.dbline 218
;
; #if DEBUG
; while (!ADC_fIsDataAvailable());
; ADC_Data.y = GetDebugVar();
; ADC_Data.x = ADC_iGetDataClearFlag();
; Exchange_SendBuf((BYTE*)&ADC_Data, 4);
; #endif
;
; }
;
;
; }
L38:
add SP,-2
pop X
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile ./main.c
_pulse:
.blkb 9
.dbsym s pulse _pulse X
_temp:
.blkb 2
.dbsym s temp _temp I
.area lit(rom, con, rel)
L33:
.byte 'W,'o,'r,'k,32,0
L32:
.byte 'E,'r,'r,'o,'r,0
L29:
.byte 'F,'a,'s,'t,0
L28:
.byte 'S,'l,'o,'w,0
L23:
.byte 32,45,45,32,0
L20:
.byte 'C,'O,'N,'D,58,0
L19:
.byte 'G,'A,'I,'N,58,0
L18:
.byte 'M,'O,'D,'E,58,0
L17:
.byte 32,'M,'A,'X,58,0
L16:
.byte 32,'M,'I,'N,58,0
L15:
.byte 'L,'A,'S,'T,58,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -