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

📄 diy0206_4.lst

📁 双龙的积木式智能机器人C源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0243 EF0A      LDI	R16,0xFA
    0244 E010      LDI	R17,0
    0245 DF9D      RCALL	_delay_ms
(0205)    }  
(0206)  if(sw_in == 0x03)// 0b 0000,0011  左侧开关接触
    0246 3043      CPI	R20,3
    0247 F441      BNE	0x0250
(0207)    {//后退,左转
(0208)        backward();          //后退
    0248 DFBC      RCALL	_backward
(0209)        delay_ms(touch_time);
    0249 EF0A      LDI	R16,0xFA
    024A E010      LDI	R17,0
    024B DF97      RCALL	_delay_ms
(0210)        
(0211) 	   turn_left();         //左转
    024C DFA9      RCALL	_turn_left
(0212)        delay_ms(touch_time);
    024D EF0A      LDI	R16,0xFA
    024E E010      LDI	R17,0
    024F DF93      RCALL	_delay_ms
(0213)    }
(0214)  if(sw_in == 0x02)// 0b 0000,0010  两侧开关同时接触,停止运动
    0250 3042      CPI	R20,2
    0251 F4F9      BNE	0x0271
(0215)    {
(0216) 	stop();       //停止运动,熄灭指示灯
    0252 DFBC      RCALL	_stop
(0217)     delay_ms(touch_time*4);
    0253 EE08      LDI	R16,0xE8
    0254 E013      LDI	R17,3
    0255 DF8D      RCALL	_delay_ms
    0256 C019      RJMP	0x0270
(0218) 	while(1)
(0219) 	     {
(0220) 		  sw_in = PINC & 0x10;
    0257 B343      IN	R20,P13
    0258 7140      ANDI	R20,0x10
(0221) 		  if(sw_in == 0x00)
    0259 F409      BNE	0x025B
(0222) 		    {break;}//首部开关接触继续启动运动
    025A C016      RJMP	0x0271
(0223) 		  PORTA = 0x55;//停止不运动时pa口指示灯流动闪烁
    025B E585      LDI	R24,0x55
    025C BB8B      OUT	P1B,R24
(0224) 		  delay_ms(250);
    025D EF0A      LDI	R16,0xFA
    025E E010      LDI	R17,0
    025F DF83      RCALL	_delay_ms
(0225) 		  PORTA = 0xAA;
    0260 EA8A      LDI	R24,0xAA
    0261 BB8B      OUT	P1B,R24
(0226) 		  delay_ms(250);
    0262 EF0A      LDI	R16,0xFA
    0263 E010      LDI	R17,0
    0264 DF7E      RCALL	_delay_ms
(0227) 		  remote_in = PINB & 0xf0;//遥控器控制继续运动
    0265 B366      IN	R22,P16
    0266 7F60      ANDI	R22,0xF0
(0228) 		  if(remote_in == 0x10 || remote_in == 0x20 || remote_in == 0x40 || remote_in == 0x80)
    0267 3160      CPI	R22,0x10
    0268 F031      BEQ	0x026F
    0269 3260      CPI	R22,0x20
    026A F021      BEQ	0x026F
    026B 3460      CPI	R22,0x40
    026C F011      BEQ	0x026F
    026D 3860      CPI	R22,0x80
    026E F409      BNE	0x0270
(0229) 		    {break;}
    026F C001      RJMP	0x0271
    0270 CFE6      RJMP	0x0257
(0230) 		 }
(0231)    }   
(0232) }
    0271 D637      RCALL	pop_gset2
    0272 9508      RET
(0233) 
(0234) void mic_startup()
(0235) {//声控启动程序运行
_mic_startup:
  mic_in               --> R16
    0273 C004      RJMP	0x0278
(0236)  unsigned char mic_in;
(0237)  while(1)//等待PB2按键按下	
(0238)    {	  //无键按下等待
(0239)     mic_in=PINB & 0x04;     //pb2=0
    0274 B306      IN	R16,P16
    0275 7004      ANDI	R16,4
(0240)     if(mic_in==0){break;}
    0276 F409      BNE	0x0278
    0277 C001      RJMP	0x0279
    0278 CFFB      RJMP	0x0274
(0241)    }//有键按下运行下面的程序
(0242) }
    0279 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
    027A B306      IN	R16,P16
    027B 7F00      ANDI	R16,0xF0
(0262)       switch (remote_in)
    027C 2711      CLR	R17
    027D 3200      CPI	R16,0x20
    027E E0E0      LDI	R30,0
    027F 071E      CPC	R17,R30
    0280 F119      BEQ	0x02A4
    0281 E280      LDI	R24,0x20
    0282 E090      LDI	R25,0
    0283 1780      CP	R24,R16
    0284 0791      CPC	R25,R17
    0285 F07C      BLT	0x0295
    0286 3000      CPI	R16,0
    0287 0701      CPC	R16,R17
    0288 F409      BNE	0x028A
    0289 C06A      RJMP	0x02F4
    028A 3000      CPI	R16,0
    028B E0E0      LDI	R30,0
    028C 071E      CPC	R17,R30
    028D F40C      BGE	0x028F
    028E C065      RJMP	0x02F4
    028F 3100      CPI	R16,0x10
    0290 E0E0      LDI	R30,0
    0291 071E      CPC	R17,R30
    0292 F409      BNE	0x0294
    0293 C039      RJMP	0x02CD
    0294 C05F      RJMP	0x02F4
    0295 3400      CPI	R16,0x40
    0296 E0E0      LDI	R30,0
    0297 071E      CPC	R17,R30
    0298 F101      BEQ	0x02B9
    0299 3400      CPI	R16,0x40
    029A E0E0      LDI	R30,0
    029B 071E      CPC	R17,R30
    029C F40C      BGE	0x029E
    029D C056      RJMP	0x02F4
    029E 3800      CPI	R16,0x80
    029F E0E0      LDI	R30,0
    02A0 071E      CPC	R17,R30
    02A1 F409      BNE	0x02A3
    02A2 C03E      RJMP	0x02E1
    02A3 C050      RJMP	0x02F4
(0263)       	{//检测遥控器是否有键按下
(0264)       case 0x20:  // < A >
(0265) 		 delay_time2 = delay_time2 - 50;
    02A4 91800079  LDS	R24,_delay_time2
    02A6 9190007A  LDS	R25,_delay_time2+1
    02A8 97C2      SBIW	R24,0x32
    02A9 9390007A  STS	_delay_time2+1,R25
    02AB 93800079  STS	_delay_time2,R24
(0266) 	     if(delay_time2 == 50)
    02AD 3382      CPI	R24,0x32
    02AE E0E0      LDI	R30,0
    02AF 079E      CPC	R25,R30
    02B0 F009      BEQ	0x02B2
    02B1 C042      RJMP	0x02F4
(0267) 		   {delay_time2 = 100;}	 
    02B2 E684      LDI	R24,0x64
    02B3 E090      LDI	R25,0
    02B4 9390007A  STS	_delay_time2+1,R25
    02B6 93800079  STS	_delay_time2,R24
(0268)       	break;
    02B8 C03B      RJMP	0x02F4
(0269)       case 0x40:  // < B >
(0270) 		 delay_time1 = delay_time1 + 50;
    02B9 9180007B  LDS	R24,_delay_time1
    02BB 9190007C  LDS	R25,_delay_time1+1
    02BD 96C2      ADIW	R24,0x32
    02BE 9390007C  STS	_delay_time1+1,R25
    02C0 9380007B  STS	_delay_time1,R24
(0271) 	     if(delay_time1 == 2050)
    02C2 3082      CPI	R24,2
    02C3 E0E8      LDI	R30,0x8
    02C4 079E      CPC	R25,R30
    02C5 F571      BNE	0x02F4
(0272) 		   {delay_time1 = 2000;}	 
    02C6 ED80      LDI	R24,0xD0
    02C7 E097      LDI	R25,7
    02C8 9390007C  STS	_delay_time1+1,R25
    02CA 9380007B  STS	_delay_time1,R24
(0273)       	break;
    02CC C027      RJMP	0x02F4
(0274)       case 0x10:  // < C >
(0275) 		 delay_time1 = delay_time1 - 50;
    02CD 9180007B  LDS	R24,_delay_time1
    02CF 9190007C  LDS	R25,_delay_time1+1
    02D1 97C2      SBIW	R24,0x32
    02D2 9390007C  STS	_delay_time1+1,R25
    02D4 9380007B  STS	_delay_time1,R24
(0276) 	     if(delay_time1 == 50)
    02D6 3382      CPI	R24,0x32
    02D7 E0E0      LDI	R30,0
    02D8 079E      CPC	R25,R30
    02D9 F4D1      BNE	0x02F4
(0277) 		   {delay_time1 = 100;}	 
    02DA E684      LDI	R24,0x64
    02DB E090      LDI	R25,0
    02DC 9390007C  STS	_delay_time1+1,R25
    02DE 9380007B  STS	_delay_time1,R24
(0278)       	break;
    02E0 C013      RJMP	0x02F4
(0279)       case 0x80:  // < D >
(0280)          delay_time2 = delay_time2 + 50;
    02E1 91800079  LDS	R24,_delay_time2
    02E3 9190007A  LDS	R25,_delay_time2+1
    02E5 96C2      ADIW	R24,0x32
    02E6 9390007A  STS	_delay_time2+1,R25
    02E8 93800079  STS	_delay_time2,R24
(0281) 	     if(delay_time2 == 2050)
    02EA 3082      CPI	R24,2
    02EB E0E8      LDI	R30,0x8
    02EC 079E      CPC	R25,R30
    02ED F431      BNE	0x02F4
(0282) 		   {delay_time2 = 2000;}	 
    02EE ED80      LDI	R24,0xD0
    02EF E097      LDI	R25,7
    02F0 9390007A  STS	_delay_time2+1,R25
    02F2 93800079  STS	_delay_time2,R24
(0283)       	break;
(0284)       case 0x00:  // 无按键
(0285) 	     break;
(0286) 		} 
(0287) }
    02F4 9508      RET
FILE: E:\icc\iccavr\diy02-6\8535\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 <io8535v.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 + -