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

📄 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:
    02F1 95A8      WDR
(0202)  WDTCR = 0x0E; //WATCHDOG ENABLED - dont forget WDR
    02F2 E08E      LDI	R24,0xE
    02F3 BD81      OUT	P21,R24
(0203) }
    02F4 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:
    02F5 2422      CLR	R2
    02F6 BE23      OUT	P33,R2
(0211)  TCNT0 = 0x3D; //set count value
    02F7 E38D      LDI	R24,0x3D
    02F8 BF82      OUT	P32,R24
(0212)  TCCR0 = 0x05; //start timer
    02F9 E085      LDI	R24,5
    02FA BF83      OUT	P33,R24
(0213) }
    02FB 9508      RET
_timer0_ovf_isr:
    02FC D5D2      RCALL	push_lset
    02FD 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
    02FE E38D      LDI	R24,0x3D
    02FF BF82      OUT	P32,R24
(0219)  t0_times++;
    0300 91800066  LDS	R24,_t0_times
    0302 5F8F      SUBI	R24,0xFF
    0303 93800066  STS	_t0_times,R24
(0220)  	   remote_in = PINB & 0xF0;
    0305 B386      IN	R24,P16
    0306 7F80      ANDI	R24,0xF0
    0307 9380006E  STS	_remote_in,R24
(0221) 	   switch (remote_in)
    0309 2F48      MOV	R20,R24
    030A 2755      CLR	R21
    030B 3240      CPI	R20,0x20
    030C E0E0      LDI	R30,0
    030D 075E      CPC	R21,R30
    030E F129      BEQ	0x0334
    030F E280      LDI	R24,0x20
    0310 E090      LDI	R25,0
    0311 1784      CP	R24,R20
    0312 0795      CPC	R25,R21
    0313 F064      BLT	0x0320
    0314 3040      CPI	R20,0
    0315 0745      CPC	R20,R21
    0316 F0B1      BEQ	0x032D
    0317 3040      CPI	R20,0
    0318 E0E0      LDI	R30,0
    0319 075E      CPC	R21,R30
    031A F1BC      BLT	0x0352
    031B 3140      CPI	R20,0x10
    031C E0E0      LDI	R30,0
    031D 075E      CPC	R21,R30
    031E F119      BEQ	0x0342
    031F C032      RJMP	0x0352
    0320 3440      CPI	R20,0x40
    0321 E0E0      LDI	R30,0
    0322 075E      CPC	R21,R30
    0323 F0B9      BEQ	0x033B
    0324 3440      CPI	R20,0x40
    0325 E0E0      LDI	R30,0
    0326 075E      CPC	R21,R30
    0327 F154      BLT	0x0352
    0328 3840      CPI	R20,0x80
    0329 E0E0      LDI	R30,0
    032A 075E      CPC	R21,R30
    032B F101      BEQ	0x034C
    032C C025      RJMP	0x0352
(0222)       	 {//检测遥控器是否有键按下
(0223)           case 0x00:  // none
(0224) 			  rst_time=0;
    032D 2422      CLR	R2
    032E 2433      CLR	R3
    032F 92300076  STS	_rst_time+1,R3
    0331 92200075  STS	_rst_time,R2
(0225)       	    break;
    0333 C01E      RJMP	0x0352
(0226)           case 0x20:  // < A >
(0227) 			  rst_time=0;
    0334 2422      CLR	R2
    0335 2433      CLR	R3
    0336 92300076  STS	_rst_time+1,R3
    0338 92200075  STS	_rst_time,R2
(0228)       	    break;
    033A C017      RJMP	0x0352
(0229)           case 0x40:  // < B >
(0230) 		      rst_time=0;
    033B 2422      CLR	R2
    033C 2433      CLR	R3
    033D 92300076  STS	_rst_time+1,R3
    033F 92200075  STS	_rst_time,R2
(0231)       	    break;
    0341 C010      RJMP	0x0352
(0232)           case 0x10:  // < C >
(0233) 		      rst_time++;
    0342 91800075  LDS	R24,_rst_time
    0344 91900076  LDS	R25,_rst_time+1
    0346 9601      ADIW	R24,1
    0347 93900076  STS	_rst_time+1,R25
    0349 93800075  STS	_rst_time,R24
(0234)       	    break;
    034B C006      RJMP	0x0352
(0235)           case 0x80:  // < D >
(0236)               rst_time=0;
    034C 2422      CLR	R2
    034D 2433      CLR	R3
    034E 92300076  STS	_rst_time+1,R3
    0350 92200075  STS	_rst_time,R2
(0237)       	    break;
(0238)       	 }
(0239)  if(rst_time > 400)  // 400*25ms=10s,+1s 看门狗复位  
    0352 E980      LDI	R24,0x90
    0353 E091      LDI	R25,1
    0354 90200075  LDS	R2,_rst_time
    0356 90300076  LDS	R3,_rst_time+1
    0358 1582      CP	R24,R2
    0359 0593      CPC	R25,R3
    035A F420      BCC	0x035F
(0240)    {
(0241)     PORTA = 0xff;
    035B EF8F      LDI	R24,0xFF
    035C BB8B      OUT	P1B,R24
(0242) 	watchdog_init();
    035D DF93      RCALL	_watchdog_init
(0243) 	while(1);
    035E CFFF      RJMP	0x035E
(0244)    }
(0245)  if(gzsl == 0x88)
    035F 91800067  LDS	R24,_gzsl
    0361 3888      CPI	R24,0x88
    0362 F509      BNE	0x0384
(0246)    {
(0247)     if(t0_times == 10)
    0363 91800066  LDS	R24,_t0_times
    0365 308A      CPI	R24,0xA
    0366 F4E9      BNE	0x0384
(0248)       {
(0249) 	   timers++;
    0367 9180006D  LDS	R24,_timers
    0369 5F8F      SUBI	R24,0xFF
    036A 9380006D  STS	_timers,R24
(0250) 	   t0_times = 0;
    036C 2422      CLR	R2
    036D 92200066  STS	_t0_times,R2
(0251) 	   pa = led_data[timers];
    036F E388      LDI	R24,0x38
    0370 E090      LDI	R25,0
    0371 9020006D  LDS	R2,_timers
    0373 2433      CLR	R3
    0374 0E28      ADD	R2,R24
    0375 1E39      ADC	R3,R25
    0376 2DE2      MOV	R30,R2
    0377 2DF3      MOV	R31,R3
    0378 95C8      LPM
    0379 92000072  STS	_pa,R0
(0252) 	   if(pa==0x0a){timers=0;}
    037B 2D80      MOV	R24,R0
    037C 308A      CPI	R24,0xA
    037D F419      BNE	0x0381
    037E 2422      CLR	R2
    037F 9220006D  STS	_timers,R2
(0253) 	   PORTA = pa;	   
    0381 90200072  LDS	R2,_pa
    0383 BA2B      OUT	P1B,R2
(0254)       }
(0255)    }
(0256)  if(gzsl == 0x33)
    0384 91800067  LDS	R24,_gzsl
    0386 3383      CPI	R24,0x33
    0387 F009      BEQ	0x0389
    0388 C08C      RJMP	0x0415
(0257)    {
(0258)     sw_touch();
    0389 DE85      RCALL	_sw_touch
(0259) 	if(t0_times == 8)     //8*25ms=200ms
    038A 91800066  LDS	R24,_t0_times
    038C 3088      CPI	R24,0x8
    038D F009      BEQ	0x038F
    038E C086      RJMP	0x0415
(0260)       {
(0261) 	   t0_times = 0;
    038F 2422      CLR	R2
    0390 92200066  STS	_t0_times,R2
(0262) 	   remote_in = PINB & 0xF0;
    0392 B386      IN	R24,P16
    0393 7F80      ANDI	R24,0xF0
    0394 9380006E  STS	_remote_in,R24
(0263) 	   sound_1 = remote_in;
    0396 2E28      MOV	R2,R24
    0397 92200065  STS	_sound_1,R2
(0264)        if(sound_2 != sound_1)
    0399 90300064  LDS	R3,_sound_2
    039B 1638      CP	R3,R24
    039C F051      BEQ	0x03A7
(0265) 	     {sound_add=0;sound_2 = sound_1;}
    039D 2422      CLR	R2
    039E 2433      CLR	R3
    039F 92300061  STS	0x61,R3
    03A1 92200060  STS	0x60,R2
    03A3 90200065  LDS	R2,_sound_1
    03A5 92200064  STS	_sound_2,R2
(0266) 	   switch (remote_in)
    03A7 9140006E  LDS	R20,_remote_in
    03A9 2755      CLR	R21
    03AA 3240      CPI	R20,0x20
    03AB E0E0      LDI	R30,0
    03AC 075E      CPC	R21,R30
    03AD F161      BEQ	0x03DA
    03AE E280      LDI	R24,0x20
    03AF E090      LDI	R25,0
    03B0 1784      CP	R24,R20
    03B1 0795      CPC	R25,R21
    03B2 F074      BLT	0x03C1
    03B3 3040      CPI	R20,0
    03B4 0745      CPC	R20,R21
    03B5 F0D1      BEQ	0x03D0
    03B6 3040      CPI	R20,0
    03B7 E0E0      LDI	R30,0
    03B8 075E      CPC	R21,R30
    03B9 F40C      BGE	0x03BB
    03BA C05A      RJMP	0x0415
    03BB 3140      CPI	R20,0x10
    03BC E0E0      LDI	R30,0
    03BD 075E      CPC	R21,R30
    03BE F409      BNE	0x03C0
    03BF C038      RJMP	0x03F8
    03C0 C054      RJMP	0x0415
    03C1 3440      CPI	R20,0x40
    03C2 E0E0      LDI	R30,0
    03C3 075E      CPC	R21,R30
    03C4 F121      BEQ	0x03E9
    03C5 3440      CPI	R20,0x40
    03C6 E0E0      LDI	R30,0
    03C7 075E      CPC	R21,R30
    03C8 F40C      BGE	0x03CA
    03C9 C04B      RJMP	0x0415
    03CA 3840      CPI	R20,0x80
    03CB E0E0      LDI	R30,0
    03CC 075E      CPC	R21,R30
    03CD F409      BNE	0x03CF
    03CE C038      RJMP	0x0407
    03CF C045      RJMP	0x0415
(0267)       	 {//检测遥控器是否有键按下
(0268)           case 0x00:
(0269) 		      forward();           //前行
    03D0 DE35      RCALL	_forward
(0270) 			  sound_add=0x00;
    03D1 2422      CLR	R2
    03D2 2433      CLR	R3
    03D3 92300061  STS	0x61,R3
    03D5 92200060  STS	0x60,R2
(0271) 			  temp1=0x00;
    03D7 92200073  STS	_temp1,R2
(0272)       	    break;
    03D9 C03B      RJMP	0x0415
(0273)           case 0x20:  // < A >
(0274) 		      turn_right();        //右转
    03DA DE12      RCALL	_turn_right
(0275) 			  temp1=sound_right[sound_add];
    03DB EE8E      LDI	R24,0xEE
    03DC E092      LDI	R25,2
    03DD 90200060  LDS	R2,0x60
    03DF 90300061  LDS	R3,0x61
    03E1 0E28      ADD	R2,R24
    03E2 1E39      ADC	R3,R25
    03E3 2DE2      MOV	R30,R2
    03E4 2DF3      MOV	R31,R3
    03E5 95C8      LPM
    03E6 92000073  STS	_temp1,R0
(0276)       	    break;
    03E8 C02C      RJMP	0x0415
(0277)           case 0x40:  // < B >
(0278) 		      backward();          //后退
    03E9 DE17      RCALL	_backward
(0279) 			  temp1=sound_back[sound_add];
    03EA E084      LDI	R24,4
    03EB E093      LDI	R25,3
    03EC 90200060  LDS	R2,0x60
    03EE 90300061  LDS	R3,0x61
    03F0 0E28      ADD	R2,R24
    03F1 1E39      ADC	R3,R25
    03F2 2DE2      MOV	R30,R2
    03F3 2DF3      MOV	R31,R3
    03F4 95C8      LPM
    03F5 92000073  STS	_temp1,R0
(0280)       	    break;
    03F7 C01D      RJMP	0x0415
(0281)           case 0x10:  // < C >
(0282) 		      stop();              //停止运动
    03F8 DE12      RCALL	_stop
(0283) 			  temp1=sound_stop[sound_add];

⌨️ 快捷键说明

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