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

📄 main.s

📁 ATmega128和ads7864实现ATP闭环控制
💻 S
📖 第 1 页 / 共 4 页
字号:
	ldi R17,>L23
	xcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	xcall div32f
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 148
; 	
; 	ulNextF=dNextF*1000000;
	ldi R16,<L19
	ldi R17,>L19
	xcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	movw R30,R28
 ; stack offset 4
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	xcall empy32f
	movw R30,R28
	std z+16,R16
	std z+17,R17
	std z+18,R18
	std z+19,R19
	movw R30,R28
	ldd R2,z+16
	ldd R3,z+17
	ldd R4,z+18
	ldd R5,z+19
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	ldi R16,<L26
	ldi R17,>L26
	xcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	xcall cmp32f
	brlt L24
	movw R30,R28
	ldd R2,z+16
	ldd R3,z+17
	ldd R4,z+18
	ldd R5,z+19
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	ldi R16,<L26
	ldi R17,>L26
	xcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	xcall sub32f
	xcall fp2long
	movw R2,R16
	movw R4,R18
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,128
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+12,R2
	std z+13,R3
	std z+14,R4
	std z+15,R5
	xjmp L25
L24:
	movw R30,R28
	ldd R16,z+16
	ldd R17,z+17
	ldd R18,z+18
	ldd R19,z+19
	xcall fp2long
	movw R30,R28
	std z+12,R16
	std z+13,R17
	std z+14,R18
	std z+15,R19
L25:
	movw R30,R28
	ldd R2,z+12
	ldd R3,z+13
	ldd R4,z+14
	ldd R5,z+15
	movw R30,R28
	std z+8,R2
	std z+9,R3
	std z+10,R4
	std z+11,R5
	.dbline 149
; 	return ulNextF;
	movw R30,R28
	ldd R16,z+8
	ldd R17,z+9
	ldd R18,z+10
	ldd R19,z+11
	.dbline -2
L17:
	adiw R28,20
	xcall pop_gset2
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym l ulNextF 8 l
	.dbsym l dNowF 4 D
	.dbsym l dNextF 0 D
	.dbsym l dNowRad2 28 D
	.dbsym l ulNowF 24 l
	.dbend
	.dbfunc e main _main fV
;         ucFlag -> <dead>
;            dFy -> y+76
;              k -> <dead>
;              j -> <dead>
;            dEx -> y+72
;          dEy2T -> y+68
;          dEy1T -> y+64
;           ucFX -> R10
;           slEy -> y+60
;       dEyTotal -> y+56
;           ulFX -> y+52
;          dRad2 -> y+48
;      dDeltaRad -> y+44
;              i -> y+40
;            dEy -> y+36
;     dTotalData -> y+32
;           ulFY -> y+28
;       usADDATA -> y+20
;        dADDATA -> y+4
	.even
_main::
	sbiw R28,63
	sbiw R28,17  ; offset = 80
	.dbline -1
	.dbline 155
; }
; 
; 
; 
; void main(void)
; {
	.dbline 156
; 	u32	i=0xFFFFFF;
	ldi R20,255
	ldi R21,255
	ldi R22,255
	ldi R23,0
	movw R30,R28
	std z+40,R20
	std z+41,R21
	std z+42,R22
	std z+43,R23
	.dbline 176
; 	u16 j,k;
; 	u16 usADDATA[4];
; 	double dADDATA[4];
; 	double dEx,dEy;
; 	double dTotalData;
; 
; 	double dEy1T,dEy2T,dEyTotal;
; 
; 	double dDeltaRad,dRad2;
; 
; 	double dFy;
; 
; 	s32 slEy;
; 
; 	u32 ulFX,ulFY;
; 
; 	u8 ucFlag;
; 
; 
; 	u8 ucFX=99;
	ldi R24,99
	mov R10,R24
	.dbline 179
; 
; 
; 	SysInit();
	xcall _SysInit
	.dbline 182
; 
; 	
; 	ulFX=45000;
	ldi R20,200
	ldi R21,175
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+52,R20
	std z+53,R21
	std z+54,R22
	std z+55,R23
	.dbline 183
; 	ulFY=Fy0;
	ldi R20,58
	ldi R21,239
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+28,R20
	std z+29,R21
	std z+30,R22
	std z+31,R23
	.dbline 186
; 
; 
; 	ulFY=61000;
	ldi R20,72
	ldi R21,238
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+28,R20
	std z+29,R21
	std z+30,R22
	std z+31,R23
	.dbline 187
; 	OutputFrequency(ulFY,ulFX);
	movw R30,R28
	ldd R2,z+52
	ldd R3,z+53
	ldd R4,z+54
	ldd R5,z+55
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	movw R30,R28
	ldd R16,z+28
	ldd R17,z+29
	ldd R18,z+30
	ldd R19,z+31
	xcall _OutputFrequency
	.dbline 216
; 
; 	
; 	//ulFY=70000;
; 	//OutputFrequency3(ucFX);
; 
; /*
; 	ucFlag=0;
; 	while(1)
; 	{
; 		if(ucFlag)	
; 		{
; 			OutputFrequency2();
; 			ucFlag=0;
; 		}
; 		else						
; 		{
; 			OutputFrequency1();
; 			ucFlag=1;
; 		}
; 		delayus(200);
; 		delayus(100);
; 		//delayus(200);
; 		//delayus(200);
; 		//delayus(200);
; 		//delayus(200);
; 		//delayms(10);
; 	}
; 	*/
; 	delayms(10);
	ldi R16,10
	xcall _delayms
	xjmp L29
L28:
	.dbline 220
; 
; 	
; 	while(1)
; 	{
	.dbline 221
; 		NOP();
	nop
	.dbline 222
; 		delayms(3);
	ldi R16,3
	xcall _delayms
	.dbline 223
; 		usAD_GetData(usADDATA);
	movw R16,R28
	subi R16,236  ; offset = 20
	sbci R17,255
	xcall _usAD_GetData
	.dbline 234
; 		//dADDATA[0]=(double)usADDATA[0];
; 		//dADDATA[1]=(double)usADDATA[1];
; 		//dADDATA[2]=(double)usADDATA[2];
; 		//dADDATA[3]=(double)usADDATA[3];
; 		//dTotalData=dADDATA[QDA]+dADDATA[QDB]+dADDATA[QDC]+dADDATA[QDD];
; 		
; 
; 		//dEx=(dADDATA[QDA]+dADDATA[QDD]-dADDATA[QDB]-dADDATA[QDC])/dTotalData;
; 		//dEy=(dADDATA[QDA]+dADDATA[QDB]-dADDATA[QDC]-dADDATA[QDD])/dTotalData;
; 
; 		slEy=usADDATA[QDA];
	ldd R2,y+20
	ldd R3,y+21
	clr R4
	clr R5
	movw R30,R28
	std z+60,R2
	std z+61,R3
	std z+62,R4
	std z+63,R5
	.dbline 235
; 		slEy=slEy+usADDATA[QDB];
	ldd R2,y+22
	ldd R3,y+23
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+60
	ldd R7,z+61
	ldd R8,z+62
	ldd R9,z+63
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	movw R30,R28
	std z+60,R6
	std z+61,R7
	std z+62,R8
	std z+63,R9
	.dbline 236
; 		slEy=slEy-usADDATA[QDC];
	ldd R2,y+24
	ldd R3,y+25
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+60
	ldd R7,z+61
	ldd R8,z+62
	ldd R9,z+63
	sub R6,R2
	sbc R7,R3
	sbc R8,R4
	sbc R9,R5
	movw R30,R28
	std z+60,R6
	std z+61,R7
	std z+62,R8
	std z+63,R9
	.dbline 237
; 		slEy=slEy-usADDATA[QDD];
	ldd R2,y+26
	ldd R3,y+27
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+60
	ldd R7,z+61
	ldd R8,z+62
	ldd R9,z+63
	sub R6,R2
	sbc R7,R3
	sbc R8,R4
	sbc R9,R5
	movw R30,R28
	std z+60,R6
	std z+61,R7
	std z+62,R8
	std z+63,R9
	.dbline 239
; 		
; 		if(slEy!=0)
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+60
	ldd R3,z+61
	ldd R4,z+62
	ldd R5,z+63
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brne X2
	xjmp L34
X2:
	.dbline 240
; 		{
	.dbline 241
; 			if(slEy>0) 	
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+60
	ldd R3,z+61
	ldd R4,z+62
	ldd R5,z+63
	cp R20,R2
	cpc R21,R3
	cpc R22,R4
	cpc R23,R5
	brlt X3
	xjmp L36
X3:
	.dbline 242
; 			{	
	.dbline 243
; 				ulFY=ulFY+100;
	ldi R20,100
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+28
	ldd R3,z+29
	ldd R4,z+30
	ldd R5,z+31
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+28,R2
	std z+29,R3
	std z+30,R4
	std z+31,R5
	.dbline 244
; 				if(ulFY>70000)	ulFY=70000;
	ldi R20,112
	ldi R21,17
	ldi R22,1
	ldi R23,0
	movw R30,R28
	ldd R2,z+28
	ldd R3,z+29
	ldd R4,z+30
	ldd R5,z+31
	cp R20,R2
	cpc R21,R3
	cpc R22,R4
	cpc R23,R5
	brlo X4
	xjmp L37
X4:
	.dbline 244
	ldi R20,112
	ldi R21,17
	ldi R22,1
	ldi R23,0
	movw R30,R28
	std z+28,R20
	std z+29,R21
	std z+30,R22
	std z+31,R23
	.dbline 245
; 			}
	xjmp L37
L36:
	.dbline 247
; 			else 		
; 			{	
	.dbline 248
; 				ulFY=ulFY-100;
	ldi R20,100
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+28
	ldd R3,z+29
	ldd R4,z+30
	ldd R5,z+31
	sub R2,R20
	sbc R3,R21
	sbc R4,R22
	sbc R5,R23
	movw R30,R28
	std z+28,R2
	std z+29,R3
	std z+30,R4
	std z+31,R5
	.dbline 249
; 				if(ulFY<40000)	ulFY=40000;
	ldi R20,64
	ldi R21,156
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+28
	ldd R3,z+29
	ldd R4,z+30
	ldd R5,z+31
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brsh L40
	.dbline 249
	ldi R20,64
	ldi R21,156
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+28,R20
	std z+29,R21
	std z+30,R22
	std z+31,R23
L40:
	.dbline 250
; 			}
L37:
	.dbline 251
; 			OutputFrequency(ulFY,ulFX);
	movw R30,R28
	ldd R2,z+52
	ldd R3,z+53
	ldd R4,z+54
	ldd R5,z+55
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	movw R30,R28
	ldd R16,z+28
	ldd R17,z+29
	ldd R18,z+30
	ldd R19,z+31
	xcall _OutputFrequency
	.dbline 252
; 		}
L34:
	.dbline 254
	nop
	.dbline 255
	nop
	.dbline 256
L29:
	.dbline 219
	xjmp L28
L42:
	.dbline 260
; 		
; 		NOP();
; 		NOP();
; 	}
; 
; 
; 	while(1)
; 	{
	.dbline 261
; 		usAD_GetData(usADDATA);
	movw R16,R28
	subi R16,236  ; offset = 20
	sbci R17,255
	xcall _usAD_GetData
	.dbline 262
; 		if(usADDATA[QDD]>0x6FFF)	
	ldi R24,28671
	ldi R25,111
	ldd R2,y+26
	ldd R3,y+27
	cp R24,R2
	cpc R25,R3
	brsh L45
	.dbline 263
; 			ucFX=ucFX+1;
	inc R10
	xjmp L46
L45:
	.dbline 265
; 		else		//if(usADDATA[QDD]<10)					
; 			ucFX=ucFX-1;
	dec R10
L46:
	.dbline 266
	ldi R16,3
	xcall _delayms
	.dbline 267
	mov R16,R10
	xcall _ucHex2BCD
	xcall _OutputFrequency3
	.dbline 269
L43:
	.dbline 259
	xjmp L42
L48:
	.dbline 274
; 		delayms(3);
; 		OutputFrequency3(ucHex2BCD(ucFX));
; 
; 	}
; 
; 
; 	
; 	while(1)
; 	{
	.dbline 275
; 		usAD_GetData(usADDATA);
	movw R16,R28
	subi R16,236  ; offset = 20
	sbci R17,255
	xcall _usAD_GetData
	.dbline 276
; 		if(usADDATA[QDD]>100)	
	ldi R24,100
	ldi R25,0
	ldd R2,y+26
	ldd R3,y+27
	cp R24,R2
	cpc R25,R3
	brsh L51
	.dbline 277
; 			OutputFrequency2();
	xcall _OutputFrequency2
	xjmp L52
L51:
	.dbline 278
; 		else		if(usADDATA[QDD]<10)					
	ldd R24,y+26
	ldd R25,y+27
	cpi R24,10
	ldi R30,0
	cpc R25,R30
	brsh L54
	.dbline 279
; 			OutputFrequency1();
	xcall _OutputFrequency1
L54:
L52:
	.dbline 282
L49:
	.dbline 273
	xjmp L48
L57:
	.dbline 288
	.dbline 289
	xcall _OutputFrequency1
	.dbline 290
	ldi R16,255
	xcall _delay
	.dbline 291
	ldi R16,255
	xcall _delay
	.dbline 292
	xcall _OutputFrequency2
	.dbline 293
	ldi R16,255
	xcall _delay
	.dbline 294
	ldi R16,255
	xcall _delay
	.dbline 295
L58:
	.dbline 287
; 		//delayms(3);
; 
; 	}
; 
; 
; 
; 
; 	while(1)
	xjmp L57
X0:
	.dbline 303
; 	{
; 		OutputFrequency1();
; 		delay(0xFF);
; 		delay(0xFF);
; 		OutputFrequency2();
; 		delay(0xFF);
; 		delay(0xFF);
; 	}
; 
; 
; 
; 
; 
; 
; 	
; 	dEy1T=0;
	ldi R16,<L60
	ldi R17,>L60
	xcall lpm32
	movw R30,R28
	subi R30,192  ; addi 64
	sbci R31,255
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 304
; 	dEy2T=0;
	ldi R16,<L60
	ldi R17,>L60
	xcall lpm32
	movw R30,R28
	subi R30,188  ; addi 68
	sbci R31,255
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 305
; 	for(i=0;i<1000;i++)
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+40,R20
	std z+41,R21
	std z+42,R22
	std z+43,R23
	xjmp L64
L61:
	.dbline 306
	.dbline 307
	ldi R20,84
	ldi R21,236
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+28,R20
	std z+29,R21
	std z+30,R22
	std z+31,R23
	.dbline 308
	movw R30,R28
	ldd R2,z+52
	ldd R3,z+53
	ldd R4,z+54
	ldd R5,z+55
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	movw R30,R28
	ldd R16,z+28
	ldd R17,z+29
	ldd R18,z+30
	ldd R19,z+31
	xcall _OutputFrequency
	.dbline 309
	ldi R16,10
	xcall _delayms
	.dbline 310
	movw R16,R28
	subi R16,236  ; offset = 20
	sbci R17,255
	xcall _usAD_GetData
	.dbline 311
	ldi R16,<L18
	ldi R17,>L18
	xcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
 ; stack offset 4
	ldd R16,y+24
	ldd R17,y+25
	lsr R17
	ror R16
	xcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	xcall empy32fs
 ; stack offset 4
	ldd R16,y+24
	ldd R17,y+25
	andi R16,1
	andi R17,0
	xcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	xcall add32f
	movw R30,R28
	std z+4,R16
	std z+5,R17
	std z+6,R18
	std z+7,R19
	.dbline 312
	ldi R16,<L18
	ldi R17,>L18
	xcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
 ; stack offset 4
	ldd R16,y+26
	ldd R17,y+27
	lsr R17
	ror R16
	xcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	xcall empy32fs
 ; stack offset 4
	ldd R16,y+26
	ldd R17,y+27
	andi R16,1
	andi R17,0
	xcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	xcall add32f
	movw R30,R28
	std z+8,R16
	std z+9,R17
	std z+10,R18
	std z+11,R19
	.dbline 313
	ldi R16,<L18
	ldi R17,>L18
	xcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
 ; stack offset 4
	ldd R16,y+28
	ldd R17,y+29

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -