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

📄 pidtext.s

📁 用ICC-AVR编译器编译适用与AVR系列单片机的PID库.
💻 S
📖 第 1 页 / 共 2 页
字号:
; 	  {
	.dbline 162
; 	   Ed=e_0-Ec;
	lds R12,_e_0
	lds R13,_e_0+1
	sub R12,R10
	sbc R13,R11
	.dbline 163
; 	   s_Ed=1;
	clr R0
	inc R0
	std y+9,R0
	.dbline 164
; 	  }
	.dbline 165
;    }
	.dbline 166
;  }
	rjmp L30
L29:
	.dbline 168
;  else
;  {
	.dbline 169
;     if (s_e_0==0)
	lds R2,_s_e_0
	tst R2
	brne L37
	.dbline 170
;    {
	.dbline 171
;    	  if (s_Ec==0)
	ldd R0,y+11
	tst R0
	brne L39
	.dbline 172
;  	  {
	.dbline 173
; 	   Ed=Ec-e_0;
	lds R2,_e_0
	lds R3,_e_0+1
	mov R12,R10
	mov R13,R11
	sub R12,R2
	sbc R13,R3
	.dbline 174
; 	   s_Ed=1;
	clr R0
	inc R0
	std y+9,R0
	.dbline 175
; 	  }
	rjmp L38
L39:
	.dbline 177
; 	  else
; 	  {
	.dbline 178
; 	   Ed=Ec+e_0;
	lds R2,_e_0
	lds R3,_e_0+1
	mov R12,R10
	mov R13,R11
	add R12,R2
	adc R13,R3
	.dbline 179
; 	   s_Ed=0;
	clr R0
	std y+9,R0
	.dbline 180
; 	  }
	.dbline 181
;    }
	rjmp L38
L37:
	.dbline 183
;    else
;    {
	.dbline 184
;    	  if (s_Ec==0)
	ldd R0,y+11
	tst R0
	brne L41
	.dbline 185
;  	  {
	.dbline 186
; 	  Ed=Ec+e_0;
	lds R2,_e_0
	lds R3,_e_0+1
	mov R12,R10
	mov R13,R11
	add R12,R2
	adc R13,R3
	.dbline 187
; 	  s_Ed=1;
	clr R0
	inc R0
	std y+9,R0
	.dbline 188
; 	  }
	rjmp L42
L41:
	.dbline 190
; 	  else
; 	  {
	.dbline 191
; 	   Ed=Ec-e_0;
	lds R2,_e_0
	lds R3,_e_0+1
	mov R12,R10
	mov R13,R11
	sub R12,R2
	sbc R13,R3
	.dbline 192
; 	   s_Ed=0;
	clr R0
	std y+9,R0
	.dbline 193
; 	  }
L42:
	.dbline 194
;    }
L38:
	.dbline 195
;  }  
L30:
	.dbline 197
; //Ee=Ed+e_2
;  if (s_Ed==0)
	ldd R0,y+9
	tst R0
	brne L43
	.dbline 198
;  {
	.dbline 199
;   if (s_e_2==0)
	lds R2,_s_e_2
	tst R2
	brne L45
	.dbline 200
;   {
	.dbline 201
;   Ee=Ed+e_2;
	lds R2,_e_2
	lds R3,_e_2+1
	mov R4,R12
	mov R5,R13
	add R4,R2
	adc R5,R3
	std y+3,R5
	std y+2,R4
	.dbline 202
;   }
	rjmp L44
L45:
	.dbline 204
;   else
;   {
	.dbline 205
	lds R2,_e_2
	lds R3,_e_2+1
	cp R12,R2
	cpc R13,R3
	brlo L47
	.dbline 205
	.dbline 205
	mov R4,R12
	mov R5,R13
	sub R4,R2
	sbc R5,R3
	std y+3,R5
	std y+2,R4
	.dbline 205
	rjmp L44
L47:
	.dbline 205
;   if (Ed>=e_2){Ee=Ed-e_2;}else{Ee=e_2-Ed;s_Ee=1;}
	.dbline 205
	lds R2,_e_2
	lds R3,_e_2+1
	sub R2,R12
	sbc R3,R13
	std y+3,R3
	std y+2,R2
	.dbline 205
	clr R0
	inc R0
	std y+12,R0
	.dbline 205
	.dbline 206
;   }
	.dbline 207
;  }
	rjmp L44
L43:
	.dbline 209
;  else
;  {
	.dbline 210
;   if (s_e_2==0)
	lds R2,_s_e_2
	tst R2
	brne L49
	.dbline 211
;   {
	.dbline 212
	lds R2,_e_2
	lds R3,_e_2+1
	cp R12,R2
	cpc R13,R3
	brlo L51
	.dbline 212
	.dbline 212
	mov R4,R12
	mov R5,R13
	sub R4,R2
	sbc R5,R3
	std y+3,R5
	std y+2,R4
	.dbline 212
	clr R0
	inc R0
	std y+12,R0
	.dbline 212
	rjmp L50
L51:
	.dbline 212
;   if (Ed>=e_2){Ee=Ed-e_2;s_Ee=1;}else{Ee=e_2-Ed;}
	.dbline 212
	lds R2,_e_2
	lds R3,_e_2+1
	sub R2,R12
	sbc R3,R13
	std y+3,R3
	std y+2,R2
	.dbline 212
	.dbline 213
;   }
	rjmp L50
L49:
	.dbline 215
;   else
;   {
	.dbline 216
;   Ee=Ed+e_2;s_Ee=1;
	lds R2,_e_2
	lds R3,_e_2+1
	mov R4,R12
	mov R5,R13
	add R4,R2
	adc R5,R3
	std y+3,R5
	std y+2,R4
	.dbline 216
	clr R0
	inc R0
	std y+12,R0
	.dbline 217
;   }
L50:
	.dbline 218
;  }
L44:
	.dbline 220
; //Ef=Kd*Ee
;  if (s_Ee==0)
	ldd R0,y+12
	tst R0
	brne L53
	.dbline 221
;  {
	.dbline 222
;   	Ef=Kd*Ee;
	ldd R18,y+2
	ldd R19,y+3
	lds R16,_Kd
	clr R17
	rcall mpy16s
	mov R10,R16
	mov R11,R17
	.dbline 223
;  }
	rjmp L54
L53:
	.dbline 225
;  else
;  {
	.dbline 226
;    Ef=Kd*Ee;
	ldd R18,y+2
	ldd R19,y+3
	lds R16,_Kd
	clr R17
	rcall mpy16s
	mov R10,R16
	mov R11,R17
	.dbline 227
;    s_Ef=1;
	clr R8
	inc R8
	.dbline 228
;  }
L54:
	.dbline 230
; //Eg=Ea+Eb
; if (s_Ea==0)
	ldd R0,y+8
	tst R0
	brne L55
	.dbline 231
;  {
	.dbline 232
;   if (s_Eb==0)
	ldd R0,y+10
	tst R0
	brne L57
	.dbline 233
;   {
	.dbline 234
;   Eg=Ea+Eb;
	mov R12,R22
	mov R13,R23
	add R12,R14
	adc R13,R15
	.dbline 235
;   }
	rjmp L56
L57:
	.dbline 237
;   else
;   {
	.dbline 238
	cp R22,R14
	cpc R23,R15
	brlo L59
	.dbline 238
	.dbline 238
	mov R12,R22
	mov R13,R23
	sub R12,R14
	sbc R13,R15
	.dbline 238
	rjmp L56
L59:
	.dbline 238
;   if (Ea>=Eb){Eg=Ea-Eb;}else{Eg=Eb-Ea;s_Eg=1;}
	.dbline 238
	mov R12,R14
	mov R13,R15
	sub R12,R22
	sbc R13,R23
	.dbline 238
	clr R0
	inc R0
	std y+13,R0
	.dbline 238
	.dbline 239
;   }
	.dbline 240
;  }
	rjmp L56
L55:
	.dbline 242
;  else
;  {
	.dbline 243
;   if (s_Eb==0)
	ldd R0,y+10
	tst R0
	brne L61
	.dbline 244
;   {
	.dbline 245
	cp R22,R14
	cpc R23,R15
	brlo L63
	.dbline 245
	.dbline 245
	mov R12,R22
	mov R13,R23
	sub R12,R14
	sbc R13,R15
	.dbline 245
	clr R0
	inc R0
	std y+13,R0
	.dbline 245
	rjmp L62
L63:
	.dbline 245
;   if (Ea>=Eb){Eg=Ea-Eb;s_Eg=1;}else{Eg=Eb-Ea;}
	.dbline 245
	mov R12,R14
	mov R13,R15
	sub R12,R22
	sbc R13,R23
	.dbline 245
	.dbline 246
;   }
	rjmp L62
L61:
	.dbline 248
;   else
;   {
	.dbline 249
;   Eg=Ea+Eb;s_Eg=1;
	mov R12,R22
	mov R13,R23
	add R12,R14
	adc R13,R15
	.dbline 249
	clr R0
	inc R0
	std y+13,R0
	.dbline 250
;   }
L62:
	.dbline 251
;  }
L56:
	.dbline 253
; //Eh=Eg+Ef
; if (s_Eg==0)
	ldd R0,y+13
	tst R0
	brne L65
	.dbline 254
;  {
	.dbline 255
;   if (s_Ef==0)
	tst R8
	brne L67
	.dbline 256
;   {
	.dbline 257
;   Eh=Eg+Ef;
	mov R2,R12
	mov R3,R13
	add R2,R10
	adc R3,R11
	std y+5,R3
	std y+4,R2
	.dbline 258
;   }
	rjmp L66
L67:
	.dbline 260
;   else
;   {
	.dbline 261
	cp R12,R10
	cpc R13,R11
	brlo L69
	.dbline 261
	.dbline 261
	mov R2,R12
	mov R3,R13
	sub R2,R10
	sbc R3,R11
	std y+5,R3
	std y+4,R2
	.dbline 261
	rjmp L66
L69:
	.dbline 261
;   if (Eg>=Ef){Eh=Eg-Ef;}else{Eh=Ef-Eg;s_Eh=1;}
	.dbline 261
	mov R2,R10
	mov R3,R11
	sub R2,R12
	sbc R3,R13
	std y+5,R3
	std y+4,R2
	.dbline 261
	clr R6
	inc R6
	.dbline 261
	.dbline 262
;   }
	.dbline 263
;  }
	rjmp L66
L65:
	.dbline 265
;  else
;  {
	.dbline 266
;   if (s_Ef==0)
	tst R8
	brne L71
	.dbline 267
;   {
	.dbline 268
	cp R12,R10
	cpc R13,R11
	brlo L73
	.dbline 268
	.dbline 268
	mov R2,R12
	mov R3,R13
	sub R2,R10
	sbc R3,R11
	std y+5,R3
	std y+4,R2
	.dbline 268
	clr R6
	inc R6
	.dbline 268
	rjmp L72
L73:
	.dbline 268
;   if (Eg>=Ef){Eh=Eg-Ef;s_Eh=1;}else{Eh=Ef-Eg;}
	.dbline 268
	mov R2,R10
	mov R3,R11
	sub R2,R12
	sbc R3,R13
	std y+5,R3
	std y+4,R2
	.dbline 268
	.dbline 269
;   }
	rjmp L72
L71:
	.dbline 271
;   else
;   {
	.dbline 272
;   Eh=Eg+Ef;s_Eh=1;
	mov R2,R12
	mov R3,R13
	add R2,R10
	adc R3,R11
	std y+5,R3
	std y+4,R2
	.dbline 272
	clr R6
	inc R6
	.dbline 273
;   }
L72:
	.dbline 274
;  }
L66:
	.dbline 276
; //Ei=Kp*Eh
; if (s_Eh==0)
	tst R6
	brne L75
	.dbline 277
;  {
	.dbline 278
;   	Ei=Kp*Eh;
	ldd R18,y+4
	ldd R19,y+5
	lds R16,_Kp
	clr R17
	rcall mpy16s
	std y+1,R17
	std y+0,R16
	.dbline 279
;  }
	rjmp L76
L75:
	.dbline 281
;  else
;  {
	.dbline 282
;    Ei=Kp*Eh;
	ldd R18,y+4
	ldd R19,y+5
	lds R16,_Kp
	clr R17
	rcall mpy16s
	std y+1,R17
	std y+0,R16
	.dbline 283
;    s_Ei=1;
	ldi R20,1
	.dbline 284
;  }
L76:
	.dbline 286
; //PID_OutValue=PID_OutValue_1+Ei
;  if (s_Ei==0) 
	tst R20
	brne L77
	.dbline 287
;  {
	.dbline 288
;   Ej=PID_OutValue_1+Ei;
	ldd R2,y+0
	ldd R3,y+1
	lds R4,_PID_OutValue_1
	lds R5,_PID_OutValue_1+1
	add R4,R2
	adc R5,R3
	std y+7,R5
	std y+6,R4
	.dbline 289
	mov R24,R4
	mov R25,R5
	cpi R24,255
	ldi R30,3
	cpc R25,R30
	brlo L79
	.dbline 289
	.dbline 289
	ldi R24,1023
	ldi R25,3
	sts _PID_OutValue+1,R25
	sts _PID_OutValue,R24
	.dbline 289
	rjmp L78
L79:
	.dbline 289
;   if (Ej>=0x3ff){PID_OutValue=0x3ff;}else{PID_OutValue=Ej;}
	.dbline 289
	ldd R2,y+6
	ldd R3,y+7
	sts _PID_OutValue+1,R3
	sts _PID_OutValue,R2
	.dbline 289
	.dbline 290
;  }
	rjmp L78
L77:
	.dbline 292
;   else
;  {
	.dbline 293
	ldd R2,y+0
	ldd R3,y+1
	lds R4,_PID_OutValue_1
	lds R5,_PID_OutValue_1+1
	cp R4,R2
	cpc R5,R3
	brlo L81
	.dbline 293
	.dbline 293
	sub R4,R2
	sbc R5,R3
	sts _PID_OutValue+1,R5
	sts _PID_OutValue,R4
	.dbline 293
	rjmp L82
L81:
	.dbline 293
;  if(PID_OutValue_1>=Ei){PID_OutValue=PID_OutValue_1-Ei;}else{PID_OutValue=0;}
	.dbline 293
	clr R2
	clr R3
	sts _PID_OutValue+1,R3
	sts _PID_OutValue,R2
	.dbline 293
L82:
	.dbline 294
;  } 
L78:
	.dbline 297
; 
; //
;  PID_OutValue_1=PID_OutValue;
	lds R2,_PID_OutValue
	lds R3,_PID_OutValue+1
	sts _PID_OutValue_1+1,R3
	sts _PID_OutValue_1,R2
	.dbline 298
;  e_2=e_1;
	lds R2,_e_1
	lds R3,_e_1+1
	sts _e_2+1,R3
	sts _e_2,R2
	.dbline 299
;  s_e_2=s_e_1;
	lds R2,_s_e_1
	sts _s_e_2,R2
	.dbline 300
;  e_1=e_0;
	lds R2,_e_0
	lds R3,_e_0+1
	sts _e_1+1,R3
	sts _e_1,R2
	.dbline 301
;  s_e_1=s_e_0;
	lds R2,_s_e_0
	sts _s_e_1,R2
	.dbline -2
	.dbline 302
; }							 
L8:
	adiw R28,14
	rcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym l Ej 6 i
	.dbsym l Eh 4 i
	.dbsym l Ee 2 i
	.dbsym l Ei 0 i
	.dbsym r s_Ei 20 c
	.dbsym r s_Eh 6 c
	.dbsym l s_Eg 13 c
	.dbsym r s_Ef 8 c
	.dbsym l s_Ee 12 c
	.dbsym l s_Ec 11 c
	.dbsym l s_Eb 10 c
	.dbsym r Eg 12 i
	.dbsym r Ef 10 i
	.dbsym r Ed 12 i
	.dbsym r Eb 14 i
	.dbsym r Ea 22 i
	.dbsym l s_Ed 9 c
	.dbsym l s_Ea 8 c
	.dbsym r Ec 10 i
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 304
; void main(void)
; {
	.dbline 305
; read_PID_E2P_Value();
	rcall _read_PID_E2P_Value
	rjmp L85
L84:
	.dbline 307
	.dbline 308
	rcall _PID_Count
	.dbline 309
L85:
	.dbline 306
	rjmp L84
X1:
	.dbline -2
	.dbline 310
; while(1)
; { 
; PID_Count();
; }
; }
L83:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

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