📄 ad.s
字号:
.dbline 0 ; func end
ret
.dbsym r min_value 14 c
.dbsym r max_value 20 c
.dbsym r min_id 12 c
.dbsym r max_id 10 c
.dbsym l ret 0 i
.dbsym r i 22 c
.dbend
.dbfunc e vcon _vcon fI
; a -> y+4
.even
_vcon::
rcall push_arg4
rcall push_gset2
.dbline -1
.dbline 163
; }
;
; int vcon(long a)
; {
.dbline 164
; return (a*1235)/AdcConvertStd();
rcall _AdcConvertStd
movw R2,R16
movw R30,R28
ldd R4,z+4
ldd R5,z+5
ldd R6,z+6
ldd R7,z+7
ldi R20,211
ldi R21,4
ldi R22,0
ldi R23,0
st -y,R7
st -y,R6
st -y,R5
st -y,R4
movw R16,R20
movw R18,R22
rcall empy32s
clr R4
clr R5
st -y,R5
st -y,R4
st -y,R3
st -y,R2
rcall div32s
.dbline -2
L62:
rcall pop_gset2
adiw R28,4
.dbline 0 ; func end
ret
.dbsym l a 4 L
.dbend
.dbfunc e temperature _temperature fL
; temper -> y+0
; r -> y+8
.even
_temperature::
rcall push_arg4
rcall push_gset2
sbiw R28,4
.dbline -1
.dbline 170
; }
;
; //进行温度转换
;
; long temperature(long r)//温度都乘上了10的5次
; {
.dbline 172
; long temper;
; if(r>908300||r<2500)
ldi R20,12
ldi R21,220
ldi R22,13
ldi R23,0
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
cp R20,R2
cpc R21,R3
cpc R22,R4
cpc R23,R5
brlt L66
ldi R20,196
ldi R21,9
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brge L64
L66:
.dbline 173
; temper=0xffffffff;
ldi R20,255
ldi R21,255
ldi R22,255
ldi R23,255
movw R30,R28
std z+0,R20
std z+1,R21
std z+2,R22
std z+3,R23
rjmp L65
L64:
.dbline 175
; else
; if(r>580450)
ldi R20,98
ldi R21,219
ldi R22,8
ldi R23,0
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
cp R20,R2
cpc R21,R3
cpc R22,R4
cpc R23,R5
brge L67
.dbline 176
; temper=-2*r-1121800;
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
ldi R20,254
ldi R21,255
ldi R22,255
ldi R23,255
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
rcall empy32s
ldi R20,8
ldi R21,30
ldi R22,17
ldi R23,0
movw R2,R16
movw R4,R18
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
rjmp L68
L67:
.dbline 177
; else if(r>325400)
ldi R20,24
ldi R21,247
ldi R22,4
ldi R23,0
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
cp R20,R2
cpc R21,R3
cpc R22,R4
cpc R23,R5
brge L69
.dbline 178
; temper=-4*r-4840;
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
ldi R20,252
ldi R21,255
ldi R22,255
ldi R23,255
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
rcall empy32s
ldi R20,232
ldi R21,18
ldi R22,0
ldi R23,0
movw R2,R16
movw R4,R18
sub R2,R20
sbc R3,R21
sbc R4,R22
sbc R5,R23
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
rjmp L70
L69:
.dbline 179
; else if(r>189400)
ldi R20,216
ldi R21,227
ldi R22,2
ldi R23,0
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
cp R20,R2
cpc R21,R3
cpc R22,R4
cpc R23,R5
brge L71
.dbline 180
; temper=-8*r+1113900;
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
ldi R20,248
ldi R21,255
ldi R22,255
ldi R23,255
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
rcall empy32s
ldi R20,44
ldi R21,255
ldi R22,16
ldi R23,0
movw R2,R16
movw R4,R18
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
rjmp L72
L71:
.dbline 181
; else if(r>146350)
ldi R20,174
ldi R21,59
ldi R22,2
ldi R23,0
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
cp R20,R2
cpc R21,R3
cpc R22,R4
cpc R23,R5
brge L73
.dbline 182
; temper=-10*r+1674800;
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
ldi R20,246
ldi R21,255
ldi R22,255
ldi R23,255
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
rcall empy32s
ldi R20,48
ldi R21,142
ldi R22,25
ldi R23,0
movw R2,R16
movw R4,R18
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
rjmp L74
L73:
.dbline 183
; else if(r>70670)
ldi R20,14
ldi R21,20
ldi R22,1
ldi R23,0
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
cp R20,R2
cpc R21,R3
cpc R22,R4
cpc R23,R5
brge L75
.dbline 184
; temper=-20*r+3068600;
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
ldi R20,236
ldi R21,255
ldi R22,255
ldi R23,255
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
rcall empy32s
ldi R20,184
ldi R21,210
ldi R22,46
ldi R23,0
movw R2,R16
movw R4,R18
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
rjmp L76
L75:
.dbline 185
; else if(r>36415)
ldi R20,63
ldi R21,142
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
cp R20,R2
cpc R21,R3
cpc R22,R4
cpc R23,R5
brge L77
.dbline 186
; temper=-40*r+4771000;
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
ldi R20,216
ldi R21,255
ldi R22,255
ldi R23,255
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
rcall empy32s
ldi R20,184
ldi R21,204
ldi R22,72
ldi R23,0
movw R2,R16
movw R4,R18
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
rjmp L78
L77:
.dbline 187
; else if(r>19855)
ldi R20,143
ldi R21,77
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
cp R20,R2
cpc R21,R3
cpc R22,R4
cpc R23,R5
brge L79
.dbline 188
; temper=-90*r+6482000;
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
ldi R20,166
ldi R21,255
ldi R22,255
ldi R23,255
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
rcall empy32s
ldi R20,80
ldi R21,232
ldi R22,98
ldi R23,0
movw R2,R16
movw R4,R18
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
rjmp L80
L79:
.dbline 189
; else if(r>11370)
ldi R20,106
ldi R21,44
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
cp R20,R2
cpc R21,R3
cpc R22,R4
cpc R23,R5
brge L81
.dbline 190
; temper=-180*r+8199400;
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
ldi R20,76
ldi R21,255
ldi R22,255
ldi R23,255
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
rcall empy32s
ldi R20,232
ldi R21,28
ldi R22,125
ldi R23,0
movw R2,R16
movw R4,R18
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
rjmp L82
L81:
.dbline 191
; else if(r>5786)
ldi R20,154
ldi R21,22
ldi R22,0
ldi R23,0
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
cp R20,R2
cpc R21,R3
cpc R22,R4
cpc R23,R5
brge L83
.dbline 192
; temper=-360*r+10213000;
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
ldi R20,152
ldi R21,254
ldi R22,255
ldi R23,255
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
rcall empy32s
ldi R20,136
ldi R21,214
ldi R22,155
ldi R23,0
movw R2,R16
movw R4,R18
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
rjmp L84
L83:
.dbline 194
; else
; temper=-890*r+13095000;
movw R30,R28
ldd R2,z+8
ldd R3,z+9
ldd R4,z+10
ldd R5,z+11
ldi R20,134
ldi R21,252
ldi R22,255
ldi R23,255
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R20
movw R18,R22
rcall empy32s
ldi R20,88
ldi R21,208
ldi R22,199
ldi R23,0
movw R2,R16
movw R4,R18
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
L84:
L82:
L80:
L78:
L76:
L74:
L72:
L70:
L68:
L65:
.dbline 195
; return temper;
movw R30,R28
ldd R16,z+0
ldd R17,z+1
ldd R18,z+2
ldd R19,z+3
.dbline -2
L63:
adiw R28,4
rcall pop_gset2
adiw R28,4
.dbline 0 ; func end
ret
.dbsym l temper 0 L
.dbsym l r 8 L
.dbend
.dbfunc e ad_convert _ad_convert fV
; i -> R10,R11
; r -> y+0
; temp -> R12,R13
; vdin -> R12,R13
; vcc -> R10,R11
.even
_ad_convert::
rcall push_gset4
sbiw R28,4
.dbline -1
.dbline 200
; }
;
; //AD转换
; void ad_convert(void)
; {
.dbline 202
;
; int i=0,vcc,vdin,temp;
clr R10
clr R11
.dbline 204
; long r;
; adinit();
rcall _adinit
.dbline 205
; vcc=vcon(1024);//获得Vcc真实电压
ldi R16,0
ldi R17,4
ldi R18,0
ldi R19,0
rcall _vcon
movw R10,R16
.dbline 206
; vdin=vcon((long)AdcConvertDin());//获得ACD4的电压值
rcall _AdcConvertDin
clr R18
clr R19
rcall _vcon
movw R12,R16
.dbline 210
; //热敏电阻Rf阻值的计算:(R0是测量端的电阻,是4.7k)
; //根据Vin/R0=(Avcc-Vin)/Rf得出
; //Rf=(Avcc-Vin)*R0/Vin
; r=((((long)vcc-(long)vdin)*47000)/(long)vdin)/10;
movw R2,R12
clr R4
sbrc R3,7
com R4
clr R5
sbrc R4,7
com R5
movw R6,R10
clr R8
sbrc R7,7
com R8
clr R9
sbrc R8,7
com R9
sub R6,R2
sbc R7,R3
sbc R8,R4
sbc R9,R5
ldi R20,152
ldi R21,183
ldi R22,0
ldi R23,0
st -y,R9
st -y,R8
st -y,R7
st -y,R6
movw R16,R20
movw R18,R22
rcall empy32s
movw R2,R12
clr R4
sbrc R3,7
com R4
clr R5
sbrc R4,7
com R5
st -y,R5
st -y,R4
st -y,R3
st -y,R2
rcall div32s
ldi R20,10
ldi R21,0
ldi R22,0
ldi R23,0
st -y,R23
st -y,R22
st -y,R21
st -y,R20
rcall div32s
movw R30,R28
std z+0,R16
std z+1,R17
std z+2,R18
std z+3,R19
.dbline 211
; temp=temperature(r)/10000;
movw R30,R28
ldd R16,z+0
ldd R17,z+1
ldd R18,z+2
ldd R19,z+3
rcall _temperature
ldi R20,16
ldi R21,39
ldi R22,0
ldi R23,0
st -y,R23
st -y,R22
st -y,R21
st -y,R20
rcall div32s
movw R12,R16
.dbline 215
; // printf("vcc value is %d\r\n",vcc);
; //printf("temp value is %d\r\n",temp);
;
; Tx_Buf[2]=temp;
sts _Tx_Buf+2,R12
.dbline 216
; Tx_Buf[3]=temp>>8;
movw R2,R12
mov R2,R3
clr R3
sbrc R2,7
com R3
sts _Tx_Buf+3,R2
.dbline 217
; Tx_Buf[4]=vcc;
sts _Tx_Buf+4,R10
.dbline 218
; Tx_Buf[5]=vcc>>8;
movw R2,R10
mov R2,R3
clr R3
sbrc R2,7
com R3
sts _Tx_Buf+5,R2
.dbline -2
.dbline 219
; }
L85:
adiw R28,4
rcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r i 10 I
.dbsym l r 0 L
.dbsym r temp 12 I
.dbsym r vdin 12 I
.dbsym r vcc 10 I
.dbend
.area bss(ram, con, rel)
.dbfile E:\公司用\atmega8l\final\nrf905_send1\ad.c
_g_aAdValue:
.blkb 16
.dbsym s g_aAdValue _g_aAdValue A[16:8]i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -