?? diy0206_4.lst
字號(hào):
0243 EF0A LDI R16,0xFA
0244 E010 LDI R17,0
0245 DF9D RCALL _delay_ms
(0205) }
(0206) if(sw_in == 0x03)// 0b 0000,0011 左側(cè)開關(guān)接觸
0246 3043 CPI R20,3
0247 F441 BNE 0x0250
(0207) {//后退,左轉(zhuǎn)
(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(); //左轉(zhuǎn)
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 兩側(cè)開關(guān)同時(shí)接觸,停止運(yùn)動(dòng)
0250 3042 CPI R20,2
0251 F4F9 BNE 0x0271
(0215) {
(0216) stop(); //停止運(yùn)動(dòng),熄滅指示燈
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;}//首部開關(guān)接觸繼續(xù)啟動(dòng)運(yùn)動(dòng)
025A C016 RJMP 0x0271
(0223) PORTA = 0x55;//停止不運(yùn)動(dòng)時(shí)pa口指示燈流動(dòng)閃爍
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;//遙控器控制繼續(xù)運(yùn)動(dòng)
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) {//聲控啟動(dòng)程序運(yùn)行
_mic_startup:
mic_in --> R16
0273 C004 RJMP 0x0278
(0236) unsigned char mic_in;
(0237) while(1)//等待PB2按鍵按下
(0238) { //無(wú)鍵按下等待
(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) }//有鍵按下運(yùn)行下面的程序
(0242) }
0279 9508 RET
(0243)
(0244) // #
(0245) // #
(0246) // #
(0247) // #
(0248) // # // delay_time1 轉(zhuǎn)彎時(shí)間
(0249) // # # # # # // delay_time2 直行時(shí)間
(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) {//檢測(cè)遙控器是否有鍵按下
(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: // 無(wú)按鍵
(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) //遙控器沒(méi)有按鍵或者 pd3,pd2,pd1,pd0 短路塊全部接上,全為高電平
(0009) //機(jī)器人運(yùn)行音樂(lè)機(jī)器人程序。
(0010) //PA口為音樂(lè)燈,當(dāng)不同的音樂(lè)節(jié)奏,點(diǎn)亮不同的燈。
(0011) //聲控起動(dòng)音樂(lè)機(jī)器人程序,未起動(dòng)時(shí),PA口的8 LED 呈廣告燈效果(霓虹燈)
(0012) //聲控起動(dòng)后,機(jī)器人開始演奏音樂(lè),同時(shí)PA口LED燈根據(jù)音樂(lè)節(jié)拍閃爍
(0013) //按遙控器上不同的鍵后可改變機(jī)器人演奏的樂(lè)曲。
(0014)
(0015) //將 pd0 接低電平,pd3,pd2,pd1 保持高電平
(0016) // 或按下遙控器<A>(保持 0.5s) 進(jìn)入遙控機(jī)器人運(yùn)行環(huán)境
(0017) //聲控起動(dòng)遙控車程序,未起動(dòng)時(shí),PA口的8 LED 呈廣告燈效果(霓虹燈)
(0018) //聲控起動(dòng)后,機(jī)器人開始動(dòng)作
(0019) //遙控器無(wú)按鍵,機(jī)器人直行
(0020) //按住 < A > 鍵,機(jī)器人右轉(zhuǎn),同時(shí)演奏右轉(zhuǎn)指示音樂(lè);
(0021) //按住 < B > 鍵,機(jī)器人后退,同時(shí)演奏后退指示音樂(lè);
(0022) //按住 < C > 鍵,機(jī)器人停止,同時(shí)演奏停止指示音樂(lè);
(0023) //按住 < D > 鍵,機(jī)器人左轉(zhuǎn),同時(shí)演奏左轉(zhuǎn)指示音樂(lè);
(0024) //釋放遙控器按鍵,音樂(lè)停止
(0025)
(0026) //將 pd1 接低電平,pd3,pd2,pd0 保持高電平
(0027) // 或按下遙控器<B>(保持 0.5s) 尋跡機(jī)器人,探測(cè)白底黑線,沿黑線行進(jìn)
(0028) //聲控起動(dòng)尋跡機(jī)器人程序,未起動(dòng)時(shí),PA口的 8 LED 呈廣告燈效果(霓虹燈)
(0029) //聲控起動(dòng)后,機(jī)器人開始動(dòng)作,PA口的 8 LED 指示運(yùn)動(dòng)狀態(tài)
(0030)
(0031) //將 pd2 接低電平,pd3,pd1,pd0 保持高電平,只連接pd2的短路塊
(0032) // 或按下遙控器<C>(保持 0.5s) 機(jī)器人避障礙、避懸崖行進(jìn)
(0033) //聲控起動(dòng)避懸崖,壁障礙運(yùn)行程序,未起動(dòng)時(shí),PA口的8 LED 呈廣告燈效果(霓虹燈)
(0034) //聲控起動(dòng)后,機(jī)器人開始動(dòng)作,PA口的 8 LED 指示運(yùn)動(dòng)狀態(tài)
(0035) //探測(cè)到邊緣,后退、轉(zhuǎn)彎,并以伴有音樂(lè)提示。
(0036)
(0037) //將 pd3 接低電平,pd2,pd1,pd0 保持高電平
(0038) // 或按下遙控器<D>(保持 0.5s) 機(jī)器人按程序設(shè)定路線行走,走四方形,同時(shí)演奏音樂(lè)
(0039) //自走車 機(jī)器人走四方形路線,遙控器調(diào)節(jié)行走路線
(0040) //聲控起動(dòng)機(jī)器人按設(shè)定路線行走,未起動(dòng)時(shí),PA口的 8 LED 呈廣告燈效果(霓虹燈)
(0041) //聲控起動(dòng)后,機(jī)器人開始動(dòng)作,PA口的 8 LED 指示運(yùn)動(dòng)狀態(tài)
(0042)
(0043) //程序等待聲控起動(dòng)運(yùn)行,未啟動(dòng)運(yùn)行時(shí)機(jī)器人運(yùn)行霓虹車程序。
(0044) //連續(xù)按住遙控器 < C > 鍵超過(guò) 10s 起動(dòng)看門狗,再過(guò) 1s 系統(tǒng)復(fù)位
(0045)
(0046) //將 diy0206.c 文件拷貝到 icc avr 安裝目錄的<include>文件夾
(0047) //diy0206.c 是diy0206機(jī)器人板的子函數(shù)庫(kù)
(0048) //程序中調(diào)用此文件后 #include <diy0206.c>
(0049) //可直接調(diào)用里面的函數(shù)和變量
(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) /* 音樂(lè)數(shù)據(jù) */
(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[]={ //樂(lè)曲數(shù)據(jù)表
(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) /* 音階重裝常數(shù) */
(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) {//設(shè)置LED廣告燈數(shù)據(jù)表
(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,
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -