⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad.s

📁 嵌入式单片机控制温度传感的无线收发方案!
💻 S
📖 第 1 页 / 共 2 页
字号:
	.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 + -