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

📄 sl3010_1.lst

📁 单片机开发资料光盘-双龙-686M.zip
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0107 3280      CPI	R24,0x20
    0108 F4F1      BNE	0x0127
(0212)    {
(0213) 	stop();       //停止运动,熄灭指示灯
    0109 DFB2      RCALL	_stop
(0214)     delay_ms(touch_time*4);
    010A EE08      LDI	R16,0xE8
    010B E013      LDI	R17,3
    010C DF83      RCALL	_delay_ms
    010D C018      RJMP	0x0126
(0215) 	while(1)
(0216) 	     {
(0217) 		  sw_in = PINC & 0x10;
    010E B383      IN	R24,0x13
    010F 7180      ANDI	R24,0x10
    0110 938000E5  STS	_sw_in,R24
(0218) 		  if(sw_in == 0x00)
    0112 2388      TST	R24
    0113 F409      BNE	0x0115
(0219) 		    {break;}
    0114 C012      RJMP	0x0127
(0220) 		  PORTA = 0x55;
    0115 E585      LDI	R24,0x55
    0116 BB8B      OUT	0x1B,R24
(0221) 		  delay_ms(250);
    0117 EF0A      LDI	R16,0xFA
    0118 E010      LDI	R17,0
    0119 DF76      RCALL	_delay_ms
(0222) 		  PORTA = 0xAA;
    011A EA8A      LDI	R24,0xAA
    011B BB8B      OUT	0x1B,R24
(0223) 		  delay_ms(250);
    011C EF0A      LDI	R16,0xFA
    011D E010      LDI	R17,0
    011E DF71      RCALL	_delay_ms
(0224) 		  remote_in = PINB & 0x0f;
    011F B386      IN	R24,0x16
    0120 708F      ANDI	R24,0xF
    0121 938000E4  STS	_remote_in,R24
(0225) 		  if(remote_in != 0x00)
    0123 2388      TST	R24
    0124 F009      BEQ	0x0126
(0226) 		    {break;}
    0125 C001      RJMP	0x0127
    0126 CFE7      RJMP	0x010E
(0227) 		 }
(0228)    }   
(0229) }
    0127 9508      RET
(0230) 
(0231) void mic_startup()
(0232) {//声控启动程序运行
_mic_startup:
    0128 C007      RJMP	0x0130
(0233) 
(0234)  while(1)//等待pc3(声控键)按键按下	
(0235)  {	  //无键按下等待
(0236)   mic_in = PINC & 0x08;     //pc2=0
    0129 B383      IN	R24,0x13
    012A 7088      ANDI	R24,0x8
    012B 938000E3  STS	_mic_in,R24
(0237)   if(mic_in == 0){break;}
    012D 2388      TST	R24
    012E F409      BNE	0x0130
    012F C001      RJMP	0x0131
    0130 CFF8      RJMP	0x0129
(0238)  }//有键按下运行下面的程序
(0239) }
    0131 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:
    0132 B386      IN	R24,0x16
    0133 708F      ANDI	R24,0xF
    0134 938000E4  STS	_remote_in,R24
(0256)       switch (remote_in)
    0136 2F08      MOV	R16,R24
    0137 2711      CLR	R17
    0138 3000      CPI	R16,0
    0139 0701      CPC	R16,R17
    013A F409      BNE	0x013C
    013B C062      RJMP	0x019E
    013C 3001      CPI	R16,1
    013D E0E0      LDI	R30,0
    013E 071E      CPC	R17,R30
    013F F409      BNE	0x0141
    0140 C04A      RJMP	0x018B
    0141 3002      CPI	R16,2
    0142 E0E0      LDI	R30,0
    0143 071E      CPC	R17,R30
    0144 F0F1      BEQ	0x0163
    0145 3004      CPI	R16,4
    0146 E0E0      LDI	R30,0
    0147 071E      CPC	R17,R30
    0148 F029      BEQ	0x014E
    0149 3008      CPI	R16,0x8
    014A E0E0      LDI	R30,0
    014B 071E      CPC	R17,R30
    014C F151      BEQ	0x0177
    014D C050      RJMP	0x019E
(0257)       	{//检测遥控器是否有键按下
(0258)       case 0x04:  // < A >
(0259) 		 delay_time2 = delay_time2 - 50;
    014E 918000DF  LDS	R24,_delay_time2
    0150 919000E0  LDS	R25,_delay_time2+1
    0152 97C2      SBIW	R24,0x32
    0153 939000E0  STS	_delay_time2+1,R25
    0155 938000DF  STS	_delay_time2,R24
(0260) 	     if(delay_time2 == 50)
    0157 3382      CPI	R24,0x32
    0158 E0E0      LDI	R30,0
    0159 079E      CPC	R25,R30
    015A F009      BEQ	0x015C
    015B C042      RJMP	0x019E
(0261) 		   {delay_time2 = 100;}	 
    015C E684      LDI	R24,0x64
    015D E090      LDI	R25,0
    015E 939000E0  STS	_delay_time2+1,R25
    0160 938000DF  STS	_delay_time2,R24
(0262)       	break;
    0162 C03B      RJMP	0x019E
(0263)       case 0x02:  // < B >
(0264) 		 delay_time1 = delay_time1 + 50;
    0163 918000E1  LDS	R24,_delay_time1
    0165 919000E2  LDS	R25,_delay_time1+1
    0167 96C2      ADIW	R24,0x32
    0168 939000E2  STS	_delay_time1+1,R25
    016A 938000E1  STS	_delay_time1,R24
(0265) 	     if(delay_time1 == 2050)
    016C 3082      CPI	R24,2
    016D E0E8      LDI	R30,0x8
    016E 079E      CPC	R25,R30
    016F F571      BNE	0x019E
(0266) 		   {delay_time1 = 2000;}	 
    0170 ED80      LDI	R24,0xD0
    0171 E097      LDI	R25,7
    0172 939000E2  STS	_delay_time1+1,R25
    0174 938000E1  STS	_delay_time1,R24
(0267)       	break;
    0176 C027      RJMP	0x019E
(0268)       case 0x08:  // < C >
(0269) 		 delay_time1 = delay_time1 - 50;
    0177 918000E1  LDS	R24,_delay_time1
    0179 919000E2  LDS	R25,_delay_time1+1
    017B 97C2      SBIW	R24,0x32
    017C 939000E2  STS	_delay_time1+1,R25
    017E 938000E1  STS	_delay_time1,R24
(0270) 	     if(delay_time1 == 50)
    0180 3382      CPI	R24,0x32
    0181 E0E0      LDI	R30,0
    0182 079E      CPC	R25,R30
    0183 F4D1      BNE	0x019E
(0271) 		   {delay_time1 = 100;}	 
    0184 E684      LDI	R24,0x64
    0185 E090      LDI	R25,0
    0186 939000E2  STS	_delay_time1+1,R25
    0188 938000E1  STS	_delay_time1,R24
(0272)       	break;
    018A C013      RJMP	0x019E
(0273)       case 0x01:  // < D >
(0274)          delay_time2 = delay_time2 + 50;
    018B 918000DF  LDS	R24,_delay_time2
    018D 919000E0  LDS	R25,_delay_time2+1
    018F 96C2      ADIW	R24,0x32
    0190 939000E0  STS	_delay_time2+1,R25
    0192 938000DF  STS	_delay_time2,R24
(0275) 	     if(delay_time2 == 2050)
    0194 3082      CPI	R24,2
    0195 E0E8      LDI	R30,0x8
    0196 079E      CPC	R25,R30
    0197 F431      BNE	0x019E
(0276) 		   {delay_time2 = 2000;}	 
    0198 ED80      LDI	R24,0xD0
    0199 E097      LDI	R25,7
    019A 939000E0  STS	_delay_time2+1,R25
    019C 938000DF  STS	_delay_time2,R24
(0277)       	break;
(0278)       case 0x00:  // 无按键
(0279) 	     break;
(0280) 		} 
(0281) }
    019E 9508      RET
FILE: E:\icc\iccavr\sl3010\sl3010_1\sl3010_1.c
(0001) /*******************************************/
(0002) /*            广州天河双龙电子公司         */
(0003) /*            http://www.sl.com.cn         */
(0004) /*     020-85510191,87578852,87578872      */
(0005) /*              nikko@sl.com.cn            */
(0006) /*******************************************/
(0007) 
(0008) //将 pd0 接低电平,pd3,pd2,pd1 保持高电平
(0009) //       或按下遥控器<A>(保持 0.5s)        进入遥控机器人运行环境 
(0010) 
(0011) //将 pd1 接低电平,pd3,pd2,pd0 保持高电平
(0012) //       或按下遥控器<B>(保持 0.5s)        进入悬崖车机器人运行环境 
(0013) 
(0014) //将 pd2 接低电平,pd3,pd1,pd0 保持高电平
(0015) //       或按下遥控器<C>(保持 0.5s)        进入音乐车机器人运行环境 
(0016) 
(0017) //将 pd3 接低电平,pd2,pd1,pd0 保持高电平
(0018) //       或按下遥控器<D>(保持 0.5s)        进入霓虹灯机器人运行环境 
(0019) 
(0020) //将  sl3010.c 文件拷贝到 icc avr 安装目录的<include>文件夹
(0021) //sl3010.c 是sl3010机器人的子函数库
(0022) //程序中调用此文件后 #include <sl3010.c>
(0023) //可直接调用里面的函数和变量
(0024) 
(0025) #include <io8515v.h>
(0026) #include <macros.h>
(0027) #include <sl3010.c>
(0028) #include <eeprom.h>
(0029) 
(0030) static unsigned char led_data[]=
(0031)     {//设置LED广告灯数据表
(0032)      0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,
(0033)      0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,
(0034)      0x00,0x18,0x3c,0x7e,0xff,0x7e,0x3c,0x18,
(0035)      0x00,0x18,0x3c,0x7e,0xff,0x7e,0x3c,0x18,
(0036)      0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x8f,0xc7,0xe3,0xf1,
(0037)      0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x8f,0xc7,0xe3,0xf1,
(0038)      0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,
(0039)      0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,
(0040)      0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,
(0041)      0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,
(0042)      0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,
(0043)      0x0a,0x0a
(0044)     };
(0045) unsigned char pa,timers;
(0046) unsigned int led_delayms=600;
(0047) 	 //定义为字符型变量
(0048) void led_car(void)
(0049) {
(0050)  PORTA = 0x24;
_led_car:
    019F E284      LDI	R24,0x24
    01A0 BB8B      OUT	0x1B,R24
(0051)  
(0052)  work_status = 0x40;//置对应的工作状态标志
    01A1 E480      LDI	R24,0x40
    01A2 938000E6  STS	_work_status,R24
(0053)  
(0054)  mic_startup();       //等待声控启动
    01A4 DF83      RCALL	_mic_startup
    01A5 C20E      RJMP	0x03B4
(0055)  
(0056)  while (1)
(0057)  	{
(0058) 	 pa = 0x00;
    01A6 2422      CLR	R2
    01A7 922000DE  STS	_pa,R2
(0059) 	 for(timers=0;timers<4;timers++)
    01A9 922000DD  STS	_timers,R2
    01AB C014      RJMP	0x01C0
(0060) 	    {//8 LED 整体亮灭闪烁
(0061) 	     PORTA=pa;
    01AC 902000DE  LDS	R2,_pa
    01AE BA2B      OUT	0x1B,R2
(0062) 	     delay_ms(led_delayms*2);
    01AF 910000D6  LDS	R16,0xD6
    01B1 911000D7  LDS	R17,0xD7
    01B3 0F00      LSL	R16
    01B4 1F11      ROL	R17
    01B5 DEDA      RCALL	_delay_ms
(0063) 		 pa=~pa;
    01B6 902000DE  LDS	R2,_pa
    01B8 9420      COM	R2
    01B9 922000DE  STS	_pa,R2
    01BB 918000DD  LDS	R24,_timers
    01BD 5F8F      SUBI	R24,0xFF
    01BE 938000DD  STS	_timers,R24
    01C0 918000DD  LDS	R24,_timers
    01C2 3084      CPI	R24,4
    01C3 F340      BCS	0x01AC
(0064) 		}
(0065) 	 
(0066) 	 pa = 0x01;
    01C4 E081      LDI	R24,1
    01C5 938000DE  STS	_pa,R24
(0067) 	 for(timers=0;timers<8;timers++)
    01C7 2422      CLR	R2
    01C8 922000DD  STS	_timers,R2
    01CA C015      RJMP	0x01E0
(0068) 	    {
(0069) 	     PORTA=~pa;
    01CB 902000DE  LDS	R2,_pa
    01CD 9420      COM	R2
    01CE BA2B      OUT	0x1B,R2
(0070) 	     delay_ms(led_delayms/2);
    01CF 910000D6  LDS	R16,0xD6
    01D1 911000D7  LDS	R17,0xD7
    01D3 9516      LSR	R17
    01D4 9507      ROR	R16
    01D5 DEBA      RCALL	_delay_ms
(0071) 		 pa=pa<<1;
    01D6 902000DE  LDS	R2,_pa
    01D8 0C22      LSL	R2
    01D9 922000DE  STS	_pa,R2
    01DB 918000DD  LDS	R24,_timers
    01DD 5F8F      SUBI	R24,0xFF
    01DE 938000DD  STS	_timers,R24
    01E0 918000DD  LDS	R24,_timers
    01E2 3088      CPI	R24,0x8
    01E3 F338      BCS	0x01CB
(0072) 		}
(0073) 		
(0074) 	 pa = 0x80;
    01E4 E880      LDI	R24,0x80
    01E5 938000DE  STS	_pa,R24
(0075) 	 for(timers=0;timers<8;timers++)
    01E7 2422      CLR	R2
    01E8 922000DD  STS	_timers,R2
    01EA C015      RJMP	0x0200
(0076) 	    {
(0077) 	     PORTA=~pa;
    01EB 902000DE  LDS	R2,_pa
    01ED 9420      COM	R2
    01EE BA2B      OUT	0x1B,R2
(0078) 	     delay_ms(led_delayms/2);
    01EF 910000D6  LDS	R16,0xD6
    01F1 911000D7  LDS	R17,0xD7
    01F3 9516      LSR	R17
    01F4 9507      ROR	R16
    01F5 DE9A      RCALL	_delay_ms
(0079) 		 pa=pa>>1;
    01F6 902000DE  LDS	R2,_pa
    01F8 9426      LSR	R2
    01F9 922000DE  STS	_pa,R2
    01FB 918000DD  LDS	R24,_timers
    01FD 5F8F      SUBI	R24,0xFF
    01FE 938000DD  STS	_timers,R24
    0200 918000DD  LDS	R24,_timers
    0202 3088      CPI	R24,0x8
    0203 F338      BCS	0x01EB
(0080) 		}
(0081) 
(0082) 	 pa = 0x01;
    0204 E081      LDI	R24,1
    0205 938000DE  STS	_pa,R24
(0083) 	 for(timers=0;timers<8;timers++)
    0207 2422      CLR	R2
    0208 922000DD  STS	_timers,R2
    020A C018      RJMP	0x0223
(0084) 	    {
(0085) 	     PORTA=~pa;
    020B 902000DE  LDS	R2,_pa
    020D 9420      COM	R2
    020E BA2B      OUT	0x1B,R2
(0086) 	     delay_ms(led_delayms/2);
    020F 910000D6  LDS	R16,0xD6
    0211 911000D7  LDS	R17,0xD7
    0213 9516      LSR	R17
    0214 9507      ROR	R16
    0215 DE7A      RCALL	_delay_ms
(0087) 		 pa=pa|(pa<<1);
    0216 902000DE  LDS	R2,_pa
    0218 0C22      LSL	R2
    0219 903000DE  LDS	R3,_pa
    021B 2832      OR	R3,R2
    021C 923000DE  STS	_pa,R3
    021E 918000DD  LDS	R24,_timers
    0220 5F8F      SUBI	R24,0xFF
    0221 938000DD  STS	_timers,R24
    0223 918000DD  LDS	R24,_timers
    0225 3088      CPI	R24,0x8
    0226 F320      BCS	0x020B
(0088) 		}
(0089) 	
(0090) 	 pa = 0x7f;
    0227 E78F      LDI	R24,0x7F
    0228 938000DE  STS	_pa,R24
(0091) 	 for(timers=0;timers<8;timers++)
    022A 2422      CLR	R2
    022B 922000DD  STS	_timers,R2
    022D C018      RJMP	0x0246
(0092) 	    {
(0093) 	     PORTA=~pa;
    022E 902000DE  LDS	R2,_pa
    0230 9420      COM	R2
    0231 BA2B      OUT	0x1B,R2
(0094) 	     delay_ms(led_delayms/2);
    0232 910000D6  LDS	R16,0xD6
    0234 911000D7  LDS	R17,0xD7
    0236 9516      LSR	R17

⌨️ 快捷键说明

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