📄 sl3010_4.lst
字号:
0247 E010 LDI R17,0
0248 DF97 RCALL _delay_ms
(0202) }
(0203) if(sw_in == 0x60)// 0b 0110,0000 左侧开关接触
0249 9180007E LDS R24,_sw_in
024B 3680 CPI R24,0x60
024C F441 BNE 0x0255
(0204) {//后退,左转
(0205) backward(); //后退
024D DFB4 RCALL _backward
(0206) delay_ms(touch_time);
024E EF0A LDI R16,0xFA
024F E010 LDI R17,0
0250 DF8F RCALL _delay_ms
(0207)
(0208) turn_left(); //左转
0251 DFA1 RCALL _turn_left
(0209) delay_ms(touch_time);
0252 EF0A LDI R16,0xFA
0253 E010 LDI R17,0
0254 DF8B RCALL _delay_ms
(0210) }
(0211) if(sw_in == 0x20)// 0b 0010,0000 两侧开关同时接触,停止运动
0255 9180007E LDS R24,_sw_in
0257 3280 CPI R24,0x20
0258 F4F1 BNE 0x0277
(0212) {
(0213) stop(); //停止运动,熄灭指示灯
0259 DFB2 RCALL _stop
(0214) delay_ms(touch_time*4);
025A EE08 LDI R16,0xE8
025B E013 LDI R17,3
025C DF83 RCALL _delay_ms
025D C018 RJMP 0x0276
(0215) while(1)
(0216) {
(0217) sw_in = PINC & 0x10;
025E B383 IN R24,0x13
025F 7180 ANDI R24,0x10
0260 9380007E STS _sw_in,R24
(0218) if(sw_in == 0x00)
0262 2388 TST R24
0263 F409 BNE 0x0265
(0219) {break;}
0264 C012 RJMP 0x0277
(0220) PORTA = 0x55;
0265 E585 LDI R24,0x55
0266 BB8B OUT 0x1B,R24
(0221) delay_ms(250);
0267 EF0A LDI R16,0xFA
0268 E010 LDI R17,0
0269 DF76 RCALL _delay_ms
(0222) PORTA = 0xAA;
026A EA8A LDI R24,0xAA
026B BB8B OUT 0x1B,R24
(0223) delay_ms(250);
026C EF0A LDI R16,0xFA
026D E010 LDI R17,0
026E DF71 RCALL _delay_ms
(0224) remote_in = PINB & 0x0f;
026F B386 IN R24,0x16
0270 708F ANDI R24,0xF
0271 9380007D STS _remote_in,R24
(0225) if(remote_in != 0x00)
0273 2388 TST R24
0274 F009 BEQ 0x0276
(0226) {break;}
0275 C001 RJMP 0x0277
0276 CFE7 RJMP 0x025E
(0227) }
(0228) }
(0229) }
0277 9508 RET
(0230)
(0231) void mic_startup()
(0232) {//声控启动程序运行
_mic_startup:
0278 C007 RJMP 0x0280
(0233)
(0234) while(1)//等待pc3(声控键)按键按下
(0235) { //无键按下等待
(0236) mic_in = PINC & 0x08; //pc2=0
0279 B383 IN R24,0x13
027A 7088 ANDI R24,0x8
027B 9380007C STS _mic_in,R24
(0237) if(mic_in == 0){break;}
027D 2388 TST R24
027E F409 BNE 0x0280
027F C001 RJMP 0x0281
0280 CFF8 RJMP 0x0279
(0238) }//有键按下运行下面的程序
(0239) }
0281 9508 RET
(0240)
(0241) // #
(0242) // #
(0243) // #
(0244) // #
(0245) // # // delay_time1 转弯时间
(0246) // # # # # # // delay_time2 直行时间
(0247) // # X # //<A> 0x04 delay_time2-50
(0248) // # B C # //<B> 0x02 delay_time1+50
(0249) // # D A # //<C> 0x08 delay_time1-50
(0250) // # # //<D> 0x01 delay_time2+50
(0251) // # # # # // max: 2000 min: 200
(0252)
(0253) void remote_auto_time()
(0254) {
(0255) remote_in = PINB & 0x0F;
_remote_auto_time:
0282 B386 IN R24,0x16
0283 708F ANDI R24,0xF
0284 9380007D STS _remote_in,R24
(0256) switch (remote_in)
0286 2F08 MOV R16,R24
0287 2711 CLR R17
0288 3000 CPI R16,0
0289 0701 CPC R16,R17
028A F409 BNE 0x028C
028B C062 RJMP 0x02EE
028C 3001 CPI R16,1
028D E0E0 LDI R30,0
028E 071E CPC R17,R30
028F F409 BNE 0x0291
0290 C04A RJMP 0x02DB
0291 3002 CPI R16,2
0292 E0E0 LDI R30,0
0293 071E CPC R17,R30
0294 F0F1 BEQ 0x02B3
0295 3004 CPI R16,4
0296 E0E0 LDI R30,0
0297 071E CPC R17,R30
0298 F029 BEQ 0x029E
0299 3008 CPI R16,0x8
029A E0E0 LDI R30,0
029B 071E CPC R17,R30
029C F151 BEQ 0x02C7
029D C050 RJMP 0x02EE
(0257) {//检测遥控器是否有键按下
(0258) case 0x04: // < A >
(0259) delay_time2 = delay_time2 - 50;
029E 91800078 LDS R24,_delay_time2
02A0 91900079 LDS R25,_delay_time2+1
02A2 97C2 SBIW R24,0x32
02A3 93900079 STS _delay_time2+1,R25
02A5 93800078 STS _delay_time2,R24
(0260) if(delay_time2 == 50)
02A7 3382 CPI R24,0x32
02A8 E0E0 LDI R30,0
02A9 079E CPC R25,R30
02AA F009 BEQ 0x02AC
02AB C042 RJMP 0x02EE
(0261) {delay_time2 = 100;}
02AC E684 LDI R24,0x64
02AD E090 LDI R25,0
02AE 93900079 STS _delay_time2+1,R25
02B0 93800078 STS _delay_time2,R24
(0262) break;
02B2 C03B RJMP 0x02EE
(0263) case 0x02: // < B >
(0264) delay_time1 = delay_time1 + 50;
02B3 9180007A LDS R24,_delay_time1
02B5 9190007B LDS R25,_delay_time1+1
02B7 96C2 ADIW R24,0x32
02B8 9390007B STS _delay_time1+1,R25
02BA 9380007A STS _delay_time1,R24
(0265) if(delay_time1 == 2050)
02BC 3082 CPI R24,2
02BD E0E8 LDI R30,0x8
02BE 079E CPC R25,R30
02BF F571 BNE 0x02EE
(0266) {delay_time1 = 2000;}
02C0 ED80 LDI R24,0xD0
02C1 E097 LDI R25,7
02C2 9390007B STS _delay_time1+1,R25
02C4 9380007A STS _delay_time1,R24
(0267) break;
02C6 C027 RJMP 0x02EE
(0268) case 0x08: // < C >
(0269) delay_time1 = delay_time1 - 50;
02C7 9180007A LDS R24,_delay_time1
02C9 9190007B LDS R25,_delay_time1+1
02CB 97C2 SBIW R24,0x32
02CC 9390007B STS _delay_time1+1,R25
02CE 9380007A STS _delay_time1,R24
(0270) if(delay_time1 == 50)
02D0 3382 CPI R24,0x32
02D1 E0E0 LDI R30,0
02D2 079E CPC R25,R30
02D3 F4D1 BNE 0x02EE
(0271) {delay_time1 = 100;}
02D4 E684 LDI R24,0x64
02D5 E090 LDI R25,0
02D6 9390007B STS _delay_time1+1,R25
02D8 9380007A STS _delay_time1,R24
(0272) break;
02DA C013 RJMP 0x02EE
(0273) case 0x01: // < D >
(0274) delay_time2 = delay_time2 + 50;
02DB 91800078 LDS R24,_delay_time2
02DD 91900079 LDS R25,_delay_time2+1
02DF 96C2 ADIW R24,0x32
02E0 93900079 STS _delay_time2+1,R25
02E2 93800078 STS _delay_time2,R24
(0275) if(delay_time2 == 2050)
02E4 3082 CPI R24,2
02E5 E0E8 LDI R30,0x8
02E6 079E CPC R25,R30
02E7 F431 BNE 0x02EE
(0276) {delay_time2 = 2000;}
02E8 ED80 LDI R24,0xD0
02E9 E097 LDI R25,7
02EA 93900079 STS _delay_time2+1,R25
02EC 93800078 STS _delay_time2,R24
(0277) break;
(0278) case 0x00: // 无按键
(0279) break;
(0280) }
(0281) }
02EE 9508 RET
FILE: E:\icc\iccavr\sl3010\sl3010_4\sl3010_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 保持高电平,只连接pd0的短路块
(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 保持高电平,只连接pd1的短路块
(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 保持高电平,只连接pd3的短路块
(0038) // 或按下遥控器<D>(保持 0.5s) 机器人按程序设定路线行走,走四方形,同时演奏音乐
(0039) //自走车 机器人走四方形路线,遥控器调节行走路线
(0040) //声控起动机器人按设定路线行走,未起动时,PA口的 8 LED 呈广告灯效果(霓虹灯)
(0041) //声控起动后,机器人开始动作,PA口的 8 LED 指示运动状态
(0042)
(0043) //程序等待声控起动运行,未启动运行时机器人运行霓虹车程序。
(0044) //连续按住遥控器 < C > 键超过 10s 起动看门狗,再过 1s 系统复位
(0045)
(0046) //将 sl3010.c 文件拷贝到 icc avr 安装目录的<include>文件夹
(0047) //sl3010.c 是sl3010机器人板的子函数库
(0048) //程序中调用此文件后 #include <sl3010.c>
(0049) //可直接调用里面的函数和变量
(0050)
(0051) // 最后更新:2003.04.17
(0052)
(0053) #include <io8515v.h>
(0054) #include <macros.h>
(0055) #include <sl3010.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,
(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,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -