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

📄 cny.lst

📁 单片机开发资料光盘-双龙-686M.zip
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0187)  if(sw_in == 0x50)// 0b 0101,0000  尾部开关接触 
    0098 3580      CPI	R24,0x50
    0099 F441      BNE	0x00A2
(0188)    {//前行,左转
(0189) 	   forward();           //前行
    009A DFD1      RCALL	_forward
(0190)        delay_ms(touch_time);
    009B EF0A      LDI	R16,0xFA
    009C E010      LDI	R17,0
    009D DFA7      RCALL	_delay_ms
(0191)        
(0192) 	   turn_left();         //左转
    009E DFB9      RCALL	_turn_left
(0193)        delay_ms(touch_time);
    009F EF0A      LDI	R16,0xFA
    00A0 E010      LDI	R17,0
    00A1 DFA3      RCALL	_delay_ms
(0194)    }
(0195)  if(sw_in == 0x30)// 0b 0011,0000  右侧开关接触
    00A2 91800067  LDS	R24,_sw_in
    00A4 3380      CPI	R24,0x30
    00A5 F441      BNE	0x00AE
(0196)    {//后退,左转
(0197)        backward();          //后退
    00A6 DFC0      RCALL	_backward
(0198)        delay_ms(touch_time);
    00A7 EF0A      LDI	R16,0xFA
    00A8 E010      LDI	R17,0
    00A9 DF9B      RCALL	_delay_ms
(0199)        
(0200) 	   turn_left();         //左转
    00AA DFAD      RCALL	_turn_left
(0201)        delay_ms(touch_time);
    00AB EF0A      LDI	R16,0xFA
    00AC E010      LDI	R17,0
    00AD DF97      RCALL	_delay_ms
(0202)    }  
(0203)  if(sw_in == 0x60)// 0b 0110,0000  左侧开关接触
    00AE 91800067  LDS	R24,_sw_in
    00B0 3680      CPI	R24,0x60
    00B1 F441      BNE	0x00BA
(0204)    {//后退,左转
(0205)        backward();          //后退
    00B2 DFB4      RCALL	_backward
(0206)        delay_ms(touch_time);
    00B3 EF0A      LDI	R16,0xFA
    00B4 E010      LDI	R17,0
    00B5 DF8F      RCALL	_delay_ms
(0207)        
(0208) 	   turn_left();         //左转
    00B6 DFA1      RCALL	_turn_left
(0209)        delay_ms(touch_time);
    00B7 EF0A      LDI	R16,0xFA
    00B8 E010      LDI	R17,0
    00B9 DF8B      RCALL	_delay_ms
(0210)    }
(0211)  if(sw_in == 0x20)// 0b 0010,0000  两侧开关同时接触,停止运动
    00BA 91800067  LDS	R24,_sw_in
    00BC 3280      CPI	R24,0x20
    00BD F4F1      BNE	0x00DC
(0212)    {
(0213) 	stop();       //停止运动,熄灭指示灯
    00BE DFB2      RCALL	_stop
(0214)     delay_ms(touch_time*4);
    00BF EE08      LDI	R16,0xE8
    00C0 E013      LDI	R17,3
    00C1 DF83      RCALL	_delay_ms
    00C2 C018      RJMP	0x00DB
(0215) 	while(1)
(0216) 	     {
(0217) 		  sw_in = PINC & 0x10;
    00C3 B383      IN	R24,0x13
    00C4 7180      ANDI	R24,0x10
    00C5 93800067  STS	_sw_in,R24
(0218) 		  if(sw_in == 0x00)
    00C7 2388      TST	R24
    00C8 F409      BNE	0x00CA
(0219) 		    {break;}
    00C9 C012      RJMP	0x00DC
(0220) 		  PORTA = 0x55;
    00CA E585      LDI	R24,0x55
    00CB BB8B      OUT	0x1B,R24
(0221) 		  delay_ms(250);
    00CC EF0A      LDI	R16,0xFA
    00CD E010      LDI	R17,0
    00CE DF76      RCALL	_delay_ms
(0222) 		  PORTA = 0xAA;
    00CF EA8A      LDI	R24,0xAA
    00D0 BB8B      OUT	0x1B,R24
(0223) 		  delay_ms(250);
    00D1 EF0A      LDI	R16,0xFA
    00D2 E010      LDI	R17,0
    00D3 DF71      RCALL	_delay_ms
(0224) 		  remote_in = PINB & 0x0f;
    00D4 B386      IN	R24,0x16
    00D5 708F      ANDI	R24,0xF
    00D6 93800066  STS	_remote_in,R24
(0225) 		  if(remote_in != 0x00)
    00D8 2388      TST	R24
    00D9 F009      BEQ	0x00DB
(0226) 		    {break;}
    00DA C001      RJMP	0x00DC
    00DB CFE7      RJMP	0x00C3
(0227) 		 }
(0228)    }   
(0229) }
    00DC 9508      RET
(0230) 
(0231) void mic_startup()
(0232) {//声控启动程序运行
_mic_startup:
    00DD C007      RJMP	0x00E5
(0233) 
(0234)  while(1)//等待pc3(声控键)按键按下	
(0235)  {	  //无键按下等待
(0236)   mic_in = PINC & 0x08;     //pc2=0
    00DE B383      IN	R24,0x13
    00DF 7088      ANDI	R24,0x8
    00E0 93800065  STS	_mic_in,R24
(0237)   if(mic_in == 0){break;}
    00E2 2388      TST	R24
    00E3 F409      BNE	0x00E5
    00E4 C001      RJMP	0x00E6
    00E5 CFF8      RJMP	0x00DE
(0238)  }//有键按下运行下面的程序
(0239) }
    00E6 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:
    00E7 B386      IN	R24,0x16
    00E8 708F      ANDI	R24,0xF
    00E9 93800066  STS	_remote_in,R24
(0256)       switch (remote_in)
    00EB 2F08      MOV	R16,R24
    00EC 2711      CLR	R17
    00ED 3000      CPI	R16,0
    00EE 0701      CPC	R16,R17
    00EF F409      BNE	0x00F1
    00F0 C062      RJMP	0x0153
    00F1 3001      CPI	R16,1
    00F2 E0E0      LDI	R30,0
    00F3 071E      CPC	R17,R30
    00F4 F409      BNE	0x00F6
    00F5 C04A      RJMP	0x0140
    00F6 3002      CPI	R16,2
    00F7 E0E0      LDI	R30,0
    00F8 071E      CPC	R17,R30
    00F9 F0F1      BEQ	0x0118
    00FA 3004      CPI	R16,4
    00FB E0E0      LDI	R30,0
    00FC 071E      CPC	R17,R30
    00FD F029      BEQ	0x0103
    00FE 3008      CPI	R16,0x8
    00FF E0E0      LDI	R30,0
    0100 071E      CPC	R17,R30
    0101 F151      BEQ	0x012C
    0102 C050      RJMP	0x0153
(0257)       	{//检测遥控器是否有键按下
(0258)       case 0x04:  // < A >
(0259) 		 delay_time2 = delay_time2 - 50;
    0103 91800061  LDS	R24,_delay_time2
    0105 91900062  LDS	R25,_delay_time2+1
    0107 97C2      SBIW	R24,0x32
    0108 93900062  STS	_delay_time2+1,R25
    010A 93800061  STS	_delay_time2,R24
(0260) 	     if(delay_time2 == 50)
    010C 3382      CPI	R24,0x32
    010D E0E0      LDI	R30,0
    010E 079E      CPC	R25,R30
    010F F009      BEQ	0x0111
    0110 C042      RJMP	0x0153
(0261) 		   {delay_time2 = 100;}	 
    0111 E684      LDI	R24,0x64
    0112 E090      LDI	R25,0
    0113 93900062  STS	_delay_time2+1,R25
    0115 93800061  STS	_delay_time2,R24
(0262)       	break;
    0117 C03B      RJMP	0x0153
(0263)       case 0x02:  // < B >
(0264) 		 delay_time1 = delay_time1 + 50;
    0118 91800063  LDS	R24,_delay_time1
    011A 91900064  LDS	R25,_delay_time1+1
    011C 96C2      ADIW	R24,0x32
    011D 93900064  STS	_delay_time1+1,R25
    011F 93800063  STS	_delay_time1,R24
(0265) 	     if(delay_time1 == 2050)
    0121 3082      CPI	R24,2
    0122 E0E8      LDI	R30,0x8
    0123 079E      CPC	R25,R30
    0124 F571      BNE	0x0153
(0266) 		   {delay_time1 = 2000;}	 
    0125 ED80      LDI	R24,0xD0
    0126 E097      LDI	R25,7
    0127 93900064  STS	_delay_time1+1,R25
    0129 93800063  STS	_delay_time1,R24
(0267)       	break;
    012B C027      RJMP	0x0153
(0268)       case 0x08:  // < C >
(0269) 		 delay_time1 = delay_time1 - 50;
    012C 91800063  LDS	R24,_delay_time1
    012E 91900064  LDS	R25,_delay_time1+1
    0130 97C2      SBIW	R24,0x32
    0131 93900064  STS	_delay_time1+1,R25
    0133 93800063  STS	_delay_time1,R24
(0270) 	     if(delay_time1 == 50)
    0135 3382      CPI	R24,0x32
    0136 E0E0      LDI	R30,0
    0137 079E      CPC	R25,R30
    0138 F4D1      BNE	0x0153
(0271) 		   {delay_time1 = 100;}	 
    0139 E684      LDI	R24,0x64
    013A E090      LDI	R25,0
    013B 93900064  STS	_delay_time1+1,R25
    013D 93800063  STS	_delay_time1,R24
(0272)       	break;
    013F C013      RJMP	0x0153
(0273)       case 0x01:  // < D >
(0274)          delay_time2 = delay_time2 + 50;
    0140 91800061  LDS	R24,_delay_time2
    0142 91900062  LDS	R25,_delay_time2+1
    0144 96C2      ADIW	R24,0x32
    0145 93900062  STS	_delay_time2+1,R25
    0147 93800061  STS	_delay_time2,R24
(0275) 	     if(delay_time2 == 2050)
    0149 3082      CPI	R24,2
    014A E0E8      LDI	R30,0x8
    014B 079E      CPC	R25,R30
    014C F431      BNE	0x0153
(0276) 		   {delay_time2 = 2000;}	 
    014D ED80      LDI	R24,0xD0
    014E E097      LDI	R25,7
    014F 93900062  STS	_delay_time2+1,R25
    0151 93800061  STS	_delay_time2,R24
(0277)       	break;
(0278)       case 0x00:  // 无按键
(0279) 	     break;
(0280) 		} 
(0281) }
    0153 9508      RET
FILE: E:\icc\iccavr\sl3010\cny\cny.c
(0001) //ICC-AVR application builder : 03-1-20 17:20:32
(0002) // Target : 8515
(0003) // Crystal: 8.0000Mhz
(0004) //测试探测信号  由PA口的LED指示
(0005) 
(0006) 
(0007) #include <io8515v.h>
(0008) #include <macros.h>
(0009) #include <sl3010.c>
(0010) unsigned char cny;
(0011) 
(0012) 
(0013) //call this routine to initialise all peripherals
(0014) void init_devices(void)
(0015) {
(0016)  //stop errant interrupts until set up
(0017)  CLI(); //disable all interrupts
_init_devices:
    0154 94F8      BCLR	7
(0018)  port_init();
    0155 DED7      RCALL	_port_init
(0019) 
(0020)  MCUCR = 0x00;
    0156 2422      CLR	R2
    0157 BE25      OUT	0x35,R2
(0021)  GIMSK = 0x00;
    0158 BE2B      OUT	0x3B,R2
(0022)  TIMSK = 0x00;
    0159 BE29      OUT	0x39,R2
(0023)  SEI(); //re-enable interrupts
    015A 9478      BSET	7
(0024)  //all peripherals are now initialised
(0025) }
    015B 9508      RET
(0026) 
(0027) //
(0028) void main(void)
(0029) {
(0030)  init_devices();
_main:
    015C DFF7      RCALL	_init_devices
    015D C005      RJMP	0x0163
(0031)  while(1)
(0032)     {
(0033) 	 sw_touch();
    015E DF16      RCALL	_sw_touch
(0034) 	 cny = PINC;
    015F B223      IN	R2,0x13
    0160 92200060  STS	_cny,R2
(0035) 	 PORTA = cny;
    0162 BA2B      OUT	0x1B,R2
    0163 CFFA      RJMP	0x015E
(0036) 	}
(0037) }
FILE: <library>
    0164 9508      RET
push_gset1:
    0165 935A      ST	R21,-Y
    0166 934A      ST	R20,-Y
    0167 9508      RET
pop_gset1:
    0168 E0E1      LDI	R30,1
pop:
    0169 9149      LD	R20,Y+
    016A 9159      LD	R21,Y+
    016B FDE0      SBRC	R30,0
    016C 9508      RET
    016D 9169      LD	R22,Y+
    016E 9179      LD	R23,Y+
    016F FDE1      SBRC	R30,1
    0170 9508      RET
    0171 90A9      LD	R10,Y+
    0172 90B9      LD	R11,Y+
    0173 FDE2      SBRC	R30,2
    0174 9508      RET
    0175 90C9      LD	R12,Y+
    0176 90D9      LD	R13,Y+
    0177 FDE3      SBRC	R30,3
    0178 9508      RET
    0179 90E9      LD	R14,Y+
    017A 90F9      LD	R15,Y+
    017B 9508      RET

⌨️ 快捷键说明

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