📄 pidtext.s
字号:
; {
.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 + -