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

📄 diy0206_4.lst

📁 双龙的积木式智能机器人C源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0132)     0x45,0x41,0x21,0x22,0x43,0x25,0x23,0x42,0x20,0x23,0x45,0x45,
(0133)     0x25,0x25,0x26,0x25,0x23,0x45,0x25,0x26,0x25,0x28,0x26,0x45,
(0134)     0x45,0x41,0x25,0x23,0x22,0x21,0x42,0x23,0x65,0x25,0x22,0x43,
(0135)     0x41,0x41,0x41,0x20,0x25,0x4a,0x29,0x28,0x26,0x25,0x45,0x26,
(0136)     0x46,0x25,0x36,0x18,0x2a,0x28,0x49,0x49,0x49,0x20,0x25,0x4a,
(0137)     0x39,0x18,0x26,0x25,0x45,0x26,0x46,0x25,0x46,0x2a,0x29,0x49,
(0138)     0x49,0x49,0x49,0x4a,0x39,0x18,0x26,0x25,0x45,0x48,0x26,0x25,
(0139)     0x23,0x22,0x41,0x40,0x22,0x23,0x45,0x45,0x45,0x45,0x40,0x25,
(0140) 	0x26,0x48,0x48,0x48,
(0141) 	0x00,0x00
(0142) };
(0143) const unsigned char music_22[]=
(0144) {//走进新时代
(0145) 0x68,0x26,0x25,0x23,0x22,0x13,0x12,0x41,0x41,0x41,0x23,0x25,
(0146) 0x28,0x48,0x28,0x29,0x2a,0x29,0x26,0x45,0x45,0x45,0x45,0x68,
(0147) 0x29,0x29,0x28,0x26,0x25,0x46,0x46,0x46,0x25,0x26,
(0148) 0x29,0x43,0x25,0x22,0x23,0x22,0x21,0x42,0x42,0x42,0x42,0x63,
(0149) 0x25,0x26,0x25,0x26,0x25,0x23,0x22,0x13,0x12,0x41,0x23,0x25,
(0150) 0x28,0x28,0x28,0x28,0x29,0x2a,0x2a,0x29,0x46,0x46,0x46,0x46,
(0151) 0x46,0x29,0x2a,0x28,0x28,0x26,0x25,0x26,0x26,0x25,0x43,0x43,
(0152) 0x22,0x42,0x26,0x25,0x23,0x22,0x13,0x12,0x41,0x41,0x41,0x41,
(0153) 0x00,0x00
(0154) };
(0155) const unsigned char music_33[]=
(0156) {
(0157) //星语心愿
(0158) 0x36,0x18,0x27,0x26,0x25,0x26,0x43,0x43,0x43,0x26,0x25,0x36,0x18,0x27,0x18,0x17,
(0159) 0x26,0x27,0x48,0x48,0x48,0x28,0x29,0x2a,0x2a,0x2a,0x2a,0x49,0x49,0x28,0x27,0x26,
(0160) 0x27,0x45,0x45,0x46,0x48,0x47,0x26,0x25,0x46,0x46,0x46,0x40,0x40,0x40,0x40,0x40,
(0161) 0x36,0x18,0x27,0x26,0x25,0x26,0x26,0x26,0x46,0x46,0x26,0x25,0x36,0x18,0x27,0x18,
(0162) 0x17,0x26,0x27,0x48,0x48,0x48,0x28,0x29,0x2a,0x2a,0x2a,0x2a,0x49,0x49,0x28,0x27,
(0163) 0x26,0x27,0x45,0x45,0x46,0x26,0x28,0x47,0x45,0x40,0x26,0x28,0x47,0x45,0x46,0x46,
(0164) 0x46,0x46,0x46,0x46,0x46,0x23,0x25,0x46,0x4a,0x39,0x18,0x27,0x28,0x48,0x48,0x48,
(0165) 0x28,0x27,0x36,0x16,0x45,0x47,0x46,0x46,0x46,0x23,0x25,0x46,0x4a,0x39,0x18,0x27,
(0166) 0x28,0x48,0x48,0x28,0x27,0x36,0x16,0x45,0x27,0x26,0x46,0x46,0x46,0x46,0x46,0x46,
(0167) 0x00,0x00
(0168) };
(0169) const unsigned char music_44[]=
(0170) {
(0171) //上海滩
(0172) 0x2a,0x2c,0x4d,0x4d,0x4d,0x2a,0x2c,0x49,0x49,0x49,0x2a,0x2c,
(0173) 0x2d,0x4f,0x2d,0x4c,0x1d,0x18,0x2a,0x49,0x49,0x49,0x29,0x2a,
(0174) 0x4c,0x4c,0x4c,0x29,0x2a,0x29,0x26,0x4d,0x4d,0x4d,0x26,0x28,
(0175) 0x39,0x1a,0x29,0x27,0x26,0x28,0x45,0x45,0x45,0x2a,0x2c,0x4d,
(0176) 0x4d,0x4d,0x2a,0x2c,0x49,0x49,0x49,0x2a,0x2c,0x2d,0x4f,0x2d,
(0177) 0x4c,0x1d,0x18,0x2a,0x49,0x49,0x49,0x29,0x2a,0x4c,0x4c,0x4c,
(0178) 0x29,0x2a,0x29,0x26,0x4d,0x4d,0x4d,0x26,0x28,0x39,0x1a,0x29,
(0179) 0x27,0x26,0x25,0x48,0x48,0x20,0x2f,0x2f,0x2d,0x4f,0x4f,0x20,
(0180) 0x2d,0x2f,0x2d,0x4c,0x4c,0x4c,0x2c,0x2a,0x6d,0x2c,0x48,0x19,
(0181) 0x18,0x28,0x4a,0x4a,0x20,0x2a,0x2a,0x29,0x4a,0x4a,0x20,0x2f,
(0182) 0x2f,0x2e,0x4d,0x4d,0x4d,0x2a,0x2a,0x69,0x2a,0x2f,0x2e,0x2d,
(0183) 0x2a,0x4c,0x4c,0x4c,
(0184) 0x00,0x00
(0185) };
(0186) const unsigned char sound_none[]={0x28,0x27,0x36,0x16,0x45,0x47,0x46,0x46,0x46,0x23,0x25,0x46,0x4a,0x39,0x18,0x27,
(0187) 	  		   0x28,0x48,0x48,0x28,0x27,0x36,0x16,0x45,0x27,0x26,0x46,0x46,0x46,0x46,0x46,0x46,0x00,0x00};
(0188) const unsigned char sound_right[]={0x23,0x25,0x46,0x4a,0x39,0x18,0x27,0x28,0x48,0x48,0x48,
(0189) 	  		   0x28,0x27,0x36,0x16,0x45,0x47,0x46,0x46,0x46,0x00,0x00};
(0190) const unsigned char sound_back[]={0x2a,0x2c,0x4d,0x4d,0x4d,0x2a,0x2c,0x49,0x49,0x49,0x2a,0x2c,0x2d,0x4f,
(0191) 	  		   0x2d,0x4c,0x1d,0x18,0x2a,0x49,0x49,0x49,0x00,0x00};
(0192) const unsigned char sound_stop[]={0x23,0x24,0x25,0x44,0x45,0x24,0x23,0x22,0x42,0x40,0x40,0x23,0x22,0x21,0x41,0x28,
(0193) 	  		   0x48,0x23,0x25,0x45,0x40,0x40,0x00,0x00};
(0194) const unsigned char sound_left[]={0x68,0x26,0x25,0x23,0x22,0x13,0x12,0x41,0x41,0x41,0x23,0x25,
(0195) 	  		   0x28,0x48,0x28,0x29,0x2a,0x29,0x26,0x45,0x45,0x45,0x00,0x00};
(0196) 
(0197) //Watchdog initialisation
(0198) // prescale: 1024K cycles
(0199) void watchdog_init(void)
(0200) {
(0201)  WDR(); //this prevents a timout on enabling
_watchdog_init:
    02F5 95A8      WDR
(0202)  WDTCR = 0x0E; //WATCHDOG ENABLED - dont forget WDR
    02F6 E08E      LDI	R24,0xE
    02F7 BD81      OUT	P21,R24
(0203) }
    02F8 9508      RET
(0204) 
(0205) //TIMER0 initialisation - prescale:1024
(0206) // desired value: 25mSec
(0207) // actual value: 24.960mSec (0.2%)
(0208) void timer0_init(void)
(0209) {
(0210)  TCCR0 = 0x00; //stop timer
_timer0_init:
    02F9 2422      CLR	R2
    02FA BE23      OUT	P33,R2
(0211)  TCNT0 = 0x3D; //set count value
    02FB E38D      LDI	R24,0x3D
    02FC BF82      OUT	P32,R24
(0212)  TCCR0 = 0x05; //start timer
    02FD E085      LDI	R24,5
    02FE BF83      OUT	P33,R24
(0213) }
    02FF 9508      RET
_timer0_ovf_isr:
    0300 D5D2      RCALL	push_lset
    0301 D5A9      RCALL	push_gset1
(0214) 
(0215) #pragma interrupt_handler timer0_ovf_isr:iv_TIMER0_OVF
(0216) void timer0_ovf_isr(void)
(0217) {
(0218)  TCNT0 = 0x3D; //reload counter value
    0302 E38D      LDI	R24,0x3D
    0303 BF82      OUT	P32,R24
(0219)  t0_times++;
    0304 91800066  LDS	R24,_t0_times
    0306 5F8F      SUBI	R24,0xFF
    0307 93800066  STS	_t0_times,R24
(0220)  	   remote_in = PINB & 0xF0;
    0309 B386      IN	R24,P16
    030A 7F80      ANDI	R24,0xF0
    030B 9380006E  STS	_remote_in,R24
(0221) 	   switch (remote_in)
    030D 2F48      MOV	R20,R24
    030E 2755      CLR	R21
    030F 3240      CPI	R20,0x20
    0310 E0E0      LDI	R30,0
    0311 075E      CPC	R21,R30
    0312 F129      BEQ	0x0338
    0313 E280      LDI	R24,0x20
    0314 E090      LDI	R25,0
    0315 1784      CP	R24,R20
    0316 0795      CPC	R25,R21
    0317 F064      BLT	0x0324
    0318 3040      CPI	R20,0
    0319 0745      CPC	R20,R21
    031A F0B1      BEQ	0x0331
    031B 3040      CPI	R20,0
    031C E0E0      LDI	R30,0
    031D 075E      CPC	R21,R30
    031E F1BC      BLT	0x0356
    031F 3140      CPI	R20,0x10
    0320 E0E0      LDI	R30,0
    0321 075E      CPC	R21,R30
    0322 F119      BEQ	0x0346
    0323 C032      RJMP	0x0356
    0324 3440      CPI	R20,0x40
    0325 E0E0      LDI	R30,0
    0326 075E      CPC	R21,R30
    0327 F0B9      BEQ	0x033F
    0328 3440      CPI	R20,0x40
    0329 E0E0      LDI	R30,0
    032A 075E      CPC	R21,R30
    032B F154      BLT	0x0356
    032C 3840      CPI	R20,0x80
    032D E0E0      LDI	R30,0
    032E 075E      CPC	R21,R30
    032F F101      BEQ	0x0350
    0330 C025      RJMP	0x0356
(0222)       	 {//检测遥控器是否有键按下
(0223)           case 0x00:  // none
(0224) 			  rst_time=0;
    0331 2422      CLR	R2
    0332 2433      CLR	R3
    0333 92300076  STS	_rst_time+1,R3
    0335 92200075  STS	_rst_time,R2
(0225)       	    break;
    0337 C01E      RJMP	0x0356
(0226)           case 0x20:  // < A >
(0227) 			  rst_time=0;
    0338 2422      CLR	R2
    0339 2433      CLR	R3
    033A 92300076  STS	_rst_time+1,R3
    033C 92200075  STS	_rst_time,R2
(0228)       	    break;
    033E C017      RJMP	0x0356
(0229)           case 0x40:  // < B >
(0230) 		      rst_time=0;
    033F 2422      CLR	R2
    0340 2433      CLR	R3
    0341 92300076  STS	_rst_time+1,R3
    0343 92200075  STS	_rst_time,R2
(0231)       	    break;
    0345 C010      RJMP	0x0356
(0232)           case 0x10:  // < C >
(0233) 		      rst_time++;
    0346 91800075  LDS	R24,_rst_time
    0348 91900076  LDS	R25,_rst_time+1
    034A 9601      ADIW	R24,1
    034B 93900076  STS	_rst_time+1,R25
    034D 93800075  STS	_rst_time,R24
(0234)       	    break;
    034F C006      RJMP	0x0356
(0235)           case 0x80:  // < D >
(0236)               rst_time=0;
    0350 2422      CLR	R2
    0351 2433      CLR	R3
    0352 92300076  STS	_rst_time+1,R3
    0354 92200075  STS	_rst_time,R2
(0237)       	    break;
(0238)       	 }
(0239)  if(rst_time > 400)  // 400*25ms=10s,+1s 看门狗复位  
    0356 E980      LDI	R24,0x90
    0357 E091      LDI	R25,1
    0358 90200075  LDS	R2,_rst_time
    035A 90300076  LDS	R3,_rst_time+1
    035C 1582      CP	R24,R2
    035D 0593      CPC	R25,R3
    035E F420      BCC	0x0363
(0240)    {
(0241)     PORTA = 0xff;
    035F EF8F      LDI	R24,0xFF
    0360 BB8B      OUT	P1B,R24
(0242) 	watchdog_init();
    0361 DF93      RCALL	_watchdog_init
(0243) 	while(1);
    0362 CFFF      RJMP	0x0362
(0244)    }
(0245)  if(gzsl == 0x88)
    0363 91800067  LDS	R24,_gzsl
    0365 3888      CPI	R24,0x88
    0366 F509      BNE	0x0388
(0246)    {
(0247)     if(t0_times == 10)
    0367 91800066  LDS	R24,_t0_times
    0369 308A      CPI	R24,0xA
    036A F4E9      BNE	0x0388
(0248)       {
(0249) 	   timers++;
    036B 9180006D  LDS	R24,_timers
    036D 5F8F      SUBI	R24,0xFF
    036E 9380006D  STS	_timers,R24
(0250) 	   t0_times = 0;
    0370 2422      CLR	R2
    0371 92200066  STS	_t0_times,R2
(0251) 	   pa = led_data[timers];
    0373 E480      LDI	R24,0x40
    0374 E090      LDI	R25,0
    0375 9020006D  LDS	R2,_timers
    0377 2433      CLR	R3
    0378 0E28      ADD	R2,R24
    0379 1E39      ADC	R3,R25
    037A 2DE2      MOV	R30,R2
    037B 2DF3      MOV	R31,R3
    037C 95C8      LPM
    037D 92000072  STS	_pa,R0
(0252) 	   if(pa==0x0a){timers=0;}
    037F 2D80      MOV	R24,R0
    0380 308A      CPI	R24,0xA
    0381 F419      BNE	0x0385
    0382 2422      CLR	R2
    0383 9220006D  STS	_timers,R2
(0253) 	   PORTA = pa;	   
    0385 90200072  LDS	R2,_pa
    0387 BA2B      OUT	P1B,R2
(0254)       }
(0255)    }
(0256)  if(gzsl == 0x33)
    0388 91800067  LDS	R24,_gzsl
    038A 3383      CPI	R24,0x33
    038B F009      BEQ	0x038D
    038C C08C      RJMP	0x0419
(0257)    {
(0258)     sw_touch();
    038D DE85      RCALL	_sw_touch
(0259) 	if(t0_times == 8)     //8*25ms=200ms
    038E 91800066  LDS	R24,_t0_times
    0390 3088      CPI	R24,0x8
    0391 F009      BEQ	0x0393
    0392 C086      RJMP	0x0419
(0260)       {
(0261) 	   t0_times = 0;
    0393 2422      CLR	R2
    0394 92200066  STS	_t0_times,R2
(0262) 	   remote_in = PINB & 0xF0;
    0396 B386      IN	R24,P16
    0397 7F80      ANDI	R24,0xF0
    0398 9380006E  STS	_remote_in,R24
(0263) 	   sound_1 = remote_in;
    039A 2E28      MOV	R2,R24
    039B 92200065  STS	_sound_1,R2
(0264)        if(sound_2 != sound_1)
    039D 90300064  LDS	R3,_sound_2
    039F 1638      CP	R3,R24
    03A0 F051      BEQ	0x03AB
(0265) 	     {sound_add=0;sound_2 = sound_1;}
    03A1 2422      CLR	R2
    03A2 2433      CLR	R3
    03A3 92300061  STS	0x61,R3
    03A5 92200060  STS	0x60,R2
    03A7 90200065  LDS	R2,_sound_1
    03A9 92200064  STS	_sound_2,R2
(0266) 	   switch (remote_in)
    03AB 9140006E  LDS	R20,_remote_in
    03AD 2755      CLR	R21
    03AE 3240      CPI	R20,0x20
    03AF E0E0      LDI	R30,0
    03B0 075E      CPC	R21,R30
    03B1 F161      BEQ	0x03DE
    03B2 E280      LDI	R24,0x20
    03B3 E090      LDI	R25,0
    03B4 1784      CP	R24,R20
    03B5 0795      CPC	R25,R21
    03B6 F074      BLT	0x03C5
    03B7 3040      CPI	R20,0
    03B8 0745      CPC	R20,R21
    03B9 F0D1      BEQ	0x03D4
    03BA 3040      CPI	R20,0
    03BB E0E0      LDI	R30,0
    03BC 075E      CPC	R21,R30
    03BD F40C      BGE	0x03BF
    03BE C05A      RJMP	0x0419
    03BF 3140      CPI	R20,0x10
    03C0 E0E0      LDI	R30,0
    03C1 075E      CPC	R21,R30
    03C2 F409      BNE	0x03C4
    03C3 C038      RJMP	0x03FC
    03C4 C054      RJMP	0x0419
    03C5 3440      CPI	R20,0x40
    03C6 E0E0      LDI	R30,0
    03C7 075E      CPC	R21,R30
    03C8 F121      BEQ	0x03ED
    03C9 3440      CPI	R20,0x40
    03CA E0E0      LDI	R30,0
    03CB 075E      CPC	R21,R30
    03CC F40C      BGE	0x03CE
    03CD C04B      RJMP	0x0419
    03CE 3840      CPI	R20,0x80
    03CF E0E0      LDI	R30,0
    03D0 075E      CPC	R21,R30
    03D1 F409      BNE	0x03D3
    03D2 C038      RJMP	0x040B
    03D3 C045      RJMP	0x0419
(0267)       	 {//检测遥控器是否有键按下
(0268)           case 0x00:
(0269) 		      forward();           //前行
    03D4 DE35      RCALL	_forward
(0270) 			  sound_add=0x00;
    03D5 2422      CLR	R2
    03D6 2433      CLR	R3
    03D7 92300061  STS	0x61,R3
    03D9 92200060  STS	0x60,R2
(0271) 			  temp1=0x00;
    03DB 92200073  STS	_temp1,R2
(0272)       	    break;
    03DD C03B      RJMP	0x0419
(0273)           case 0x20:  // < A >
(0274) 		      turn_right();        //右转
    03DE DE12      RCALL	_turn_right
(0275) 			  temp1=sound_right[sound_add];
    03DF EF86      LDI	R24,0xF6
    03E0 E092      LDI	R25,2
    03E1 90200060  LDS	R2,0x60
    03E3 90300061  LDS	R3,0x61
    03E5 0E28      ADD	R2,R24
    03E6 1E39      ADC	R3,R25
    03E7 2DE2      MOV	R30,R2
    03E8 2DF3      MOV	R31,R3
    03E9 95C8      LPM
    03EA 92000073  STS	_temp1,R0
(0276)       	    break;
    03EC C02C      RJMP	0x0419
(0277)           case 0x40:  // < B >
(0278) 		      backward();          //后退
    03ED DE17      RCALL	_backward
(0279) 			  temp1=sound_back[sound_add];
    03EE E08C      LDI	R24,0xC
    03EF E093      LDI	R25,3
    03F0 90200060  LDS	R2,0x60
    03F2 90300061  LDS	R3,0x61
    03F4 0E28      ADD	R2,R24
    03F5 1E39      ADC	R3,R25
    03F6 2DE2      MOV	R30,R2
    03F7 2DF3      MOV	R31,R3
    03F8 95C8      LPM
    03F9 92000073  STS	_temp1,R0
(0280)       	    break;
    03FB C01D      RJMP	0x0419
(0281)           case 0x10:  // < C >
(0282) 		      stop();              //停止运动
    03FC DE12      RCALL	_stop
(0283) 			  temp1=sound_stop[sound_add];

⌨️ 快捷键说明

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