📄 bianma.lst
字号:
01BF BB8B OUT P1B,R24
(0124) //后退,右转
(0125) PORTD = 0x50;
01C0 E580 LDI R24,0x50
01C1 BB82 OUT P12,R24
(0126) PORTA=0x3C;//后退
01C2 E38C LDI R24,0x3C
01C3 BB8B OUT P1B,R24
(0127) delay_ms(delaytime);
01C4 E20C LDI R16,0x2C
01C5 E011 LDI R17,1
01C6 DE7E RCALL _delay_ms
(0128) PORTD = 0x60;
01C7 E680 LDI R24,0x60
01C8 BB82 OUT P12,R24
(0129) PORTA=0xCC;//右转
01C9 EC8C LDI R24,0xCC
01CA BB8B OUT P1B,R24
(0130) delay_ms(delaytime/2);
01CB E906 LDI R16,0x96
01CC E010 LDI R17,0
01CD DE77 RCALL _delay_ms
(0131) }
(0132) if(pc==0x80)
01CE 91800064 LDS R24,_pc
01D0 3880 CPI R24,0x80
01D1 F479 BNE 0x01E1
(0133) {
(0134) stop();
01D2 DE9E RCALL _stop
(0135) //往右转弯
(0136) PORTD = 0x50;
01D3 E580 LDI R24,0x50
01D4 BB82 OUT P12,R24
(0137) PORTA=0x3C;//后退
01D5 E38C LDI R24,0x3C
01D6 BB8B OUT P1B,R24
(0138) delay_ms(delaytime);
01D7 E20C LDI R16,0x2C
01D8 E011 LDI R17,1
01D9 DE6B RCALL _delay_ms
(0139) PORTD = 0x60;//右转
01DA E680 LDI R24,0x60
01DB BB82 OUT P12,R24
(0140) PORTA=0xCC;
01DC EC8C LDI R24,0xCC
01DD BB8B OUT P1B,R24
(0141) delay_ms(delaytime);
01DE E20C LDI R16,0x2C
01DF E011 LDI R17,1
01E0 DE64 RCALL _delay_ms
(0142) }
(0143) if(pc==0x20)
01E1 91800064 LDS R24,_pc
01E3 3280 CPI R24,0x20
01E4 F479 BNE 0x01F4
(0144) {
(0145) stop();
01E5 DE8B RCALL _stop
(0146) //往右转弯
(0147) PORTD = 0x50;//后退
01E6 E580 LDI R24,0x50
01E7 BB82 OUT P12,R24
(0148) PORTA=0x3C;
01E8 E38C LDI R24,0x3C
01E9 BB8B OUT P1B,R24
(0149) delay_ms(delaytime);
01EA E20C LDI R16,0x2C
01EB E011 LDI R17,1
01EC DE58 RCALL _delay_ms
(0150) PORTD = 0x60;//右转
01ED E680 LDI R24,0x60
01EE BB82 OUT P12,R24
(0151) PORTA=0xCC;
01EF EC8C LDI R24,0xCC
01F0 BB8B OUT P1B,R24
(0152) delay_ms(delaytime);
01F1 E20C LDI R16,0x2C
01F2 E011 LDI R17,1
01F3 DE51 RCALL _delay_ms
(0153) }
(0154) if(pc==0xc0)
01F4 91800064 LDS R24,_pc
01F6 3C80 CPI R24,0xC0
01F7 F479 BNE 0x0207
(0155) {
(0156) stop();
01F8 DE78 RCALL _stop
(0157) //后退,往右转弯
(0158) PORTD = 0x50;//后退
01F9 E580 LDI R24,0x50
01FA BB82 OUT P12,R24
(0159) PORTA=0x3C;
01FB E38C LDI R24,0x3C
01FC BB8B OUT P1B,R24
(0160) delay_ms(delaytime);
01FD E20C LDI R16,0x2C
01FE E011 LDI R17,1
01FF DE45 RCALL _delay_ms
(0161) PORTD = 0x60;//右转
0200 E680 LDI R24,0x60
0201 BB82 OUT P12,R24
(0162) PORTA=0xCC;
0202 EC8C LDI R24,0xCC
0203 BB8B OUT P1B,R24
(0163) delay_ms(delaytime);
0204 E20C LDI R16,0x2C
0205 E011 LDI R17,1
0206 DE3E RCALL _delay_ms
(0164) }
(0165) if(pc==0x60)
0207 91800064 LDS R24,_pc
0209 3680 CPI R24,0x60
020A F479 BNE 0x021A
(0166) {
(0167) stop();
020B DE65 RCALL _stop
(0168) //后退,往右转弯
(0169) PORTD = 0x50;
020C E580 LDI R24,0x50
020D BB82 OUT P12,R24
(0170) PORTA=0x3C;//后退
020E E38C LDI R24,0x3C
020F BB8B OUT P1B,R24
(0171) delay_ms(delaytime);
0210 E20C LDI R16,0x2C
0211 E011 LDI R17,1
0212 DE32 RCALL _delay_ms
(0172) PORTD = 0x60;//右转
0213 E680 LDI R24,0x60
0214 BB82 OUT P12,R24
(0173) PORTA=0xCC;
0215 EC8C LDI R24,0xCC
0216 BB8B OUT P1B,R24
(0174) delay_ms(delaytime);
0217 E20C LDI R16,0x2C
0218 E011 LDI R17,1
0219 DE2B RCALL _delay_ms
(0175) }
(0176) if(pc==0xE0)
021A 91800064 LDS R24,_pc
021C 3E80 CPI R24,0xE0
021D F429 BNE 0x0223
(0177) {
(0178) //刹车
(0179) PORTD = 0xF0;
021E EF80 LDI R24,0xF0
021F BB82 OUT P12,R24
(0180) PORTA = 0xFF;
0220 EF8F LDI R24,0xFF
0221 BB8B OUT P1B,R24
(0181) }
0222 C004 RJMP 0x0227
(0182) else
(0183) {
(0184) PORTD = 0xA0;//前行
0223 EA80 LDI R24,0xA0
0224 BB82 OUT P12,R24
(0185) PORTA=0xC3;
0225 EC83 LDI R24,0xC3
0226 BB8B OUT P1B,R24
0227 CF7B RJMP 0x01A3
(0186) }
(0187) }
(0188) }
0228 9508 RET
(0189)
(0190) void music_car()
(0191) {
(0192) DDRA = 0xFF; PORTA = 0xFF;
_music_car:
0229 EF8F LDI R24,0xFF
022A BB8A OUT P1A,R24
022B BB8B OUT P1B,R24
(0193) PORTA = 0xCC;
022C EC8C LDI R24,0xCC
022D BB8B OUT P1B,R24
(0194) while (1)
022E CFFF RJMP 0x022E
(0195) ;
(0196) }
022F 9508 RET
(0197)
(0198) void led_car()
(0199) {
(0200) DDRA = 0xFF; PORTA = 0xFF;
_led_car:
0230 EF8F LDI R24,0xFF
0231 BB8A OUT P1A,R24
0232 BB8B OUT P1B,R24
(0201) PORTA = 0x0F;
0233 E08F LDI R24,0xF
0234 BB8B OUT P1B,R24
(0202) while (1)
0235 CFFF RJMP 0x0235
(0203) ;
(0204) }
0236 9508 RET
(0205)
(0206) void main(void)
(0207) {
(0208) unsigned temp;
(0209)
(0210) port_init(); //PA,PB,PC,PD 初始化
_main:
temp --> R22
0237 DDF5 RCALL _port_init
(0211)
(0212) loop:
(0213)
(0214) PORTA = 0x00;delay_ms(500);
0238 2422 CLR R2
0239 BA2B OUT P1B,R2
023A EF04 LDI R16,0xF4
023B E011 LDI R17,1
023C DE08 RCALL _delay_ms
(0215) PORTA = 0xff;delay_ms(500);
023D EF8F LDI R24,0xFF
023E BB8B OUT P1B,R24
023F EF04 LDI R16,0xF4
0240 E011 LDI R17,1
0241 DE03 RCALL _delay_ms
(0216) bianma = 0x0000;
0242 2422 CLR R2
0243 92200067 STS _bianma,R2
0245 C05A RJMP 0x02A0
(0217)
(0218) while(1)
(0219) {
(0220) remote = PINB & 0x0f;
0246 B386 IN R24,P16
0247 708F ANDI R24,0xF
0248 93800061 STS _remote,R24
(0221) PORTA = ~remote;
024A 2E28 MOV R2,R24
024B 9420 COM R2
024C BA2B OUT P1B,R2
(0222) switch (remote)
024D 2F48 MOV R20,R24
024E 2755 CLR R21
024F 3041 CPI R20,1
0250 E0E0 LDI R30,0
0251 075E CPC R21,R30
0252 F171 BEQ 0x0281
0253 3042 CPI R20,2
0254 E0E0 LDI R30,0
0255 075E CPC R21,R30
0256 F0A1 BEQ 0x026B
0257 3044 CPI R20,4
0258 E0E0 LDI R30,0
0259 075E CPC R21,R30
025A F029 BEQ 0x0260
025B 3048 CPI R20,0x8
025C E0E0 LDI R30,0
025D 075E CPC R21,R30
025E F0B9 BEQ 0x0276
025F C037 RJMP 0x0297
(0223) {//按键检查
(0224) case 0x04 :
(0225) {
(0226) bianma=bianma | 0xA000;
0260 91800067 LDS R24,_bianma
0262 6080 ORI R24,0
0263 93800067 STS _bianma,R24
(0227) bianma_count = bianma_count+1;
0265 91800060 LDS R24,_bianma_count
0267 5F8F SUBI R24,0xFF
0268 93800060 STS _bianma_count,R24
(0228) }
(0229) break;
026A C02C RJMP 0x0297
(0230) case 0x02 :
(0231) {
(0232) bianma=bianma | 0x0B00;
026B 91800067 LDS R24,_bianma
026D 6080 ORI R24,0
026E 93800067 STS _bianma,R24
(0233) bianma_count = bianma_count+1;
0270 91800060 LDS R24,_bianma_count
0272 5F8F SUBI R24,0xFF
0273 93800060 STS _bianma_count,R24
(0234) }
(0235) break;
0275 C021 RJMP 0x0297
(0236) case 0x08 :
(0237) {
(0238) bianma=bianma | 0x00C0;
0276 91800067 LDS R24,_bianma
0278 6C80 ORI R24,0xC0
0279 93800067 STS _bianma,R24
(0239) bianma_count = bianma_count+1;
027B 91800060 LDS R24,_bianma_count
027D 5F8F SUBI R24,0xFF
027E 93800060 STS _bianma_count,R24
(0240) }
(0241) break;
0280 C016 RJMP 0x0297
(0242) case 0x01 :
(0243) {
(0244) bianma=bianma | 0x000D;
0281 91800067 LDS R24,_bianma
0283 608D ORI R24,0xD
0284 93800067 STS _bianma,R24
(0245) bianma_count = bianma_count+1;
0286 91800060 LDS R24,_bianma_count
0288 5F8F SUBI R24,0xFF
0289 93800060 STS _bianma_count,R24
(0246) }
(0247) break;
028B C00B RJMP 0x0297
(0248) }
(0249) while(1)
(0250) {//释键检查
(0251) temp = PINB & 0x0f;
028C B366 IN R22,P16
028D 2777 CLR R23
028E 706F ANDI R22,0xF
028F 7070 ANDI R23,0
(0252) if(temp != remote)
0290 90200061 LDS R2,_remote
0292 2433 CLR R3
0293 1562 CP R22,R2
0294 0573 CPC R23,R3
0295 F009 BEQ 0x0297
(0253) {break;}
0296 C001 RJMP 0x0298
0297 CFF4 RJMP 0x028C
(0254) }
(0255) if(bianma_count == 4)
0298 91800060 LDS R24,_bianma_count
029A 3084 CPI R24,4
029B F421 BNE 0x02A0
(0256) {//按键四次,认为 一次有效输入结束
(0257) bianma_count=0;break;
029C 2422 CLR R2
029D 92200060 STS _bianma_count,R2
029F C001 RJMP 0x02A1
02A0 CFA5 RJMP 0x0246
(0258) }
(0259) }
(0260) delay_ms(200);
02A1 EC08 LDI R16,0xC8
02A2 E010 LDI R17,0
02A3 DDA1 RCALL _delay_ms
(0261) PORTA = 0xaa;delay_ms(500);
02A4 EA8A LDI R24,0xAA
02A5 BB8B OUT P1B,R24
02A6 EF04 LDI R16,0xF4
02A7 E011 LDI R17,1
02A8 DD9C RCALL _delay_ms
(0262) PORTA = 0x55;delay_ms(500);
02A9 E585 LDI R24,0x55
02AA BB8B OUT P1B,R24
02AB EF04 LDI R16,0xF4
02AC E011 LDI R17,1
02AD DD97 RCALL _delay_ms
(0263) if(bianma == 0xa000)
02AE 91800067 LDS R24,_bianma
02B0 3080 CPI R24,0
02B1 F409 BNE 0x02B3
(0264) {xuanya_car();}
02B2 DEE7 RCALL _xuanya_car
(0265) if(bianma == 0x0b00)
02B3 91800067 LDS R24,_bianma
02B5 3080 CPI R24,0
02B6 F409 BNE 0x02B8
(0266) {remote_car();}
02B7 DEA0 RCALL _remote_car
(0267) if(bianma == 0x00c0)
02B8 91800067 LDS R24,_bianma
02BA 3C80 CPI R24,0xC0
02BB F409 BNE 0x02BD
(0268) {music_car();}
02BC DF6C RCALL _music_car
(0269) if(bianma == 0x000d)
02BD 91800067 LDS R24,_bianma
02BF 308D CPI R24,0xD
02C0 F009 BEQ 0x02C2
02C1 CF76 RJMP 0x0238
(0270) {led_car();}
02C2 DF6D RCALL _led_car
(0271) else goto loop;
(0272) }
FILE: <library>
02C3 9508 RET
push_gset1:
02C4 935A ST R21,-Y
02C5 934A ST R20,-Y
02C6 9508 RET
pop_gset1:
02C7 E0E1 LDI R30,1
pop:
02C8 9149 LD R20,Y+
02C9 9159 LD R21,Y+
02CA FDE0 SBRC R30,0
02CB 9508 RET
02CC 9169 LD R22,Y+
02CD 9179 LD R23,Y+
02CE FDE1 SBRC R30,1
02CF 9508 RET
02D0 90A9 LD R10,Y+
02D1 90B9 LD R11,Y+
02D2 FDE2 SBRC R30,2
02D3 9508 RET
02D4 90C9 LD R12,Y+
02D5 90D9 LD R13,Y+
02D6 FDE3 SBRC R30,3
02D7 9508 RET
02D8 90E9 LD R14,Y+
02D9 90F9 LD R15,Y+
02DA 9508 RET
push_gset2:
02DB 937A ST R23,-Y
02DC 936A ST R22,-Y
02DD CFE6 RJMP push_gset1
pop_gset2:
02DE E0E2 LDI R30,2
02DF CFE8 RJMP pop
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -