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

📄 main.s

📁 原创
💻 S
📖 第 1 页 / 共 3 页
字号:
	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 + -