📄 main.s
字号:
movw R24,R28
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
clr R4
clr R5
movw R30,R28
subi R30,188 ; addi 68
sbci R31,255
ldd R6,z+0
ldd R7,z+1
ldd R8,z+2
ldd R9,z+3
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
movw R30,R28
subi R30,188 ; addi 68
sbci R31,255
std z+0,R6
std z+1,R7
std z+2,R8
std z+3,R9
L36:
.dbline 246
movw R30,R28
subi R30,184 ; addi 72
sbci R31,255
ldd R0,z+0
inc R0
movw R30,R28
subi R30,184 ; addi 72
sbci R31,255
std z+0,R0
L38:
.dbline 246
movw R30,R28
subi R30,184 ; addi 72
sbci R31,255
ldd R24,z+0
cpi R24,33
brsh X2
xjmp L35
X2:
.dbline 248
; sum += value_buf[count];
; return (sum/(N-2));
ldi R24,5
ldi R25,0
movw R30,R28
subi R30,188 ; addi 68
sbci R31,255
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R24
movw R16,R2
movw R18,R4
xcall lsr32
.dbline -2
L17:
adiw R28,63
adiw R28,10 ; offset = 73
xcall pop_gset5x
.dbline 0 ; func end
ret
.dbsym l sum 68 l
.dbsym l count 72 c
.dbsym r temp 10 i
.dbsym r j 12 c
.dbsym l value_buf 0 A[68:34]i
.dbsym r i 14 c
.dbend
.dbfunc e AdAverageT _AdAverageT fi
; sum -> y+40
; count -> y+44
; temp -> R10,R11
; j -> R12
; value_buf -> y+0
; i -> R14
.even
_AdAverageT::
xcall push_gset5x
sbiw R28,45
.dbline -1
.dbline 252
; }
;
; unsigned int AdAverageT(void)
; {
.dbline 256
; unsigned char count,i,j;
; unsigned int value_buf[20];
; unsigned int temp;
; unsigned long sum=0;
ldi R24,0
ldi R25,0
ldi R26,0
ldi R27,0
movw R30,R28
std z+40,R24
std z+41,R25
std z+42,R26
std z+43,R27
.dbline 257
; for (count=0;count<20;count++)
clr R0
std y+44,R0
xjmp L43
L40:
.dbline 258
.dbline 259
xcall _AdAverage
movw R2,R16
ldi R24,2
ldd R0,y+44
mul R24,R0
movw R30,R0
movw R24,R28
add R30,R24
adc R31,R25
std z+1,R3
std z+0,R2
.dbline 261
L41:
.dbline 257
ldd R0,y+44
inc R0
std y+44,R0
L43:
.dbline 257
ldd R24,y+44
cpi R24,20
brlo L40
.dbline 262
; {
; value_buf[count] = AdAverage();
;
; }
; for (j=0;j<20-1;j++)
clr R12
xjmp L47
L44:
.dbline 263
; {
.dbline 264
; for (i=0;i<20-j;i++)
clr R14
xjmp L51
L48:
.dbline 265
; {
.dbline 266
; if ( value_buf[i]>value_buf[i+1] )
ldi R24,2
mul R24,R14
movw R24,R28
adiw R24,2
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
movw R24,R28
movw R30,R0
add R30,R24
adc R31,R25
ldd R4,z+0
ldd R5,z+1
cp R2,R4
cpc R3,R5
brsh L52
.dbline 267
; {
.dbline 268
; temp = value_buf[i];
ldi R24,2
mul R24,R14
movw R30,R0
movw R24,R28
add R30,R24
adc R31,R25
ldd R10,z+0
ldd R11,z+1
.dbline 269
; value_buf[i] = value_buf[i+1];
ldi R24,2
mul R24,R14
movw R24,R28
adiw R24,2
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
movw R24,R28
movw R30,R0
add R30,R24
adc R31,R25
std z+1,R3
std z+0,R2
.dbline 270
; value_buf[i+1] = temp;
ldi R24,2
mul R24,R14
movw R30,R0
movw R24,R28
adiw R24,2
add R30,R24
adc R31,R25
std z+1,R11
std z+0,R10
.dbline 271
; }
L52:
.dbline 272
L49:
.dbline 264
inc R14
L51:
.dbline 264
ldi R24,20
sub R24,R12
cp R14,R24
brsh X3
xjmp L48
X3:
.dbline 273
L45:
.dbline 262
inc R12
L47:
.dbline 262
mov R24,R12
cpi R24,19
brsh X4
xjmp L44
X4:
.dbline 274
; }
; }
; for(count=1;count<20-1;count++)
clr R0
inc R0
std y+44,R0
xjmp L60
L57:
.dbline 275
ldi R24,2
ldd R0,y+44
mul R24,R0
movw R30,R0
movw R24,R28
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
clr R4
clr R5
movw R30,R28
ldd R6,z+40
ldd R7,z+41
ldd R8,z+42
ldd R9,z+43
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
movw R30,R28
std z+40,R6
std z+41,R7
std z+42,R8
std z+43,R9
L58:
.dbline 274
ldd R0,y+44
inc R0
std y+44,R0
L60:
.dbline 274
ldd R24,y+44
cpi R24,19
brlo L57
.dbline 276
; sum += value_buf[count];
; return (sum/(20-2));
ldi R24,18
ldi R25,0
ldi R26,0
ldi R27,0
movw R30,R28
ldd R2,z+40
ldd R3,z+41
ldd R4,z+42
ldd R5,z+43
st -y,R27
st -y,R26
st -y,R25
st -y,R24
movw R16,R2
movw R18,R4
xcall div32u
.dbline -2
L39:
adiw R28,45
xcall pop_gset5x
.dbline 0 ; func end
ret
.dbsym l sum 40 l
.dbsym l count 44 c
.dbsym r temp 10 i
.dbsym r j 12 c
.dbsym l value_buf 0 A[40:20]i
.dbsym r i 14 c
.dbend
.dbfunc e main _main fV
; k -> y+4
; j -> <dead>
; i -> <dead>
; temp_P -> R10,R11
; temp_N -> R14,R15
; temp_A -> y+11
; AD -> y+0
; temp -> R12,R13
.even
_main::
sbiw R28,13
.dbline -1
.dbline 286
; }
;
;
;
;
;
;
;
; //extern uint16 send_s1_data[32];
; void main(void){
.dbline 293
; unsigned long AD;
; unsigned int temp,i,j;
; unsigned char k[7];
; unsigned int temp_A,temp_N,temp_P;
;
; // delay(200);
; init_devices();
xcall _init_devices
xjmp L63
L62:
.dbline 296
;
;
; while(1){
L65:
.dbline 298
; begin:
; AD = AdAverageT();
xcall _AdAverageT
movw R2,R16
clr R4
clr R5
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
.dbline 307
;
; // AD = (AD*330)/125; //获得现时放大后的电压值,mv
;
; // AD = (AD*201)/1000; //电压值
;
; // AD = (AD*2571)/1000 ; //电阻值
;
; // 100RPT = (AD*100*RA*RH)/(AD的分辨率*RB)
; AD = (AD*257127)/10000; //真实AD值
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
ldi R24,103
ldi R25,236
ldi R26,3
ldi R27,0
st -y,R5
st -y,R4
st -y,R3
st -y,R2
movw R16,R24
movw R18,R26
xcall empy32u
ldi R24,16
ldi R25,39
ldi R26,0
ldi R27,0
st -y,R27
st -y,R26
st -y,R25
st -y,R24
xcall div32u
movw R30,R28
std z+0,R16
std z+1,R17
std z+2,R18
std z+3,R19
.dbline 309
;
; temp = 0;
clr R12
clr R13
xjmp L67
L66:
.dbline 310
; while (AD > PT100_TAB[temp]){
.dbline 311
; temp++;
movw R24,R12
adiw R24,1
movw R12,R24
.dbline 312
; if(410==temp){
cpi R24,154
ldi R30,1
cpc R25,R30
brne L69
.dbline 312
.dbline 313
; TransmitByte('X');
ldi R16,88
xcall _TransmitByte
.dbline 314
; TransmitByte('X');
ldi R16,88
xcall _TransmitByte
.dbline 315
; TransmitByte('X');
ldi R16,88
xcall _TransmitByte
.dbline 316
; TransmitByte('X');
ldi R16,88
xcall _TransmitByte
.dbline 317
; TransmitByte('\n');
ldi R16,10
xcall _TransmitByte
.dbline 318
; goto begin;
xjmp L65
L69:
.dbline 320
L67:
.dbline 310
ldi R16,2
ldi R17,0
movw R18,R12
xcall empy16s
movw R30,R16
ldi R24,<_PT100_TAB
ldi R25,>_PT100_TAB
add R30,R24
adc R31,R25
lpm R2,Z+
lpm R3,Z
clr R4
clr R5
movw R30,R28
ldd R6,z+0
ldd R7,z+1
ldd R8,z+2
ldd R9,z+3
cp R2,R6
cpc R3,R7
cpc R4,R8
cpc R5,R9
brsh X7
xjmp L66
X7:
.dbline 321
; }
; }
; temp--; //实际温度整数部分
movw R24,R12
sbiw R24,1
movw R12,R24
.dbline 323
;
; temp_A = PT100_TAB[temp+1]-PT100_TAB[temp];
ldi R16,2
ldi R17,0
movw R18,R24
xcall empy16s
movw R30,R16
ldi R24,<_PT100_TAB
ldi R25,>_PT100_TAB
add R30,R24
adc R31,R25
lpm R0,Z+
lpm R1,Z
movw R30,R0
movw R18,R12
subi R18,255 ; offset = 1
sbci R19,255
ldi R16,2
ldi R17,0
xcall empy16s
movw R26,R16
ldi R24,<_PT100_TAB
ldi R25,>_PT100_TAB
add R26,R24
adc R27,R25
st -y,R31
st -y,R30
movw R30,R26
lpm R26,Z+
lpm R27,Z
ld R30,y+
ld R31,y+
sub R26,R30
sbc R27,R31
std y+12,R27
std y+11,R26
.dbline 324
; temp_N = AD -PT100_TAB[temp];
ldi R16,2
ldi R17,0
movw R18,R12
xcall empy16s
movw R30,R16
ldi R24,<_PT100_TAB
ldi R25,>_PT100_TAB
add R30,R24
adc R31,R25
lpm R2,Z+
lpm R3,Z
clr R4
clr R5
movw R30,R28
ldd R6,z+0
ldd R7,z+1
ldd R8,z+2
ldd R9,z+3
sub R6,R2
sbc R7,R3
sbc R8,R4
sbc R9,R5
movw R14,R6
.dbline 325
; temp_P = temp_N*10/temp_A;//实际温度小数部分
ldi R16,10
ldi R17,0
movw R18,R6
xcall empy16s
ldd R18,y+11
ldd R19,y+12
xcall div16u
movw R10,R16
.dbline 328
;
;
; if((temp%1000)/100){
ldi R18,1000
ldi R19,3
movw R16,R12
xcall mod16u
ldi R18,100
ldi R19,0
xcall div16u
cpi R16,0
cpc R16,R17
breq L71
X5:
.dbline 328
.dbline 329
; TransmitByte( (temp%1000)/100 +'0' );
ldi R18,1000
ldi R19,3
movw R16,R12
xcall mod16u
ldi R18,100
ldi R19,0
xcall div16u
subi R16,208 ; offset = 48
sbci R17,255
xcall _TransmitByte
.dbline 330
; }
L71:
.dbline 331
ldi R18,1000
ldi R19,3
movw R16,R12
xcall mod16u
ldi R18,100
ldi R19,0
xcall mod16u
ldi R18,10
ldi R19,0
xcall div16u
subi R16,208 ; offset = 48
sbci R17,255
xcall _TransmitByte
.dbline 332
ldi R18,1000
ldi R19,3
movw R16,R12
xcall mod16u
ldi R18,100
ldi R19,0
xcall mod16u
ldi R18,10
ldi R19,0
xcall mod16u
subi R16,208 ; offset = 48
sbci R17,255
xcall _TransmitByte
.dbline 333
ldi R16,46
xcall _TransmitByte
.dbline 334
ldi R18,10
ldi R19,0
movw R16,R10
xcall mod16u
subi R16,208 ; offset = 48
sbci R17,255
xcall _TransmitByte
.dbline 336
ldi R16,10
xcall _TransmitByte
.dbline 338
L63:
.dbline 296
xjmp L62
L73:
.dbline 340
L74:
.dbline 340
xjmp L73
X6:
.dbline -2
L61:
adiw R28,13
.dbline 0 ; func end
ret
.dbsym l k 4 A[7:7]c
.dbsym l j 1 i
.dbsym l i 1 i
.dbsym r temp_P 10 i
.dbsym r temp_N 14 i
.dbsym l temp_A 11 i
.dbsym l AD 0 l
.dbsym r temp 12 i
.dbend
.area bss(ram, con, rel)
.dbfile E:\avrwork3_pt100\main.c
_sendpro_bk::
.blkb 1
.dbsym e sendpro_bk _sendpro_bk c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -