⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 remote_car.lst

📁 单片机开发资料光盘-双龙-686M.zip
💻 LST
📖 第 1 页 / 共 3 页
字号:
    0262 90200060  LDS	R2,0x60
    0264 90300061  LDS	R3,0x61
    0266 0E28      ADD	R2,R24
    0267 1E39      ADC	R3,R25
    0268 2DE2      MOV	R30,R2
    0269 2DF3      MOV	R31,R3
    026A 95C8      LPM
    026B 92000073  STS	_temp1,R0
(0103)       	    break;
    026D C037      RJMP	0x02A5
(0104)           case 0x02:  // < B >
(0105) 		      backward();          //后退
    026E DE84      RCALL	_backward
(0106) 		      rst_time=0;
    026F 2422      CLR	R2
    0270 9220006B  STS	_rst_time,R2
(0107) 			  temp1=sound_back[sound_add];
    0272 EE86      LDI	R24,0xE6
    0273 E090      LDI	R25,0
    0274 90200060  LDS	R2,0x60
    0276 90300061  LDS	R3,0x61
    0278 0E28      ADD	R2,R24
    0279 1E39      ADC	R3,R25
    027A 2DE2      MOV	R30,R2
    027B 2DF3      MOV	R31,R3
    027C 95C8      LPM
    027D 92000073  STS	_temp1,R0
(0108)       	    break;
    027F C025      RJMP	0x02A5
(0109)           case 0x08:  // < C >
(0110) 		      stop();              //停止运动
    0280 DE7C      RCALL	_stop
(0111) 		      rst_time++;
    0281 9180006B  LDS	R24,_rst_time
    0283 5F8F      SUBI	R24,0xFF
    0284 9380006B  STS	_rst_time,R24
(0112) 			  temp1=sound_stop[sound_add];
    0286 EF8E      LDI	R24,0xFE
    0287 E090      LDI	R25,0
    0288 90200060  LDS	R2,0x60
    028A 90300061  LDS	R3,0x61
    028C 0E28      ADD	R2,R24
    028D 1E39      ADC	R3,R25
    028E 2DE2      MOV	R30,R2
    028F 2DF3      MOV	R31,R3
    0290 95C8      LPM
    0291 92000073  STS	_temp1,R0
(0113)       	    break;
    0293 C011      RJMP	0x02A5
(0114)           case 0x01:  // < D >
(0115)               turn_left();         //左转
    0294 DE4F      RCALL	_turn_left
(0116) 		      rst_time=0;
    0295 2422      CLR	R2
    0296 9220006B  STS	_rst_time,R2
(0117) 			  temp1=sound_left[sound_add];
    0298 E186      LDI	R24,0x16
    0299 E091      LDI	R25,1
    029A 90200060  LDS	R2,0x60
    029C 90300061  LDS	R3,0x61
    029E 0E28      ADD	R2,R24
    029F 1E39      ADC	R3,R25
    02A0 2DE2      MOV	R30,R2
    02A1 2DF3      MOV	R31,R3
    02A2 95C8      LPM
    02A3 92000073  STS	_temp1,R0
(0118)       	    break;
(0119)       	}
(0120)       }
(0121)    }
(0122) }
    02A5 D0A5      RCALL	pop_gset1
    02A6 D0DD      RCALL	pop_lset
    02A7 9518      RETI
(0123) 
(0124) void stop_timer0()
(0125) {
(0126) 	CLI();
_stop_timer0:
    02A8 94F8      BCLR	7
(0127) 	TCCR0 = 0x00;//停止timer0
    02A9 2422      CLR	R2
    02AA BE23      OUT	0x33,R2
(0128) 	MCUCR = 0x00;
    02AB BE25      OUT	0x35,R2
(0129)     GIMSK = 0x00;
    02AC BE2B      OUT	0x3B,R2
(0130)     TIMSK = 0x00;
    02AD BE29      OUT	0x39,R2
(0131)     SEI();
    02AE 9478      BSET	7
(0132) }
    02AF 9508      RET
_timer1_ovf_isr:
    02B0 922A      ST	R2,-Y
    02B1 923A      ST	R3,-Y
    02B2 938A      ST	R24,-Y
    02B3 B62F      IN	R2,0x3F
    02B4 922A      ST	R2,-Y
(0133) 
(0134) #pragma interrupt_handler timer1_ovf_isr:iv_TIMER1_OVF
(0135) void timer1_ovf_isr(void)
(0136) 	 {
(0137) 	    {
(0138) 		 TCNT1=toneconst;
    02B5 90200075  LDS	R2,_toneconst
    02B7 90300076  LDS	R3,_toneconst+1
    02B9 BC3D      OUT	0x2D,R3
    02BA BC2C      OUT	0x2C,R2
(0139) 	     PORTC^=1;
    02BB E081      LDI	R24,1
    02BC B225      IN	R2,0x15
    02BD 2628      EOR	R2,R24
    02BE BA25      OUT	0x15,R2
(0140) 		}
(0141) 	 }	 	 
    02BF 9029      LD	R2,Y+
    02C0 BE2F      OUT	0x3F,R2
    02C1 9189      LD	R24,Y+
    02C2 9039      LD	R3,Y+
    02C3 9029      LD	R2,Y+
    02C4 9518      RETI
(0142) 	 
(0143) void remote_car()
(0144) {//遥控车程序
(0145)  
(0146)  port_init();//调用端口初始化函数
_remote_car:
    02C5 DDF3      RCALL	_port_init
(0147)  
(0148)  work_status = 0x60;//置对应的工作状态标志
    02C6 E680      LDI	R24,0x60
    02C7 9380007E  STS	_work_status,R24
(0149) 
(0150) remote_rst: 
(0151)  PORTA = 0x0F;
    02C9 E08F      LDI	R24,0xF
    02CA BB8B      OUT	0x1B,R24
(0152) 
(0153)   gzsl=0x88;timers=0;t0_times=0;
    02CB E888      LDI	R24,0x88
    02CC 93800067  STS	_gzsl,R24
    02CE 2422      CLR	R2
    02CF 9220006E  STS	_timers,R2
    02D1 92200066  STS	_t0_times,R2
(0154)   CLI(); //disable all interrupts
    02D3 94F8      BCLR	7
(0155)   timer0_init();
    02D4 DF0B      RCALL	_timer0_init
(0156) 
(0157)   MCUCR = 0x00;
    02D5 2422      CLR	R2
    02D6 BE25      OUT	0x35,R2
(0158)   GIMSK = 0x00;
    02D7 BE2B      OUT	0x3B,R2
(0159)   TIMSK|=(1<<TOIE0);
    02D8 B789      IN	R24,0x39
    02D9 6082      ORI	R24,2
    02DA BF89      OUT	0x39,R24
(0160)   SEI(); //re-enable interrupts
    02DB 9478      BSET	7
(0161)  
(0162)  mic_startup();//等待声控启动函数
    02DC DE8C      RCALL	_mic_startup
(0163) 
(0164)   gzsl=0x33;t0_times=0;
    02DD E383      LDI	R24,0x33
    02DE 93800067  STS	_gzsl,R24
    02E0 2422      CLR	R2
    02E1 92200066  STS	_t0_times,R2
(0165) 	  TCCR1A = 0x00;
    02E3 BC2F      OUT	0x2F,R2
(0166) 	  TCCR1B =(1<<CS11);//8分频
    02E4 E082      LDI	R24,2
    02E5 BD8E      OUT	0x2E,R24
(0167) n01:
(0168)   temp=temp1 = 0;
    02E6 2422      CLR	R2
    02E7 92200073  STS	_temp1,R2
    02E9 92200074  STS	_temp,R2
(0169)   sound_add = 0;	  
    02EB 2433      CLR	R3
    02EC 92300061  STS	0x61,R3
    02EE 92200060  STS	0x60,R2
    02F0 C04F      RJMP	0x0340
(0170) 	  while(temp1!=0)
(0171)   	    {
(0172) 			temp=temp1; 
    02F1 90200073  LDS	R2,_temp1
    02F3 92200074  STS	_temp,R2
(0173) 			temp&=0x0f;
    02F5 2D82      MOV	R24,R2
    02F6 708F      ANDI	R24,0xF
    02F7 93800074  STS	_temp,R24
(0174) 			if(temp!=0)
    02F9 2E28      MOV	R2,R24
    02FA 2388      TST	R24
    02FB F0B9      BEQ	0x0313
(0175) 			  {
(0176) 			   TIMSK|=(1<<TOIE1);//根据SOUNDTABLE中数据的低四位选择音调频率
    02FC B789      IN	R24,0x39
    02FD 6880      ORI	R24,0x80
    02FE BF89      OUT	0x39,R24
(0177) 			   temp--;			   
    02FF 2D82      MOV	R24,R2
    0300 5081      SUBI	R24,1
    0301 93800074  STS	_temp,R24
(0178)         	   toneconst=TONETABLE[temp];
    0303 E18A      LDI	R24,0x1A
    0304 E090      LDI	R25,0
    0305 91000074  LDS	R16,_temp
    0307 2711      CLR	R17
    0308 0F00      LSL	R16
    0309 1F11      ROL	R17
    030A 0F08      ADD	R16,R24
    030B 1F19      ADC	R17,R25
    030C D052      RCALL	lpm16
    030D 93100076  STS	_toneconst+1,R17
    030F 93000075  STS	_toneconst,R16
(0179) 			   TCNT1=toneconst;
    0311 BD1D      OUT	0x2D,R17
    0312 BD0C      OUT	0x2C,R16
(0180)  			  }
(0181) 			temp=temp1;
    0313 90200073  LDS	R2,_temp1
    0315 92200074  STS	_temp,R2
(0182) 			temp>>=4;
    0317 2D82      MOV	R24,R2
    0318 9582      SWAP	R24
    0319 708F      ANDI	R24,0xF
    031A 93800074  STS	_temp,R24
(0183) 			temp&=0x0f;
    031C 708F      ANDI	R24,0xF
    031D 93800074  STS	_temp,R24
(0184) 			delay_ms(temp*129);//根据SOUNDTABLE中数据的高四位*5后,为音调持续时间
    031F 2F28      MOV	R18,R24
    0320 2733      CLR	R19
    0321 E801      LDI	R16,0x81
    0322 E010      LDI	R17,0
    0323 D077      RCALL	mpy16s
    0324 DDAC      RCALL	_delay_ms
(0185) 			TIMSK&=~(1<<TOIE1);
    0325 B789      IN	R24,0x39
    0326 778F      ANDI	R24,0x7F
    0327 BF89      OUT	0x39,R24
(0186) 			sound_add++;
    0328 91800060  LDS	R24,0x60
    032A 91900061  LDS	R25,0x61
    032C 9601      ADIW	R24,1
    032D 93900061  STS	0x61,R25
    032F 93800060  STS	0x60,R24
(0187) 
(0188) 	     if(rst_time > 40)
    0331 E288      LDI	R24,0x28
    0332 9020006B  LDS	R2,_rst_time
    0334 1582      CP	R24,R2
    0335 F450      BCC	0x0340
(0189) 	       {//当按住< C > 键的持续时间超过10S,遥控机器人复位,等待声控重起运行
(0190) 		    rst_time=0;
    0336 2422      CLR	R2
    0337 9220006B  STS	_rst_time,R2
(0191) 			stop_timer0();
    0339 DF6E      RCALL	_stop_timer0
(0192) 			PORTA = 0x0f;
    033A E08F      LDI	R24,0xF
    033B BB8B      OUT	0x1B,R24
(0193) 			delay_ms(1000);
    033C EE08      LDI	R16,0xE8
    033D E013      LDI	R17,3
    033E DD92      RCALL	_delay_ms
(0194) 		    goto remote_rst;
    033F CF89      RJMP	0x02C9
    0340 90200073  LDS	R2,_temp1
    0342 2022      TST	R2
    0343 F009      BEQ	0x0345
    0344 CFAC      RJMP	0x02F1
(0195) 	       }
(0196) 	   }
(0197) 	goto n01;
    0345 CFA0      RJMP	0x02E6
    0346 9508      RET
(0198) }
(0199) 
(0200) void main()
(0201) {
(0202)  remote_car();
(0203) }
FILE: <library>
_main:
    0347 CF7D      RJMP	_remote_car
push_gset1:
    0348 935A      ST	R21,-Y
    0349 934A      ST	R20,-Y
    034A 9508      RET
pop_gset1:
    034B E0E1      LDI	R30,1
pop:
    034C 9149      LD	R20,Y+
    034D 9159      LD	R21,Y+
    034E FDE0      SBRC	R30,0
    034F 9508      RET
    0350 9169      LD	R22,Y+
    0351 9179      LD	R23,Y+
    0352 FDE1      SBRC	R30,1
    0353 9508      RET
    0354 90A9      LD	R10,Y+
    0355 90B9      LD	R11,Y+
    0356 FDE2      SBRC	R30,2
    0357 9508      RET
    0358 90C9      LD	R12,Y+
    0359 90D9      LD	R13,Y+
    035A FDE3      SBRC	R30,3
    035B 9508      RET
    035C 90E9      LD	R14,Y+
    035D 90F9      LD	R15,Y+
    035E 9508      RET
lpm16:
    035F 93EA      ST	R30,-Y
    0360 93FA      ST	R31,-Y
    0361 920A      ST	R0,-Y
    0362 2FE0      MOV	R30,R16
    0363 2FF1      MOV	R31,R17
    0364 95C8      LPM
    0365 2D00      MOV	R16,R0
    0366 9631      ADIW	R30,1
    0367 95C8      LPM
    0368 2D10      MOV	R17,R0
    0369 9009      LD	R0,Y+
    036A 91F9      LD	R31,Y+
    036B 91E9      LD	R30,Y+
    036C 9508      RET
push_lset:
    036D 93FA      ST	R31,-Y
    036E 93EA      ST	R30,-Y
    036F 93BA      ST	R27,-Y
    0370 93AA      ST	R26,-Y
    0371 939A      ST	R25,-Y
    0372 938A      ST	R24,-Y
    0373 933A      ST	R19,-Y
    0374 932A      ST	R18,-Y
    0375 931A      ST	R17,-Y
    0376 930A      ST	R16,-Y
    0377 929A      ST	R9,-Y
    0378 928A      ST	R8,-Y
    0379 927A      ST	R7,-Y
    037A 926A      ST	R6,-Y
    037B 925A      ST	R5,-Y
    037C 924A      ST	R4,-Y
    037D 923A      ST	R3,-Y
    037E 922A      ST	R2,-Y
    037F 921A      ST	R1,-Y
    0380 920A      ST	R0,-Y
    0381 B60F      IN	R0,0x3F
    0382 920A      ST	R0,-Y
    0383 9508      RET
pop_lset:
    0384 9009      LD	R0,Y+
    0385 BE0F      OUT	0x3F,R0
    0386 9009      LD	R0,Y+
    0387 9019      LD	R1,Y+
    0388 9029      LD	R2,Y+
    0389 9039      LD	R3,Y+
    038A 9049      LD	R4,Y+
    038B 9059      LD	R5,Y+
    038C 9069      LD	R6,Y+
    038D 9079      LD	R7,Y+
    038E 9089      LD	R8,Y+
    038F 9099      LD	R9,Y+
    0390 9109      LD	R16,Y+
    0391 9119      LD	R17,Y+
    0392 9129      LD	R18,Y+
    0393 9139      LD	R19,Y+
    0394 9189      LD	R24,Y+
    0395 9199      LD	R25,Y+
    0396 91A9      LD	R26,Y+
    0397 91B9      LD	R27,Y+
    0398 91E9      LD	R30,Y+
    0399 91F9      LD	R31,Y+
    039A 9508      RET
mpy16s:
    039B 920A      ST	R0,-Y
    039C 921A      ST	R1,-Y
    039D 2400      CLR	R0
    039E 2411      CLR	R1
    039F 3000      CPI	R16,0
    03A0 0701      CPC	R16,R17
    03A1 F041      BEQ	0x03AA
    03A2 9516      LSR	R17
    03A3 9507      ROR	R16
    03A4 F410      BCC	0x03A7
    03A5 0E02      ADD	R0,R18
    03A6 1E13      ADC	R1,R19
    03A7 0F22      LSL	R18
    03A8 1F33      ROL	R19
    03A9 CFF5      RJMP	0x039F
    03AA 2D00      MOV	R16,R0
    03AB 2D11      MOV	R17,R1
    03AC 9019      LD	R1,Y+
    03AD 9009      LD	R0,Y+
    03AE 9508      RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -