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

📄 diy0206_4.lst

📁 双龙的积木式智能机器人C源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    023F EF0A      LDI	R16,0xFA
    0240 E010      LDI	R17,0
    0241 DF9D      RCALL	_delay_ms
(0205)    }  
(0206)  if(sw_in == 0x03)// 0b 0000,0011  左侧开关接触
    0242 3043      CPI	R20,3
    0243 F441      BNE	0x024C
(0207)    {//后退,左转
(0208)        backward();          //后退
    0244 DFBC      RCALL	_backward
(0209)        delay_ms(touch_time);
    0245 EF0A      LDI	R16,0xFA
    0246 E010      LDI	R17,0
    0247 DF97      RCALL	_delay_ms
(0210)        
(0211) 	   turn_left();         //左转
    0248 DFA9      RCALL	_turn_left
(0212)        delay_ms(touch_time);
    0249 EF0A      LDI	R16,0xFA
    024A E010      LDI	R17,0
    024B DF93      RCALL	_delay_ms
(0213)    }
(0214)  if(sw_in == 0x02)// 0b 0000,0010  两侧开关同时接触,停止运动
    024C 3042      CPI	R20,2
    024D F4F9      BNE	0x026D
(0215)    {
(0216) 	stop();       //停止运动,熄灭指示灯
    024E DFBC      RCALL	_stop
(0217)     delay_ms(touch_time*4);
    024F EE08      LDI	R16,0xE8
    0250 E013      LDI	R17,3
    0251 DF8D      RCALL	_delay_ms
    0252 C019      RJMP	0x026C
(0218) 	while(1)
(0219) 	     {
(0220) 		  sw_in = PINC & 0x10;
    0253 B343      IN	R20,P13
    0254 7140      ANDI	R20,0x10
(0221) 		  if(sw_in == 0x00)
    0255 F409      BNE	0x0257
(0222) 		    {break;}//首部开关接触继续启动运动
    0256 C016      RJMP	0x026D
(0223) 		  PORTA = 0x55;//停止不运动时pa口指示灯流动闪烁
    0257 E585      LDI	R24,0x55
    0258 BB8B      OUT	P1B,R24
(0224) 		  delay_ms(250);
    0259 EF0A      LDI	R16,0xFA
    025A E010      LDI	R17,0
    025B DF83      RCALL	_delay_ms
(0225) 		  PORTA = 0xAA;
    025C EA8A      LDI	R24,0xAA
    025D BB8B      OUT	P1B,R24
(0226) 		  delay_ms(250);
    025E EF0A      LDI	R16,0xFA
    025F E010      LDI	R17,0
    0260 DF7E      RCALL	_delay_ms
(0227) 		  remote_in = PINB & 0xf0;//遥控器控制继续运动
    0261 B366      IN	R22,P16
    0262 7F60      ANDI	R22,0xF0
(0228) 		  if(remote_in == 0x10 || remote_in == 0x20 || remote_in == 0x40 || remote_in == 0x80)
    0263 3160      CPI	R22,0x10
    0264 F031      BEQ	0x026B
    0265 3260      CPI	R22,0x20
    0266 F021      BEQ	0x026B
    0267 3460      CPI	R22,0x40
    0268 F011      BEQ	0x026B
    0269 3860      CPI	R22,0x80
    026A F409      BNE	0x026C
(0229) 		    {break;}
    026B C001      RJMP	0x026D
    026C CFE6      RJMP	0x0253
(0230) 		 }
(0231)    }   
(0232) }
    026D D637      RCALL	pop_gset2
    026E 9508      RET
(0233) 
(0234) void mic_startup()
(0235) {//声控启动程序运行
_mic_startup:
  mic_in               --> R16
    026F C004      RJMP	0x0274
(0236)  unsigned char mic_in;
(0237)  while(1)//等待PB2按键按下	
(0238)    {	  //无键按下等待
(0239)     mic_in=PINB & 0x04;     //pb2=0
    0270 B306      IN	R16,P16
    0271 7004      ANDI	R16,4
(0240)     if(mic_in==0){break;}
    0272 F409      BNE	0x0274
    0273 C001      RJMP	0x0275
    0274 CFFB      RJMP	0x0270
(0241)    }//有键按下运行下面的程序
(0242) }
    0275 9508      RET
(0243) 
(0244) //                #       
(0245) //                #
(0246) //                #
(0247) //                #
(0248) //                #    //  delay_time1  转弯时间
(0249) //        # # # # #    //  delay_time2  直行时间
(0250) //      # X       #    //<A>  0x40  delay_time2-50
(0251) //      #   B  C  #    //<B>  0x20  delay_time1+50
(0252) //      #  D  A   #    //<C>  0x80  delay_time1-50
(0253) //      #         #    //<D>  0x10  delay_time2+50
(0254) //        # # # #      // max: 2000   min: 200 
(0255) 
(0256) unsigned int delay_time1,delay_time2;
(0257) 
(0258) void remote_auto_time()
(0259) {
(0260)  unsigned char remote_in;
(0261)  	  remote_in = PINB & 0xF0;
_remote_auto_time:
  remote_in            --> R16
    0276 B306      IN	R16,P16
    0277 7F00      ANDI	R16,0xF0
(0262)       switch (remote_in)
    0278 2711      CLR	R17
    0279 3200      CPI	R16,0x20
    027A E0E0      LDI	R30,0
    027B 071E      CPC	R17,R30
    027C F119      BEQ	0x02A0
    027D E280      LDI	R24,0x20
    027E E090      LDI	R25,0
    027F 1780      CP	R24,R16
    0280 0791      CPC	R25,R17
    0281 F07C      BLT	0x0291
    0282 3000      CPI	R16,0
    0283 0701      CPC	R16,R17
    0284 F409      BNE	0x0286
    0285 C06A      RJMP	0x02F0
    0286 3000      CPI	R16,0
    0287 E0E0      LDI	R30,0
    0288 071E      CPC	R17,R30
    0289 F40C      BGE	0x028B
    028A C065      RJMP	0x02F0
    028B 3100      CPI	R16,0x10
    028C E0E0      LDI	R30,0
    028D 071E      CPC	R17,R30
    028E F409      BNE	0x0290
    028F C039      RJMP	0x02C9
    0290 C05F      RJMP	0x02F0
    0291 3400      CPI	R16,0x40
    0292 E0E0      LDI	R30,0
    0293 071E      CPC	R17,R30
    0294 F101      BEQ	0x02B5
    0295 3400      CPI	R16,0x40
    0296 E0E0      LDI	R30,0
    0297 071E      CPC	R17,R30
    0298 F40C      BGE	0x029A
    0299 C056      RJMP	0x02F0
    029A 3800      CPI	R16,0x80
    029B E0E0      LDI	R30,0
    029C 071E      CPC	R17,R30
    029D F409      BNE	0x029F
    029E C03E      RJMP	0x02DD
    029F C050      RJMP	0x02F0
(0263)       	{//检测遥控器是否有键按下
(0264)       case 0x20:  // < A >
(0265) 		 delay_time2 = delay_time2 - 50;
    02A0 91800079  LDS	R24,_delay_time2
    02A2 9190007A  LDS	R25,_delay_time2+1
    02A4 97C2      SBIW	R24,0x32
    02A5 9390007A  STS	_delay_time2+1,R25
    02A7 93800079  STS	_delay_time2,R24
(0266) 	     if(delay_time2 == 50)
    02A9 3382      CPI	R24,0x32
    02AA E0E0      LDI	R30,0
    02AB 079E      CPC	R25,R30
    02AC F009      BEQ	0x02AE
    02AD C042      RJMP	0x02F0
(0267) 		   {delay_time2 = 100;}	 
    02AE E684      LDI	R24,0x64
    02AF E090      LDI	R25,0
    02B0 9390007A  STS	_delay_time2+1,R25
    02B2 93800079  STS	_delay_time2,R24
(0268)       	break;
    02B4 C03B      RJMP	0x02F0
(0269)       case 0x40:  // < B >
(0270) 		 delay_time1 = delay_time1 + 50;
    02B5 9180007B  LDS	R24,_delay_time1
    02B7 9190007C  LDS	R25,_delay_time1+1
    02B9 96C2      ADIW	R24,0x32
    02BA 9390007C  STS	_delay_time1+1,R25
    02BC 9380007B  STS	_delay_time1,R24
(0271) 	     if(delay_time1 == 2050)
    02BE 3082      CPI	R24,2
    02BF E0E8      LDI	R30,0x8
    02C0 079E      CPC	R25,R30
    02C1 F571      BNE	0x02F0
(0272) 		   {delay_time1 = 2000;}	 
    02C2 ED80      LDI	R24,0xD0
    02C3 E097      LDI	R25,7
    02C4 9390007C  STS	_delay_time1+1,R25
    02C6 9380007B  STS	_delay_time1,R24
(0273)       	break;
    02C8 C027      RJMP	0x02F0
(0274)       case 0x10:  // < C >
(0275) 		 delay_time1 = delay_time1 - 50;
    02C9 9180007B  LDS	R24,_delay_time1
    02CB 9190007C  LDS	R25,_delay_time1+1
    02CD 97C2      SBIW	R24,0x32
    02CE 9390007C  STS	_delay_time1+1,R25
    02D0 9380007B  STS	_delay_time1,R24
(0276) 	     if(delay_time1 == 50)
    02D2 3382      CPI	R24,0x32
    02D3 E0E0      LDI	R30,0
    02D4 079E      CPC	R25,R30
    02D5 F4D1      BNE	0x02F0
(0277) 		   {delay_time1 = 100;}	 
    02D6 E684      LDI	R24,0x64
    02D7 E090      LDI	R25,0
    02D8 9390007C  STS	_delay_time1+1,R25
    02DA 9380007B  STS	_delay_time1,R24
(0278)       	break;
    02DC C013      RJMP	0x02F0
(0279)       case 0x80:  // < D >
(0280)          delay_time2 = delay_time2 + 50;
    02DD 91800079  LDS	R24,_delay_time2
    02DF 9190007A  LDS	R25,_delay_time2+1
    02E1 96C2      ADIW	R24,0x32
    02E2 9390007A  STS	_delay_time2+1,R25
    02E4 93800079  STS	_delay_time2,R24
(0281) 	     if(delay_time2 == 2050)
    02E6 3082      CPI	R24,2
    02E7 E0E8      LDI	R30,0x8
    02E8 079E      CPC	R25,R30
    02E9 F431      BNE	0x02F0
(0282) 		   {delay_time2 = 2000;}	 
    02EA ED80      LDI	R24,0xD0
    02EB E097      LDI	R25,7
    02EC 9390007A  STS	_delay_time2+1,R25
    02EE 93800079  STS	_delay_time2,R24
(0283)       	break;
(0284)       case 0x00:  // 无按键
(0285) 	     break;
(0286) 		} 
(0287) }
    02F0 9508      RET
FILE: E:\icc\iccavr\diy02-6\8515\diy0206_4\diy0206_4.c
(0001) /*******************************************/
(0002) /*            广州天河双龙电子公司         */
(0003) /*            http://www.sl.com.cn         */
(0004) /*     020-85510191,87578852,87578872      */
(0005) /*              nikko@sl.com.cn            */
(0006) /*******************************************/
(0007) 
(0008) //遥控器没有按键或者 pd3,pd2,pd1,pd0 短路块全部接上,全为高电平
(0009) //机器人运行音乐机器人程序。     
(0010) 	//PA口为音乐灯,当不同的音乐节奏,点亮不同的灯。
(0011)     //声控起动音乐机器人程序,未起动时,PA口的8 LED 呈广告灯效果(霓虹灯)
(0012)     //声控起动后,机器人开始演奏音乐,同时PA口LED灯根据音乐节拍闪烁
(0013)     //按遥控器上不同的键后可改变机器人演奏的乐曲。
(0014) 
(0015) //将 pd0 接低电平,pd3,pd2,pd1 保持高电平
(0016) //       或按下遥控器<A>(保持 0.5s)        进入遥控机器人运行环境 
(0017)          //声控起动遥控车程序,未起动时,PA口的8 LED 呈广告灯效果(霓虹灯)
(0018)          //声控起动后,机器人开始动作
(0019)          //遥控器无按键,机器人直行
(0020)          //按住 < A > 键,机器人右转,同时演奏右转指示音乐;
(0021)          //按住 < B > 键,机器人后退,同时演奏后退指示音乐;
(0022)          //按住 < C > 键,机器人停止,同时演奏停止指示音乐;
(0023)          //按住 < D > 键,机器人左转,同时演奏左转指示音乐;
(0024)          //释放遥控器按键,音乐停止
(0025) 
(0026) //将 pd1 接低电平,pd3,pd2,pd0 保持高电平
(0027) //       或按下遥控器<B>(保持 0.5s)        寻迹机器人,探测白底黑线,沿黑线行进 
(0028)          //声控起动寻迹机器人程序,未起动时,PA口的 8 LED 呈广告灯效果(霓虹灯)
(0029)          //声控起动后,机器人开始动作,PA口的 8 LED 指示运动状态
(0030) 
(0031) //将 pd2 接低电平,pd3,pd1,pd0 保持高电平,只连接pd2的短路块
(0032) //       或按下遥控器<C>(保持 0.5s)        机器人避障碍、避悬崖行进 
(0033)          //声控起动避悬崖,壁障碍运行程序,未起动时,PA口的8 LED 呈广告灯效果(霓虹灯)
(0034)          //声控起动后,机器人开始动作,PA口的 8 LED 指示运动状态
(0035)          //探测到边缘,后退、转弯,并以伴有音乐提示。
(0036) 
(0037) //将 pd3 接低电平,pd2,pd1,pd0 保持高电平
(0038) //       或按下遥控器<D>(保持 0.5s)        机器人按程序设定路线行走,走四方形,同时演奏音乐 
(0039)          //自走车   机器人走四方形路线,遥控器调节行走路线
(0040)          //声控起动机器人按设定路线行走,未起动时,PA口的 8 LED 呈广告灯效果(霓虹灯)
(0041)          //声控起动后,机器人开始动作,PA口的 8 LED 指示运动状态
(0042) 
(0043) //程序等待声控起动运行,未启动运行时机器人运行霓虹车程序。
(0044) //连续按住遥控器 < C > 键超过 10s 起动看门狗,再过 1s 系统复位
(0045) 
(0046) //将 diy0206.c 文件拷贝到 icc avr 安装目录的<include>文件夹
(0047) //diy0206.c 是diy0206机器人板的子函数库
(0048) //程序中调用此文件后 #include <diy0206.c>
(0049) //可直接调用里面的函数和变量
(0050) 
(0051) //  最后更新:2003.04.17
(0052) 
(0053) #include <io8515v.h>
(0054) #include <macros.h>
(0055) #include <diy0206.c>
(0056) #include <eeprom.h>
(0057) 
(0058) #define xuanya_delayms  300
(0059) #define cny_delayms 50
(0060) #define light_delay 100
(0061) 
(0062) /* 		  音乐数据  	  */
(0063) /* 四分之一拍为0x10, 二分之一拍为0x20, 一拍为0x40 */
(0064) /* 低1-1 2-2 3-3 4-4 5-5 6-6 7-7 */
(0065) /* 中1-8 2-9 3-A 4-B 5-C 6-D 7-E */
(0066) /* 高1-F */								  	
(0067) #pragma data:eeprom
(0068) unsigned char sound[]={ //乐曲数据表
(0069) //情非得以 
(0070) 0x20,0x1c,0x1d,0x4c,0x4c,0x4c,0x4c,0x20,0x2d,0x19,0x1a,0x19,0x18,0x48,0x48,0x48,
(0071) 0x48,0x47,0x47,0x46,0x46,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,0x45,
(0072) 
(0073) 0x23,0x24,0x25,0x44,0x45,0x24,0x23,0x22,0x42,0x40,0x40,0x23,0x22,0x21,0x41,0x28,
(0074) 0x48,0x23,0x25,0x45,0x40,0x40,0x21,0x21,0x42,0x21,0x21,0x41,0x20,0x28,0x47,0x26,
(0075) 0x17,0x16,0x15,0x45,0x40,0x31,0x11,0x21,0x21,0x21,0x22,0x42,0x40,0x20,0x23,0x23,
(0076) 0x24,0x25,0x24,0x23,0x24,0x25,0x26,0x23,0x23,0x42,0x42,0x40,0x23,0x22,0x21,0x41,
(0077) 0x28,0x28,0x28,0x23,0x25,0x45,0x45,0x40,0x20,0x25,0x46,0x28,0x28,0x48,0x20,0x29,
(0078) 0x47,0x26,0x17,0x16,0x15,0x45,0x25,0x25,0x26,0x28,0x18,0x16,0x26,0x28,0x26,0x28,
(0079) 0x19,0x19,0x49,0x49,0x20,0x25,0x2a,0x18,0x19,0x29,0x28,0x16,0x17,0x16,0x15,0x25,
(0080) 0x25,0x28,0x29,0x2a,0x29,0x48,0x28,0x48,0x2c,0x4c,0x4c,0x40,0x2a,0x2c,0x1c,0x1a,
(0081) 0x2a,0x2a,0x29,0x4a,0x2b,0x2a,0x4a,0x4a,0x40,0x2a,0x29,0x29,0x28,0x28,0x26,0x48,
(0082) 0x29,0x26,0x45,0x45,0x40,0x25,0x25,0x26,0x21,0x18,0x16,0x26,0x28,0x26,0x28,0x29,
(0083) 0x49,0x49,0x20,0x25,0x28,0x29,0x2a,0x29,0x49,0x28,0x48,0x2c,0x4c,0x4c,0x40,0x2a,
(0084) 0x2c,0x15,0x1a,0x2a,0x2a,0x29,0x4a,0x2b,0x2a,0x4a,0x4a,0x40,0x2a,0x29,0x29,0x28,
(0085) 0x28,0x26,0x28,0x28,0x29,0x26,0x45,0x45,0x40,0x25,0x25,0x26,0x28,0x28,0x26,0x2a,
(0086) 0x19,0x18,0x28,0x18,0x19,0x48,0x48,0x40,0x40,0x40,0x40,0x28,0x48,0x29,0x28,0x28,
(0087) 0x2a,0x1a,0x1a,0x1a,0x18,0x40,0x20,0x26,0x28,0x28,0x28,0x26,0x28,0x48,0x26,0x25,
(0088) 0x45,0x45,0x40,0x40,0x40,0x28,0x48,0x28,0x28,0x1c,0x1d,0x2d,0x2c,0x28,0x28,0x28,
(0089) 0x20,0x26,0x19,0x1a,0x29,0x19,0x18,0x28,0x28,0x26,0x21,0x29,0x49,0x49,0x40,0x20,
(0090) 0x28,0x29,0x2a,0x4a,0x4a,0x20,0x25,0x28,0x29,0x48,0x48,0x48,0x25,0x25,0x26,0x28,
(0091) 0x28,0x26,0x2a,0x19,0x18,0x28,0x18,0x19,0x49,0x49,0x40,0x40,
(0092) 
(0093) 		0x00,0x00
(0094) 						};
(0095) #pragma data:data						
(0096) /*	  		    音阶表				*/	
(0097) const unsigned int TONETABLE[15]={DO,RE,MI,FA,SO,LA,TI,DO_H,
(0098) 			    	 	RE_H,MI_H,FA_H,SO_H,LA_H,TI_H,DO_HH};
(0099) /*			  音阶重装常数			*/						
(0100) unsigned int toneconst;								  							   						 				 	 	 
(0101) unsigned int sound_add=0;
(0102) unsigned int rst_time,delay_time1,delay_time2,led_delayms=600;
(0103) unsigned char temp,temp1;
(0104) unsigned char pa,pb,pc,pd,remote_in,timers,cny_in,cny_times,cds,pd_select,remote_select;
(0105) unsigned char gzsl,t0_times;
(0106) unsigned char sound_1,sound_2;
(0107) 
(0108) const unsigned char led_data[]=
(0109)     {//设置LED广告灯数据表
(0110)      0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,
(0111)      0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,
(0112)      0x00,0x18,0x3c,0x7e,0xff,0x7e,0x3c,0x18,
(0113)      0x00,0x18,0x3c,0x7e,0xff,0x7e,0x3c,0x18,
(0114)      0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x8f,0xc7,0xe3,0xf1,
(0115)      0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x8f,0xc7,0xe3,0xf1,
(0116)      0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,
(0117)      0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,
(0118)      0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,
(0119)      0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,
(0120)      0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,
(0121) 	 
(0122)      0x0a,0x0a
(0123)     };
(0124) 
(0125) const unsigned char music_11[]=
(0126) {//七子之歌
(0127)     0x45,0x23,0x25,0x23,0x65,0x26,0x25,0x23,0x26,0x45,0x45,0x41,
(0128)     0x21,0x22,0x43,0x25,0x23,0x42,0x20,0x23,0x45,0x45,0x25,0x25,
(0129)     0x26,0x25,0x23,0x45,0x25,0x26,0x25,0x28,0x26,0x45,0x45,0x41,
(0130)     0x25,0x23,0x22,0x21,0x42,0x23,0x65,0x25,0x22,0x43,0x41,0x41,
(0131)     0x41,0x41,0x45,0x23,0x25,0x23,0x65,0x26,0x25,0x23,0x26,0x45,

⌨️ 快捷键说明

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