📄 ac20-1.lst
字号:
0168 940E1122 CALL _EEPROMReadBytes
(0173) //*************************************
(0174) eep_temp=0;
016A 2422 CLR R2
016B 922000AE STS eep_temp,R2
(0175) EEPROM_READ(study_speed_address+1,eep_temp);
016D E081 LDI R24,1
016E E090 LDI R25,0
016F 8399 STD Y+1,R25
0170 8388 STD Y+0,R24
0171 EA2E LDI R18,0xAE
0172 E030 LDI R19,0
0173 E100 LDI R16,0x10
0174 E010 LDI R17,0
0175 940E1122 CALL _EEPROMReadBytes
(0176) if(eep_temp==55)
0177 918000AE LDS R24,eep_temp
0179 3387 CPI R24,0x37
017A F451 BNE 0x0185
(0177) {EEPROM_READ(study_speed_address,study_speed_temp);}
017B E081 LDI R24,1
017C E090 LDI R25,0
017D 8399 STD Y+1,R25
017E 8388 STD Y+0,R24
017F E621 LDI R18,0x61
0180 E030 LDI R19,0
0181 E00F LDI R16,0xF
0182 E010 LDI R17,0
0183 940E1122 CALL _EEPROMReadBytes
0185 9622 ADIW R28,2
0186 9508 RET
_timer0:
0187 922A ST R2,-Y
0188 923A ST R3,-Y
0189 930A ST R16,-Y
018A 931A ST R17,-Y
018B 932A ST R18,-Y
018C 933A ST R19,-Y
018D 938A ST R24,-Y
018E 939A ST R25,-Y
018F 93EA ST R30,-Y
0190 93FA ST R31,-Y
0191 B62F IN R2,0x3F
0192 922A ST R2,-Y
0193 940E10F5 CALL push_gset1
(0178) }
(0179)
(0180) /*===================================================*/
(0181) /***定时器T0的1ms中断,用于数码管显示及检测运行状态的马达堵转情况***/
(0182) #pragma interrupt_handler timer0:10
(0183) void timer0(void)
(0184) {SREG|=0x80;
0195 9478 BSET 7
(0185) round_cnt++;
0196 918000C1 LDS R24,round_cnt
0198 919000C2 LDS R25,round_cnt+1
019A 9601 ADIW R24,1
019B 939000C2 STS round_cnt+1,R25
019D 938000C1 STS round_cnt,R24
(0186) dis_bit++;
019F 9180006C LDS R24,dis_bit
01A1 5F8F SUBI R24,0xFF
01A2 9380006C STS dis_bit,R24
(0187) if(dis_bit>2)dis_bit=0;
01A4 E082 LDI R24,2
01A5 9020006C LDS R2,dis_bit
01A7 1582 CP R24,R2
01A8 F418 BCC 0x01AC
01A9 2422 CLR R2
01AA 9220006C STS dis_bit,R2
(0188) if(fst==1)cnt_500++;
01AC 918000B2 LDS R24,fst
01AE 3081 CPI R24,1
01AF F449 BNE 0x01B9
01B0 918000B3 LDS R24,cnt_500
01B2 919000B4 LDS R25,cnt_500+1
01B4 9601 ADIW R24,1
01B5 939000B4 STS cnt_500+1,R25
01B7 938000B3 STS cnt_500,R24
(0189) if(cnt_500>500){fst=2;round_cnt=0;cnt_500=0;}
01B9 EF84 LDI R24,0xF4
01BA E091 LDI R25,1
01BB 902000B3 LDS R2,cnt_500
01BD 903000B4 LDS R3,cnt_500+1
01BF 1582 CP R24,R2
01C0 0593 CPC R25,R3
01C1 F468 BCC 0x01CF
01C2 E082 LDI R24,2
01C3 938000B2 STS fst,R24
01C5 2422 CLR R2
01C6 2433 CLR R3
01C7 923000C2 STS round_cnt+1,R3
01C9 922000C1 STS round_cnt,R2
01CB 923000B4 STS cnt_500+1,R3
01CD 922000B3 STS cnt_500,R2
(0190)
(0191) switch(dis_bit)
01CF 9140006C LDS R20,dis_bit
01D1 2755 CLR R21
01D2 3040 CPI R20,0
01D3 0745 CPC R20,R21
01D4 F051 BEQ 0x01DF
01D5 3041 CPI R20,1
01D6 E0E0 LDI R30,0
01D7 075E CPC R21,R30
01D8 F0C9 BEQ 0x01F2
01D9 3042 CPI R20,2
01DA E0E0 LDI R30,0
01DB 075E CPC R21,R30
01DC F409 BNE 0x01DE
01DD C02B RJMP 0x0209
01DE C03C RJMP 0x021B
(0192) {
(0193) case 0:PORTA=seg[status%10];PORTB=act[0];break;
01DF E02A LDI R18,0xA
01E0 E030 LDI R19,0
01E1 910000B5 LDS R16,status
01E3 2711 CLR R17
01E4 940E1085 CALL mod16s
01E6 01F8 MOVW R30,R16
01E7 E784 LDI R24,0x74
01E8 E090 LDI R25,0
01E9 0FE8 ADD R30,R24
01EA 1FF9 ADC R31,R25
01EB 91E4 LPM R30,0(Z)
01EC BBEB OUT 0x1B,R30
01ED E7EE LDI R30,0x7E
01EE E0F0 LDI R31,0
01EF 91E4 LPM R30,0(Z)
01F0 BBE8 OUT 0x18,R30
01F1 C029 RJMP 0x021B
(0194) case 1:PORTA=seg[(status%100)/10];PORTB=act[1];break;
01F2 E624 LDI R18,0x64
01F3 E030 LDI R19,0
01F4 910000B5 LDS R16,status
01F6 2711 CLR R17
01F7 940E1085 CALL mod16s
01F9 E02A LDI R18,0xA
01FA E030 LDI R19,0
01FB 940E1089 CALL div16s
01FD 01F8 MOVW R30,R16
01FE E784 LDI R24,0x74
01FF E090 LDI R25,0
0200 0FE8 ADD R30,R24
0201 1FF9 ADC R31,R25
0202 91E4 LPM R30,0(Z)
0203 BBEB OUT 0x1B,R30
0204 E7EF LDI R30,0x7F
0205 E0F0 LDI R31,0
0206 91E4 LPM R30,0(Z)
0207 BBE8 OUT 0x18,R30
0208 C012 RJMP 0x021B
(0195) case 2:PORTA=seg[status/100];PORTB=act[2];break;
0209 E624 LDI R18,0x64
020A E030 LDI R19,0
020B 910000B5 LDS R16,status
020D 2711 CLR R17
020E 940E1089 CALL div16s
0210 01F8 MOVW R30,R16
0211 E784 LDI R24,0x74
0212 E090 LDI R25,0
0213 0FE8 ADD R30,R24
0214 1FF9 ADC R31,R25
0215 91E4 LPM R30,0(Z)
0216 BBEB OUT 0x1B,R30
0217 E8E0 LDI R30,0x80
0218 E0F0 LDI R31,0
0219 91E4 LPM R30,0(Z)
021A BBE8 OUT 0x18,R30
(0196) default:break;
(0197) }
(0198) TCNT0=0xd9;
021B ED89 LDI R24,0xD9
021C BF82 OUT 0x32,R24
(0199) switch (status)
021D 914000B5 LDS R20,status
021F 2755 CLR R21
0220 3540 CPI R20,0x50
0221 E0E0 LDI R30,0
0222 075E CPC R21,R30
0223 F409 BNE 0x0225
0224 C095 RJMP 0x02BA
0225 E580 LDI R24,0x50
0226 E090 LDI R25,0
0227 1784 CP R24,R20
0228 0795 CPC R25,R21
0229 F14C BLT 0x0253
022A 3342 CPI R20,0x32
022B E0E0 LDI R30,0
022C 075E CPC R21,R30
022D F409 BNE 0x022F
022E C06A RJMP 0x0299
022F E382 LDI R24,0x32
0230 E090 LDI R25,0
0231 1784 CP R24,R20
0232 0795 CPC R25,R21
0233 F07C BLT 0x0243
0234 3040 CPI R20,0
0235 0745 CPC R20,R21
0236 F409 BNE 0x0238
0237 C045 RJMP 0x027D
0238 3040 CPI R20,0
0239 E0E0 LDI R30,0
023A 075E CPC R21,R30
023B F40C BGE 0x023D
023C C111 RJMP 0x034E
023D 3144 CPI R20,0x14
023E E0E0 LDI R30,0
023F 075E CPC R21,R30
0240 F409 BNE 0x0242
0241 C049 RJMP 0x028B
0242 C10B RJMP 0x034E
0243 334C CPI R20,0x3C
0244 E0E0 LDI R30,0
0245 075E CPC R21,R30
0246 F409 BNE 0x0248
0247 C05C RJMP 0x02A4
0248 334C CPI R20,0x3C
0249 E0E0 LDI R30,0
024A 075E CPC R21,R30
024B F40C BGE 0x024D
024C C101 RJMP 0x034E
024D 3446 CPI R20,0x46
024E E0E0 LDI R30,0
024F 075E CPC R21,R30
0250 F409 BNE 0x0252
0251 C05D RJMP 0x02AF
0252 C0FB RJMP 0x034E
0253 364E CPI R20,0x6E
0254 E0E0 LDI R30,0
0255 075E CPC R21,R30
0256 F409 BNE 0x0258
0257 C0BC RJMP 0x0314
0258 E68E LDI R24,0x6E
0259 E090 LDI R25,0
025A 1784 CP R24,R20
025B 0795 CPC R25,R21
025C F084 BLT 0x026D
025D 3545 CPI R20,0x55
025E E0E0 LDI R30,0
025F 075E CPC R21,R30
0260 F409 BNE 0x0262
0261 C07B RJMP 0x02DD
0262 3545 CPI R20,0x55
0263 E0E0 LDI R30,0
0264 075E CPC R21,R30
0265 F40C BGE 0x0267
0266 C0E7 RJMP 0x034E
0267 3644 CPI R20,0x64
0268 E0E0 LDI R30,0
0269 075E CPC R21,R30
026A F409 BNE 0x026C
026B C094 RJMP 0x0300
026C C0E1 RJMP 0x034E
026D 3748 CPI R20,0x78
026E E0E0 LDI R30,0
026F 075E CPC R21,R30
0270 F409 BNE 0x0272
0271 C0B5 RJMP 0x0327
0272 3748 CPI R20,0x78
0273 E0E0 LDI R30,0
0274 075E CPC R21,R30
0275 F40C BGE 0x0277
0276 C0D7 RJMP 0x034E
0277 3842 CPI R20,0x82
0278 E0E0 LDI R30,0
0279 075E CPC R21,R30
027A F409 BNE 0x027C
027B C0BE RJMP 0x033A
027C C0D1 RJMP 0x034E
(0200) { //门全开后转状态10
(0201) case 0:if(round_cnt>200){status=10;}break;
027D EC88 LDI R24,0xC8
027E E090 LDI R25,0
027F 902000C1 LDS R2,round_cnt
0281 903000C2 LDS R3,round_cnt+1
0283 1582 CP R24,R2
0284 0593 CPC R25,R3
0285 F008 BCS 0x0287
0286 C0C7 RJMP 0x034E
0287 E08A LDI R24,0xA
0288 938000B5 STS status,R24
028A C0C3 RJMP 0x034E
(0202) //门全关后转状态30停止
(0203) case 20:if(round_cnt>200){status=30;}break;
028B EC88 LDI R24,0xC8
028C E090 LDI R25,0
028D 902000C1 LDS R2,round_cnt
028F 903000C2 LDS R3,round_cnt+1
0291 1582 CP R24,R2
0292 0593 CPC R25,R3
0293 F008 BCS 0x0295
0294 C0B9 RJMP 0x034E
0295 E18E LDI R24,0x1E
0296 938000B5 STS status,R24
0298 C0B5 RJMP 0x034E
(0204) case 50:if(round_cnt>100){/*reset;*/}break;
0299 E684 LDI R24,0x64
029A E090 LDI R25,0
029B 902000C1 LDS R2,round_cnt
029D 903000C2 LDS R3,round_cnt+1
029F 1582 CP R24,R2
02A0 0593 CPC R25,R3
02A1 F008 BCS 0x02A3
02A2 C0AB RJMP 0x034E
02A3 C0AA RJMP 0x034E
(0205) case 60:if(round_cnt>100){/*reset*/}break;
02A4 E684 LDI R24,0x64
02A5 E090 LDI R25,0
02A6 902000C1 LDS R2,round_cnt
02A8 903000C2 LDS R3,round_cnt+1
02AA 1582 CP R24,R2
02AB 0593 CPC R25,R3
02AC F008 BCS 0x02AE
02AD C0A0 RJMP 0x034E
02AE C09F RJMP 0x034E
(0206) case 70:if(round_cnt>100){/*reset*/}break;
02AF E684 LDI R24,0x64
02B0 E090 LDI R25,0
02B1 902000C1 LDS R2,round_cnt
02B3 903000C2 LDS R3,round_cnt+1
02B5 1582 CP R24,R2
02B6 0593 CPC R25,R3
02B7 F008 BCS 0x02B9
02B8 C095 RJMP 0x034E
02B9 C094 RJMP 0x034E
(0207) //开门慢速状态80时,间隔500ms,分二次判断撞墙后,转状态90
(0208) case 80:{if((fst==0)&&(round_cnt>150))fst=1;
02BA 902000B2 LDS R2,fst
02BC 2022 TST R2
02BD F461 BNE 0x02CA
02BE E986 LDI R24,0x96
02BF E090 LDI R25,0
02C0 902000C1 LDS R2,round_cnt
02C2 903000C2 LDS R3,round_cnt+1
02C4 1582 CP R24,R2
02C5 0593 CPC R25,R3
02C6 F418 BCC 0x02CA
02C7 E081 LDI R24,1
02C8 938000B2 STS fst,R24
(0209) if((fst==2)&&(round_cnt>150))status=90;
02CA 918000B2 LDS R24,fst
02CC 3082 CPI R24,2
02CD F009 BEQ 0x02CF
02CE C07F RJMP 0x034E
02CF E986 LDI R24,0x96
02D0 E090 LDI R25,0
02D1 902000C1 LDS R2,round_cnt
02D3 903000C2 LDS R3,round_cnt+1
02D5 1582 CP R24,R2
02D6 0593 CPC R25,R3
02D7 F008 BCS 0x02D9
02D8 C075 RJMP 0x034E
02D9 E58A LDI R24,0x5A
02DA 938000B5 STS status,R24
(0210) }break;
02DC C071 RJMP 0x034E
(0211) //开门慢速状态85时,间隔500ms,分二次判断撞墙后,转状态90
(0212) case 85:{if((fst==0)&&(round_cnt>200))fst=1;
02DD 902000B2 LDS R2,fst
02DF 2022 TST R2
02E0 F461 BNE 0x02ED
02E1 EC88 LDI R24,0xC8
02E2 E090 LDI R25,0
02E3 902000C1 LDS R2,round_cnt
02E5 903000C2 LDS R3,round_cnt+1
02E7 1582 CP R24,R2
02E8 0593 CPC R25,R3
02E9 F418 BCC 0x02ED
02EA E081 LDI R24,1
02EB 938000B2 STS fst,R24
(0213) if((fst==2)&&(round_cnt>200))status=90;
02ED 918000B2 LDS R24,fst
02EF 3082 CPI R24,2
02F0 F009 BEQ 0x02F2
02F1 C05C RJMP 0x034E
02F2 EC88 LDI R24,0xC8
02F3 E090 LDI R25,0
02F4 902000C1 LDS R2,round_cnt
02F6 903000C2 LDS R3,round_cnt+1
02F8 1582 CP R24,R2
02F9 0593 CPC R25,R3
02FA F008 BCS 0x02FC
02FB C052 RJMP 0x034E
02FC E58A LDI R24,0x5A
02FD 938000B5 STS status,R24
(0214) }break;
02FF C04E RJMP 0x034E
(0215) //关门加速状态100时, 判断撞人后,转状态105
(0216) case 100:if(round_cnt>300){status=105;sp_pl=0;}break;
0300 E28C LDI R24,0x2C
0301 E091 LDI R25,1
0302 902000C1 LDS R2,round_cnt
0304 903000C2 LDS R3,round_cnt+1
0306 1582 CP R24,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -