📄 ac20-1.s
字号:
cp R24,R16
cpc R25,R17
brlt L291
L290:
cpi R16,60
ldi R30,0
cpc R17,R30
brne X101
xjmp L264
X101:
xjmp L248
L291:
cpi R16,75
ldi R30,0
cpc R17,R30
brne X102
xjmp L268
X102:
xjmp L248
L289:
cpi R16,100
ldi R30,0
cpc R17,R30
brne X103
xjmp L274
X103:
ldi R24,100
ldi R25,0
cp R24,R16
cpc R25,R17
brlt L293
L292:
cpi R16,90
ldi R30,0
cpc R17,R30
brne X104
xjmp L272
X104:
xjmp L248
L293:
cpi R16,105
ldi R30,0
cpc R17,R30
brne X105
xjmp L276
X105:
cpi R16,105
ldi R30,0
cpc R17,R30
brge X106
xjmp L248
X106:
L294:
cpi R16,115
ldi R30,0
cpc R17,R30
brne X107
xjmp L278
X107:
xjmp L248
X89:
.dbline 328
; {
L249:
.dbline 329
; case 1:wide=close_inc_tab[0];break;
lds R2,_close_inc_tab
sts _wide,R2
.dbline 329
xjmp L248
L250:
.dbline 330
; case 5:wide=close_inc_tab[1];break;
lds R2,_close_inc_tab+1
sts _wide,R2
.dbline 330
xjmp L248
L252:
.dbline 331
; case 10:wide=close_inc_tab[2];break;
lds R2,_close_inc_tab+2
sts _wide,R2
.dbline 331
xjmp L248
L254:
.dbline 332
; case 20:wide=close_inc_tab[3];break;
lds R2,_close_inc_tab+3
sts _wide,R2
.dbline 332
xjmp L248
L256:
.dbline 333
; case 25:wide=close_inc_tab[4];break;
lds R2,_close_inc_tab+4
sts _wide,R2
.dbline 333
xjmp L248
L258:
.dbline 334
; case 35:wide=close_inc_tab[5];break;
lds R2,_close_inc_tab+5
sts _wide,R2
.dbline 334
xjmp L248
L260:
.dbline 335
; case 45:wide=close_inc_tab[6];break;
lds R2,_close_inc_tab+6
sts _wide,R2
.dbline 335
xjmp L248
L262:
.dbline 336
; case 50:wide=close_inc_tab[7];break;
lds R2,_close_inc_tab+7
sts _wide,R2
.dbline 336
xjmp L248
L264:
.dbline 337
; case 60:wide=close_inc_tab[8];break;
lds R2,_close_inc_tab+8
sts _wide,R2
.dbline 337
xjmp L248
L266:
.dbline 338
; case 65:wide=close_inc_tab[9];break;
lds R2,_close_inc_tab+9
sts _wide,R2
.dbline 338
xjmp L248
L268:
.dbline 339
; case 75:wide=close_inc_tab[10];break;
lds R2,_close_inc_tab+10
sts _wide,R2
.dbline 339
xjmp L248
L270:
.dbline 340
; case 85:wide=close_inc_tab[11];break;
lds R2,_close_inc_tab+11
sts _wide,R2
.dbline 340
xjmp L248
L272:
.dbline 341
; case 90:wide=close_inc_tab[12];break;
lds R2,_close_inc_tab+12
sts _wide,R2
.dbline 341
xjmp L248
L274:
.dbline 342
; case 100:wide=close_inc_tab[13];break;
lds R2,_close_inc_tab+13
sts _wide,R2
.dbline 342
xjmp L248
L276:
.dbline 343
; case 105:wide=close_inc_tab[14];break;
lds R2,_close_inc_tab+14
sts _wide,R2
.dbline 343
xjmp L248
L278:
.dbline 344
; case 115:wide=close_inc_tab[15];inc_dec_flag=0;break;
lds R2,_close_inc_tab+15
sts _wide,R2
.dbline 344
clr R2
sts _inc_dec_flag,R2
.dbline 344
.dbline 345
; default:break;
L248:
.dbline 347
; }
; OCR2=wide;
lds R2,_wide
out 0x23,R2
.dbline -2
L246:
.dbline 0 ; func end
ret
.dbsym r sp_pl 16 i
.dbend
.dbfunc e close_dec_speed _close_dec_speed fV
; sp_pl -> R16,R17
.even
_close_dec_speed::
.dbline -1
.dbline 353
; }
;
;
; /*==========关门时的减速子函数============*/
; void close_dec_speed(uint sp_pl)
; {
.dbline 354
; switch (sp_pl)
cpi R16,80
ldi R30,0
cpc R17,R30
brne X109
xjmp L310
X109:
ldi R24,80
ldi R25,0
cp R24,R16
cpc R25,R17
brge X110
xjmp L330
X110:
L329:
cpi R16,30
ldi R30,0
cpc R17,R30
brne X111
xjmp L302
X111:
ldi R24,30
ldi R25,0
cp R24,R16
cpc R25,R17
brlt L332
L331:
cpi R16,1
ldi R30,0
cpc R17,R30
brne X112
xjmp L298
X112:
cpi R16,1
ldi R30,0
cpc R17,R30
brge X113
xjmp L297
X113:
L333:
cpi R16,15
ldi R30,0
cpc R17,R30
brne X114
xjmp L300
X114:
xjmp L297
L332:
cpi R16,60
ldi R30,0
cpc R17,R30
brne X115
xjmp L306
X115:
ldi R24,60
ldi R25,0
cp R24,R16
cpc R25,R17
brlt L335
L334:
cpi R16,45
ldi R30,0
cpc R17,R30
brne X116
xjmp L304
X116:
xjmp L297
L335:
cpi R16,70
ldi R30,0
cpc R17,R30
brne X117
xjmp L308
X117:
xjmp L297
L330:
cpi R16,105
ldi R30,0
cpc R17,R30
brne X118
xjmp L316
X118:
ldi R24,105
ldi R25,0
cp R24,R16
cpc R25,R17
brlt L337
L336:
cpi R16,90
ldi R30,0
cpc R17,R30
brne X119
xjmp L312
X119:
cpi R16,90
ldi R30,0
cpc R17,R30
brge X120
xjmp L297
X120:
L338:
cpi R16,100
ldi R30,0
cpc R17,R30
brne X121
xjmp L314
X121:
xjmp L297
L337:
cpi R16,116
ldi R30,0
cpc R17,R30
brne X122
xjmp L322
X122:
cpi R16,119
ldi R30,0
cpc R17,R30
brne X123
xjmp L324
X123:
ldi R24,119
ldi R25,0
cp R24,R16
cpc R25,R17
brlt L340
L339:
cpi R16,110
ldi R30,0
cpc R17,R30
brne X124
xjmp L318
X124:
cpi R16,113
ldi R30,0
cpc R17,R30
brne X125
xjmp L320
X125:
xjmp L297
L340:
cpi R16,122
ldi R30,0
cpc R17,R30
brne X126
xjmp L326
X126:
cpi R16,125
ldi R30,0
cpc R17,R30
brne X127
xjmp L328
X127:
xjmp L297
X108:
.dbline 355
; {
L298:
.dbline 356
; case 1:wide=close_dec_tab[15];break;
lds R2,_close_dec_tab+15
sts _wide,R2
.dbline 356
xjmp L297
L300:
.dbline 357
; case 15:wide=close_dec_tab[14];break;
lds R2,_close_dec_tab+14
sts _wide,R2
.dbline 357
xjmp L297
L302:
.dbline 358
; case 30:wide=close_dec_tab[13];break;
lds R2,_close_dec_tab+13
sts _wide,R2
.dbline 358
xjmp L297
L304:
.dbline 359
; case 45:wide=close_dec_tab[12];break;
lds R2,_close_dec_tab+12
sts _wide,R2
.dbline 359
xjmp L297
L306:
.dbline 360
; case 60:wide=close_dec_tab[11];break;
lds R2,_close_dec_tab+11
sts _wide,R2
.dbline 360
xjmp L297
L308:
.dbline 361
; case 70:wide=close_dec_tab[10];break;
lds R2,_close_dec_tab+10
sts _wide,R2
.dbline 361
xjmp L297
L310:
.dbline 362
; case 80:wide=close_dec_tab[9];break;
lds R2,_close_dec_tab+9
sts _wide,R2
.dbline 362
xjmp L297
L312:
.dbline 363
; case 90:wide=close_dec_tab[8];break;
lds R2,_close_dec_tab+8
sts _wide,R2
.dbline 363
xjmp L297
L314:
.dbline 364
; case 100:wide=close_dec_tab[7];break;
lds R2,_close_dec_tab+7
sts _wide,R2
.dbline 364
xjmp L297
L316:
.dbline 365
; case 105:wide=close_dec_tab[6];break;
lds R2,_close_dec_tab+6
sts _wide,R2
.dbline 365
xjmp L297
L318:
.dbline 366
; case 110:wide=close_dec_tab[5];break;
lds R2,_close_dec_tab+5
sts _wide,R2
.dbline 366
xjmp L297
L320:
.dbline 367
; case 113:wide=close_dec_tab[4];break;
lds R2,_close_dec_tab+4
sts _wide,R2
.dbline 367
xjmp L297
L322:
.dbline 368
; case 116:wide=close_dec_tab[3];break;
lds R2,_close_dec_tab+3
sts _wide,R2
.dbline 368
xjmp L297
L324:
.dbline 369
; case 119:wide=close_dec_tab[2];break;
lds R2,_close_dec_tab+2
sts _wide,R2
.dbline 369
xjmp L297
L326:
.dbline 370
; case 122:wide=close_dec_tab[1];break;
lds R2,_close_dec_tab+1
sts _wide,R2
.dbline 370
xjmp L297
L328:
.dbline 371
; case 125:wide=close_dec_tab[0];inc_dec_flag=0;break;
lds R2,_close_dec_tab
sts _wide,R2
.dbline 371
clr R2
sts _inc_dec_flag,R2
.dbline 371
.dbline 372
; default:break;
L297:
.dbline 374
; }
; OCR2=wide;
lds R2,_wide
out 0x23,R2
.dbline -2
L295:
.dbline 0 ; func end
ret
.dbsym r sp_pl 16 i
.dbend
.dbfunc e close_down_speed _close_down_speed fV
.area func_lit(rom, con, rel)
L375:
.word `L344
.word `L346
.word `L348
.word `L350
.word `L352
.word `L354
.word `L356
.word `L358
.word `L360
.word `L362
.word `L364
.word `L366
.word `L368
.word `L370
.word `L372
.word `L374
.area text(rom, con, rel)
.dbfile d:\MYDOCU~1\ac20-1\ac20-1.c
; sp_pl -> R20,R21
.even
_close_down_speed::
xcall push_gset1
movw R20,R16
.dbline -1
.dbline 379
; }
;
; /*==========关门突然撞人时的减速子函数===========*/
; void close_down_speed(uint sp_pl)
; {
.dbline 380
; switch (sp_pl)
cpi R20,1
ldi R30,0
cpc R21,R30
brge X129
xjmp L343
X129:
ldi R24,16
ldi R25,0
cp R24,R20
cpc R25,R21
brge X130
xjmp L343
X130:
ldi R16,2
ldi R17,0
movw R18,R20
xcall empy16s
movw R30,R16
ldi R24,<L375-2
ldi R25,>L375-2
add R30,R24
adc R31,R25
lpm R0,Z+
lpm R1,Z
movw R30,R0
ijmp
X128:
.dbline 381
; {
L344:
.dbline 382
; case 1:wide=close_dec_tab[15];break;
lds R2,_close_dec_tab+15
sts _wide,R2
.dbline 382
xjmp L343
L346:
.dbline 383
; case 2:wide=close_dec_tab[14];break;
lds R2,_close_dec_tab+14
sts _wide,R2
.dbline 383
xjmp L343
L348:
.dbline 384
; case 3:wide=close_dec_tab[13];break;
lds R2,_close_dec_tab+13
sts _wide,R2
.dbline 384
xjmp L343
L350:
.dbline 385
; case 4:wide=close_dec_tab[12];break;
lds R2,_close_dec_tab+12
sts _wide,R2
.dbline 385
xjmp L343
L352:
.dbline 386
; case 5:wide=close_dec_tab[11];break;
lds R2,_close_dec_tab+11
sts _wide,R2
.dbline 386
xjmp L343
L354:
.dbline 387
; case 6:wide=close_dec_tab[10];break;
lds R2,_close_dec_tab+10
sts _wide,R2
.dbline 387
xjmp L343
L356:
.dbline 388
; case 7:wide=close_dec_tab[9];break;
lds R2,_close_dec_tab+9
sts _wide,R2
.dbline 388
xjmp L343
L358:
.dbline 389
; case 8:wide=close_dec_tab[8];break;
lds R2,_close_dec_tab+8
sts _wide,R2
.dbline 389
xjmp L343
L360:
.dbline 390
; case 9:wide=close_dec_tab[7];break;
lds R2,_close_dec_tab+7
sts _wide,R2
.dbline 390
xjmp L343
L362:
.dbline 391
; case 10:wide=close_dec_tab[6];break;
lds R2,_close_dec_tab+6
sts _wide,R2
.dbline 391
xjmp L343
L364:
.dbline 392
; case 11:wide=close_dec_tab[5];break;
lds R2,_close_dec_tab+5
sts _wide,R2
.dbline 392
xjmp L343
L366:
.dbline 393
; case 12:wide=close_dec_tab[4];break;
lds R2,_close_dec_tab+4
sts _wide,R2
.dbline 393
xjmp L343
L368:
.dbline 394
; case 13:wide=close_dec_tab[3];break;
lds R2,_close_dec_tab+3
sts _wide,R2
.dbline 394
xjmp L343
L370:
.dbline 395
; case 14:wide=close_dec_tab[2];break;
lds R2,_close_dec_tab+2
sts _wide,R2
.dbline 395
xjmp L343
L372:
.dbline 396
; case 15:wide=close_dec_tab[1];break;
lds R2,_close_dec_tab+1
sts _wide,R2
.dbline 396
xjmp L343
L374:
.dbline 397
; case 16:wide=close_dec_tab[0];inc_dec_flag=0;break;
lds R2,_close_dec_tab
sts _wide,R2
.dbline 397
clr R2
sts _inc_dec_flag,R2
.dbline 397
.dbline 398
; default:break;
L343:
.dbline 400
; }
; OCR2=wide;
lds R2,_wide
out 0x23,R2
.dbline -2
L341:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r sp_pl 20 i
.dbend
.dbfunc e normal_work _normal_work fV
.even
_normal_work::
.dbline -1
.dbline 406
; }
;
;
; /*======待机状态(status=40)时的正常工作子函数=======*/
; void normal_work(void)
; {
.dbline 407
; if(TANTE1==0)
sbic 0x13,6
rjmp L378
.dbline 408
; {delay(30);
.dbline 408
ldi R16,30
ldi R17,0
xcall _delay
.dbline 409
; if(TANTE1==0)tante_flag=1;
sbic 0x13,6
rjmp L379
.dbline 409
ldi R24,1
sts _tante_flag,R24
.dbline 410
; }
xjmp L379
L378:
.dbline 411
; else tante_flag=0;
clr R2
sts _tante_flag,R2
L379:
.dbline 413
; //************************
; if((PIND&0x02)==0)
sbic 0x10,1
rjmp L382
.dbline 414
; {delay(30);
.dbline 414
ldi R16,30
ldi R17,0
xcall _delay
.dbline 415
; if((PIND&0x02)==0)openflag=HALF;
sbic 0x10,1
rjmp L383
.dbline 415
clr R2
sts _openflag,R2
.dbline 416
; }
xjmp L383
L382:
.dbline 417
; else openflag=ALL;
ldi R24,1
sts _openflag,R24
L383:
.dbline 419
; //***************************
; if((PIND&0x10)==0)
sbic 0x10,4
rjmp L386
.dbline 420
; {delay(30);
.dbline 420
ldi R16,30
ldi R17,0
xcall _delay
.dbline 421
; if((PIND&0x10)==0)openstop=1;
sbic 0x10,4
rjmp L387
.dbline 421
ldi R24,1
sts _openstop,R24
.dbline 422
; }
xjmp L387
L386:
.dbline 423
; else openstop=0;
clr R2
sts _openstop,R2
L387:
.dbline 424
; if(openflag==ALL)
lds R24,_openflag
cpi R24,1
brne L390
.dbline 425
; {allchangdu=allchangdu_x;
.dbline 425
lds R2,_allchangdu_x
lds R3,_allchangdu_x+1
sts _allchangdu+1,R3
sts _allchangdu,R2
.dbline 426
; st_changdu=allchangdu;}
lds R2,_allchangdu
lds R3,_allchangdu+1
sts _st_changdu+1,R3
sts _st_changdu,R2
.dbline 426
xjmp L391
L390:
.dbline 428
; else
; {allchangdu=(allchangdu_x/2)+30;
.dbline 428
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -