📄 key5.s
字号:
st -y,R16
rcall mpy32fs
mov R16,R2
mov R17,R3
andi R16,1
andi R17,0
rcall int2fp
st -y,R19
st -y,R18
st -y,R17
st -y,R16
rcall add32fs
lds R4,_K1+2
lds R5,_K1+2+1
lds R2,_K1
lds R3,_K1+1
st -y,R5
st -y,R4
st -y,R3
st -y,R2
rcall mpy32f
mov R30,R28
mov R31,R29
std z+10,R16
std z+11,R17
std z+12,R18
std z+13,R19
mov R30,R28
mov R31,R29
ldd R2,z+10
ldd R3,z+11
ldd R4,z+12
ldd R5,z+13
st -y,R5
st -y,R4
st -y,R3
st -y,R2
ldi R16,<L37
ldi R17,>L37
rcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
rcall cmp32f
brlt L41
mov R30,R28
mov R31,R29
ldd R2,z+10
ldd R3,z+11
ldd R4,z+12
ldd R5,z+13
st -y,R5
st -y,R4
st -y,R3
st -y,R2
ldi R16,<L37
ldi R17,>L37
rcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
rcall sub32f
rcall fp2int
mov R24,R16
mov R25,R17
subi R24,0 ; offset = 32768
sbci R25,128
mov R10,R24
mov R11,R25
rjmp L42
L41:
mov R30,R28
mov R31,R29
ldd R16,z+10
ldd R17,z+11
ldd R18,z+12
ldd R19,z+13
rcall fp2int
mov R10,R16
mov R11,R17
L42:
sts _ADC_GD+1,R11
sts _ADC_GD,R10
.dbline 96
; LCD_display(2,0,4,*value);
mov R30,R20
mov R31,R21
ldd R2,z+0
ldd R3,z+1
clr R4
clr R5
std y+2,R2
std y+3,R3
std y+4,R4
std y+5,R5
ldi R24,4
std y+0,R24
clr R18
ldi R16,2
rcall _LCD_display
.dbline 97
; break;
.dbline 99
; }
; }
rjmp L25
L24:
.dbline 101
; else
; {
.dbline 102
; switch (temp)
clr R23
cpi R22,1
ldi R30,0
cpc R23,R30
brne X5
rjmp L70
X5:
cpi R22,2
ldi R30,0
cpc R23,R30
brne X6
rjmp L60
X6:
cpi R22,3
ldi R30,0
cpc R23,R30
breq L46
cpi R22,4
ldi R30,0
cpc R23,R30
brne X7
rjmp L53
X7:
cpi R22,5
ldi R30,0
cpc R23,R30
brne X8
rjmp L61
X8:
rjmp L43
X2:
.dbline 103
; {
L46:
.dbline 105
; case KEY_INC:
; value_table[j+1]++;
ldi R24,<_value_table+1
ldi R25,>_value_table+1
lds R2,_j
clr R3
add R2,R24
adc R3,R25
mov R30,R2
mov R31,R3
ldd R24,z+0
subi R24,255 ; addi 1
std z+0,R24
.dbline 106
; if(value_table[j+1]>9) value_table[j+1]=0;
ldi R24,<_value_table+1
ldi R25,>_value_table+1
lds R30,_j
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,9
cp R24,R2
brsh L48
.dbline 106
ldi R24,<_value_table+1
ldi R25,>_value_table+1
lds R30,_j
clr R31
add R30,R24
adc R31,R25
clr R2
std z+0,R2
L48:
.dbline 107
; LCD_write(2+j,0,'0'+value_table[j+1]);
ldi R24,<_value_table+1
ldi R25,>_value_table+1
lds R30,_j
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
clr R25
adiw R24,48
std y+1,R25
std y+0,R24
clr R18
lds R16,_j
subi R16,254 ; addi 2
rcall _LCD_write
.dbline 108
; break;
rjmp L44
L53:
.dbline 110
; case KEY_DEC:
; value_table[j+1]--;
ldi R24,<_value_table+1
ldi R25,>_value_table+1
lds R2,_j
clr R3
add R2,R24
adc R3,R25
mov R30,R2
mov R31,R3
ldd R24,z+0
subi R24,1
std z+0,R24
.dbline 111
; if(value_table[j+1]>9) value_table[j+1]=9;
ldi R24,<_value_table+1
ldi R25,>_value_table+1
lds R30,_j
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,9
cp R24,R2
brsh L55
.dbline 111
ldi R24,<_value_table+1
ldi R25,>_value_table+1
lds R30,_j
clr R31
add R30,R24
adc R31,R25
ldi R24,9
std z+0,R24
L55:
.dbline 112
; LCD_write(2+j,0,'0'+value_table[j+1]);
ldi R24,<_value_table+1
ldi R25,>_value_table+1
lds R30,_j
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
clr R25
adiw R24,48
std y+1,R25
std y+0,R24
clr R18
lds R16,_j
subi R16,254 ; addi 2
rcall _LCD_write
.dbline 113
; break;
rjmp L44
L60:
.dbline 115
; case KEY_CU:
; LCD_write(2+j,1,' ');
ldi R24,32
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,1
lds R16,_j
subi R16,254 ; addi 2
rcall _LCD_write
.dbline 116
; j++;
lds R24,_j
subi R24,255 ; addi 1
sts _j,R24
.dbline 117
; j&=0x3;
andi R24,3
sts _j,R24
.dbline 118
; LCD_write(2+j,1,'^');
ldi R24,94
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,1
lds R16,_j
subi R16,254 ; addi 2
rcall _LCD_write
.dbline 119
; break;
rjmp L44
L61:
.dbline 121
; case KEY_OK:
; *value=value_table[1]*1000+ value_table[2]*100+value_table[3]*10+value_table[4];
lds R18,_value_table+2
clr R19
ldi R16,100
ldi R17,0
rcall mpy16s
mov R2,R16
mov R3,R17
lds R18,_value_table+1
clr R19
ldi R16,1000
ldi R17,3
rcall mpy16s
mov R4,R16
mov R5,R17
add R4,R2
adc R5,R3
lds R18,_value_table+3
clr R19
ldi R16,10
ldi R17,0
rcall mpy16s
add R4,R16
adc R5,R17
lds R2,_value_table+4
clr R3
add R4,R2
adc R5,R3
mov R30,R20
mov R31,R21
std z+1,R5
std z+0,R4
.dbline 122
; if(*value>2000) *value=2000;
ldi R24,2000
ldi R25,7
ldd R2,z+0
ldd R3,z+1
cp R24,R2
cpc R25,R3
brsh L66
.dbline 122
std z+1,R25
std z+0,R24
L66:
.dbline 123
; ADC_GD=(*value)*K1;
mov R30,R20
mov R31,R21
ldd R2,z+0
ldd R3,z+1
ldi R16,<L36
ldi R17,>L36
rcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
mov R16,R2
mov R17,R3
lsr R17
ror R16
rcall int2fp
st -y,R19
st -y,R18
st -y,R17
st -y,R16
rcall mpy32fs
mov R16,R2
mov R17,R3
andi R16,1
andi R17,0
rcall int2fp
st -y,R19
st -y,R18
st -y,R17
st -y,R16
rcall add32fs
lds R4,_K1+2
lds R5,_K1+2+1
lds R2,_K1
lds R3,_K1+1
st -y,R5
st -y,R4
st -y,R3
st -y,R2
rcall mpy32f
mov R30,R28
mov R31,R29
std z+6,R16
std z+7,R17
std z+8,R18
std z+9,R19
mov R30,R28
mov R31,R29
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R5
st -y,R4
st -y,R3
st -y,R2
ldi R16,<L37
ldi R17,>L37
rcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
rcall cmp32f
brlt L68
mov R30,R28
mov R31,R29
ldd R2,z+6
ldd R3,z+7
ldd R4,z+8
ldd R5,z+9
st -y,R5
st -y,R4
st -y,R3
st -y,R2
ldi R16,<L37
ldi R17,>L37
rcall lpm32
st -y,R19
st -y,R18
st -y,R17
st -y,R16
rcall sub32f
rcall fp2int
mov R22,R16
mov R23,R17
subi R22,0 ; offset = 32768
sbci R23,128
rjmp L69
L68:
mov R30,R28
mov R31,R29
ldd R16,z+6
ldd R17,z+7
ldd R18,z+8
ldd R19,z+9
rcall fp2int
mov R22,R16
mov R23,R17
L69:
sts _ADC_GD+1,R23
sts _ADC_GD,R22
L70:
.dbline 125
; case KEY_FN:
; mode=1;
ldi R24,1
sts _mode,R24
.dbline 126
; LCD_write_string(0,1," ^ +/-ing...");
ldi R24,<L71
ldi R25,>L71
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
rcall _LCD_write_string
.dbline 127
; LCD_display(2,0,4,*value);
mov R30,R20
mov R31,R21
ldd R2,z+0
ldd R3,z+1
clr R4
clr R5
std y+2,R2
std y+3,R3
std y+4,R4
std y+5,R5
ldi R24,4
std y+0,R24
clr R18
ldi R16,2
rcall _LCD_display
.dbline 128
; break;
L43:
L44:
.dbline 130
L25:
.dbline -2
.dbline 131
; }
; }
; }
L23:
adiw R28,14
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r temp 22 c
.dbsym r value 20 pi
.dbsym l data_length 20 c
.dbsym r y 22 c
.dbsym r x 10 c
.dbend
.area data(ram, con, rel)
.dbfile D:\hujie\key5.c
L71:
.blkb 18
.area idata
.byte 32,32,32,32,32,94,32,32,43,47,45,'i,'n,'g,46,46
.byte 46,0
.area data(ram, con, rel)
.dbfile D:\hujie\key5.c
.area lit(rom, con, rel)
L37:
.word 0x0,0x4700
L36:
.word 0x0,0x4000
.area data(ram, con, rel)
.dbfile D:\hujie\key5.c
L30:
.blkb 17
.area idata
.byte 32,32,94,32,32,32,32,'s,'e,'t,'i,'n,'g,46,46,46
.byte 0
.area data(ram, con, rel)
.dbfile D:\hujie\key5.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -