📄 ac20-1.lis
字号:
041C 30905900 lds R3,_round_cnt+1
0420 8215 cp R24,R2
0422 9305 cpc R25,R3
0424 08F0 brlo X22
0426 ABC0 xjmp L39
0428 X22:
0428 .dbline 204
0428 .dbline 204
0428 .dbline 204
0428 AAC0 xjmp L39
042A L50:
042A .dbline 205
042A ; case 60:if(round_cnt>100){/*reset*/}break;
042A 84E6 ldi R24,100
042C 90E0 ldi R25,0
042E 20905800 lds R2,_round_cnt
0432 30905900 lds R3,_round_cnt+1
0436 8215 cp R24,R2
0438 9305 cpc R25,R3
043A 08F0 brlo X23
043C A0C0 xjmp L39
043E X23:
043E .dbline 205
043E .dbline 205
043E .dbline 205
043E 9FC0 xjmp L39
0440 L53:
0440 .dbline 206
0440 ; case 70:if(round_cnt>100){/*reset*/}break;
0440 84E6 ldi R24,100
0442 90E0 ldi R25,0
0444 20905800 lds R2,_round_cnt
0448 30905900 lds R3,_round_cnt+1
044C 8215 cp R24,R2
044E 9305 cpc R25,R3
0450 08F0 brlo X24
0452 95C0 xjmp L39
0454 X24:
0454 .dbline 206
0454 .dbline 206
0454 .dbline 206
0454 94C0 xjmp L39
0456 L56:
0456 .dbline 208
0456 ; //开门慢速状态80时,间隔500ms,分二次判断撞墙后,转状态90
0456 ; case 80:{if((fst==0)&&(round_cnt>150))fst=1;
0456 .dbline 208
0456 20904900 lds R2,_fst
045A 2220 tst R2
045C 61F4 brne L57
045E 86E9 ldi R24,150
0460 90E0 ldi R25,0
0462 20905800 lds R2,_round_cnt
0466 30905900 lds R3,_round_cnt+1
046A 8215 cp R24,R2
046C 9305 cpc R25,R3
046E 18F4 brsh L57
0470 .dbline 208
0470 81E0 ldi R24,1
0472 80934900 sts _fst,R24
0476 L57:
0476 .dbline 209
0476 ; if((fst==2)&&(round_cnt>150))status=90;
0476 80914900 lds R24,_fst
047A 8230 cpi R24,2
047C 09F0 breq X25
047E 7FC0 xjmp L39
0480 X25:
0480 86E9 ldi R24,150
0482 90E0 ldi R25,0
0484 20905800 lds R2,_round_cnt
0488 30905900 lds R3,_round_cnt+1
048C 8215 cp R24,R2
048E 9305 cpc R25,R3
0490 08F0 brlo X26
0492 75C0 xjmp L39
0494 X26:
0494 .dbline 209
0494 8AE5 ldi R24,90
0496 80934C00 sts _status,R24
049A .dbline 210
049A ; }break;
049A .dbline 210
049A 71C0 xjmp L39
049C L61:
049C .dbline 212
049C ; //开门慢速状态85时,间隔500ms,分二次判断撞墙后,转状态90
049C ; case 85:{if((fst==0)&&(round_cnt>200))fst=1;
049C .dbline 212
049C 20904900 lds R2,_fst
04A0 2220 tst R2
04A2 61F4 brne L62
04A4 88EC ldi R24,200
04A6 90E0 ldi R25,0
04A8 20905800 lds R2,_round_cnt
04AC 30905900 lds R3,_round_cnt+1
04B0 8215 cp R24,R2
04B2 9305 cpc R25,R3
04B4 18F4 brsh L62
04B6 .dbline 212
04B6 81E0 ldi R24,1
04B8 80934900 sts _fst,R24
04BC L62:
04BC .dbline 213
04BC ; if((fst==2)&&(round_cnt>200))status=90;
04BC 80914900 lds R24,_fst
04C0 8230 cpi R24,2
04C2 09F0 breq X27
04C4 5CC0 xjmp L39
04C6 X27:
04C6 88EC ldi R24,200
04C8 90E0 ldi R25,0
04CA 20905800 lds R2,_round_cnt
04CE 30905900 lds R3,_round_cnt+1
04D2 8215 cp R24,R2
04D4 9305 cpc R25,R3
04D6 08F0 brlo X28
04D8 52C0 xjmp L39
04DA X28:
04DA .dbline 213
04DA 8AE5 ldi R24,90
04DC 80934C00 sts _status,R24
04E0 .dbline 214
04E0 ; }break;
04E0 .dbline 214
04E0 4EC0 xjmp L39
04E2 L66:
04E2 .dbline 216
04E2 ; //关门加速状态100时, 判断撞人后,转状态105
04E2 ; case 100:if(round_cnt>300){status=105;sp_pl=0;}break;
04E2 8CE2 ldi R24,300
04E4 91E0 ldi R25,1
04E6 20905800 lds R2,_round_cnt
04EA 30905900 lds R3,_round_cnt+1
04EE 8215 cp R24,R2
04F0 9305 cpc R25,R3
04F2 08F0 brlo X29
04F4 44C0 xjmp L39
04F6 X29:
04F6 .dbline 216
04F6 .dbline 216
04F6 89E6 ldi R24,105
04F8 80934C00 sts _status,R24
04FC .dbline 216
04FC 2224 clr R2
04FE 3324 clr R3
0500 30924F00 sts _sp_pl+1,R3
0504 20924E00 sts _sp_pl,R2
0508 .dbline 216
0508 .dbline 216
0508 3AC0 xjmp L39
050A L69:
050A .dbline 218
050A ; //关门全速状态110时, 判断撞人后,转状态116
050A ; case 110:if(round_cnt>30){status=116;sp_pl=0;}break;
050A 8EE1 ldi R24,30
050C 90E0 ldi R25,0
050E 20905800 lds R2,_round_cnt
0512 30905900 lds R3,_round_cnt+1
0516 8215 cp R24,R2
0518 9305 cpc R25,R3
051A 88F5 brsh L39
051C .dbline 218
051C .dbline 218
051C 84E7 ldi R24,116
051E 80934C00 sts _status,R24
0522 .dbline 218
0522 2224 clr R2
0524 3324 clr R3
0526 30924F00 sts _sp_pl+1,R3
052A 20924E00 sts _sp_pl,R2
052E .dbline 218
052E .dbline 218
052E 27C0 xjmp L39
0530 L72:
0530 .dbline 219
0530 ; case 120:if(round_cnt>100){status=116;sp_pl=0;}break;
0530 84E6 ldi R24,100
0532 90E0 ldi R25,0
0534 20905800 lds R2,_round_cnt
0538 30905900 lds R3,_round_cnt+1
053C 8215 cp R24,R2
053E 9305 cpc R25,R3
0540 F0F4 brsh L39
0542 .dbline 219
0542 .dbline 219
0542 84E7 ldi R24,116
0544 80934C00 sts _status,R24
0548 .dbline 219
0548 2224 clr R2
054A 3324 clr R3
054C 30924F00 sts _sp_pl+1,R3
0550 20924E00 sts _sp_pl,R2
0554 .dbline 219
0554 .dbline 219
0554 14C0 xjmp L39
0556 L75:
0556 .dbline 221
0556 88E0 ldi R24,8
0558 90E0 ldi R25,0
055A 20905600 lds R2,_changdu
055E 30905700 lds R3,_changdu+1
0562 8215 cp R24,R2
0564 9305 cpc R25,R3
0566 5CF0 brlt L39
0568 .dbline 221
0568 .dbline 221
0568 88EC ldi R24,200
056A 20905800 lds R2,_round_cnt
056E 30905900 lds R3,_round_cnt+1
0572 8215 cp R24,R2
0574 9305 cpc R25,R3
0576 18F4 brsh L39
0578 .dbline 221
0578 8CE8 ldi R24,140
057A 80934C00 sts _status,R24
057E .dbline 221
057E .dbline 222
057E .dbline 223
057E L39:
057E .dbline -2
057E L23:
057E 0E940000 xcall pop_gset1
0582 2990 ld R2,y+
0584 2FBE out 0x3f,R2
0586 F991 ld R31,y+
0588 E991 ld R30,y+
058A 9991 ld R25,y+
058C 8991 ld R24,y+
058E 3991 ld R19,y+
0590 2991 ld R18,y+
0592 1991 ld R17,y+
0594 0991 ld R16,y+
0596 3990 ld R3,y+
0598 2990 ld R2,y+
059A .dbline 0 ; func end
059A 1895 reti
059C .dbend
.area vector(rom, abs)
.org 4
0004 0C94CE02 jmp _ext_int0
.area text(rom, con, rel)
059C .dbfile d:\MYDOCU~1\ac20-1\ac20-1.c
059C .dbfunc e ext_int0 _ext_int0 fV
.even
059C _ext_int0::
059C 2A92 st -y,R2
059E 3A92 st -y,R3
05A0 4A92 st -y,R4
05A2 5A92 st -y,R5
05A4 8A93 st -y,R24
05A6 9A93 st -y,R25
05A8 2FB6 in R2,0x3f
05AA 2A92 st -y,R2
05AC .dbline -1
05AC .dbline 231
05AC ; //关门慢速状态130时,门合拢后转状态140停止
05AC ; case 130:if(changdu<=8){if(round_cnt>200)status=140;}
05AC ; break;
05AC ; default:break;
05AC ; }
05AC ; }
05AC ;
05AC ;
05AC ; /*======INT0的马达光电编码器中断=========*/
05AC ; #pragma interrupt_handler ext_int0:2
05AC ; void ext_int0(void)
05AC ; {SREG|=0x80;
05AC .dbline 231
05AC 7894 bset 7
05AE .dbline 232
05AE ; round_cnt=0;
05AE 2224 clr R2
05B0 3324 clr R3
05B2 30925900 sts _round_cnt+1,R3
05B6 20925800 sts _round_cnt,R2
05BA .dbline 233
05BA ; if(status<90)changdu++;
05BA 80914C00 lds R24,_status
05BE 8A35 cpi R24,90
05C0 48F4 brsh L91
05C2 .dbline 233
05C2 80915600 lds R24,_changdu
05C6 90915700 lds R25,_changdu+1
05CA 0196 adiw R24,1
05CC 90935700 sts _changdu+1,R25
05D0 80935600 sts _changdu,R24
05D4 L91:
05D4 .dbline 234
05D4 ; if(changdu>9999)changdu=9999;
05D4 8FE0 ldi R24,9999
05D6 97E2 ldi R25,39
05D8 20905600 lds R2,_changdu
05DC 30905700 lds R3,_changdu+1
05E0 8215 cp R24,R2
05E2 9305 cpc R25,R3
05E4 24F4 brge L93
05E6 .dbline 234
05E6 90935700 sts _changdu+1,R25
05EA 80935600 sts _changdu,R24
05EE L93:
05EE .dbline 235
05EE ; if((status>90)&&(status<140))changdu--;
05EE 8AE5 ldi R24,90
05F0 20904C00 lds R2,_status
05F4 8215 cp R24,R2
05F6 60F4 brsh L95
05F8 822D mov R24,R2
05FA 8C38 cpi R24,140
05FC 48F4 brsh L95
05FE .dbline 235
05FE 80915600 lds R24,_changdu
0602 90915700 lds R25,_changdu+1
0606 0197 sbiw R24,1
0608 90935700 sts _changdu+1,R25
060C 80935600 sts _changdu,R24
0610 L95:
0610 .dbline 236
0610 ; if(changdu<=0){changdu=0;}
0610 2224 clr R2
0612 3324 clr R3
0614 40905600 lds R4,_changdu
0618 50905700 lds R5,_changdu+1
061C 2414 cp R2,R4
061E 3504 cpc R3,R5
0620 24F0 brlt L97
0622 .dbline 236
0622 .dbline 236
0622 30925700 sts _changdu+1,R3
0626 20925600 sts _changdu,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -