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

📄 bianma.lst

📁 单片机开发资料光盘-双龙-686M.zip
💻 LST
📖 第 1 页 / 共 3 页
字号:
    00C3 F409      BNE	0x00C5
(0221) 		    {break;}
    00C4 C00F      RJMP	0x00D4
(0222) 		  PORTA = 0x55;
    00C5 E585      LDI	R24,0x55
    00C6 BB8B      OUT	P1B,R24
(0223) 		  delay_ms(250);
    00C7 EF0A      LDI	R16,0xFA
    00C8 E010      LDI	R17,0
    00C9 DF7B      RCALL	_delay_ms
(0224) 		  PORTA = 0xAA;
    00CA EA8A      LDI	R24,0xAA
    00CB BB8B      OUT	P1B,R24
(0225) 		  delay_ms(250);
    00CC EF0A      LDI	R16,0xFA
    00CD E010      LDI	R17,0
    00CE DF76      RCALL	_delay_ms
(0226) 		  remote_in = PINB & 0x0f;
    00CF B366      IN	R22,P16
    00D0 706F      ANDI	R22,0xF
(0227) 		  if(remote_in != 0x00)
    00D1 F009      BEQ	0x00D3
(0228) 		    {break;}
    00D2 C001      RJMP	0x00D4
    00D3 CFED      RJMP	0x00C1
(0229) 		 }
(0230)    }   
(0231) }
    00D4 D209      RCALL	pop_gset2
    00D5 9508      RET
_mic_startup:
  mic_in               --> R20
    00D6 D1ED      RCALL	push_gset1
(0232) 
(0233) void mic_startup()
(0234) {//声控启动程序运行
(0235)  unsigned char mic_in;
(0236)  DDRC = 0x01;PORTC = 0xFF;
    00D7 E081      LDI	R24,1
    00D8 BB84      OUT	P14,R24
    00D9 EF8F      LDI	R24,0xFF
    00DA BB85      OUT	P15,R24
(0237)  delay_us(1);
    00DB E001      LDI	R16,1
    00DC E010      LDI	R17,0
    00DD DF5F      RCALL	_delay_us
    00DE C004      RJMP	0x00E3
(0238)  while(1)//等待pc3(声控键)按键按下	
(0239)  {	  //无键按下等待
(0240)   mic_in = PINC & 0x08;     //pc2=0
    00DF B343      IN	R20,P13
    00E0 7048      ANDI	R20,0x8
(0241)   if(mic_in == 0){break;}
    00E1 F409      BNE	0x00E3
    00E2 C001      RJMP	0x00E4
    00E3 CFFB      RJMP	0x00DF
(0242)  }//有键按下运行下面的程序
(0243) }
    00E4 D1E2      RCALL	pop_gset1
    00E5 9508      RET
(0244) 
(0245) //                #       
(0246) //                #
(0247) //                #
(0248) //                #
(0249) //                #    //  delay_time1  转弯时间
(0250) //        # # # # #    //  delay_time2  直行时间
(0251) //      # X       #    //<A>  0x04  delay_time2-50
(0252) //      #   B  C  #    //<B>  0x02  delay_time1+50
(0253) //      #  D  A   #    //<C>  0x08  delay_time1-50
(0254) //      #         #    //<D>  0x01  delay_time2+50
(0255) //        # # # #      // max: 2000   min: 200 
(0256) 
(0257) unsigned int delay_time1,delay_time2;
(0258) 
(0259) void remote_auto_time()
(0260) {
(0261)  unsigned char remote_in;
(0262)  	  remote_in = PINB & 0x0F;
_remote_auto_time:
  remote_in            --> R16
    00E6 B306      IN	R16,P16
    00E7 700F      ANDI	R16,0xF
(0263)       switch (remote_in)
    00E8 2711      CLR	R17
    00E9 3000      CPI	R16,0
    00EA 0701      CPC	R16,R17
    00EB F409      BNE	0x00ED
    00EC C062      RJMP	0x014F
    00ED 3001      CPI	R16,1
    00EE E0E0      LDI	R30,0
    00EF 071E      CPC	R17,R30
    00F0 F409      BNE	0x00F2
    00F1 C04A      RJMP	0x013C
    00F2 3002      CPI	R16,2
    00F3 E0E0      LDI	R30,0
    00F4 071E      CPC	R17,R30
    00F5 F0F1      BEQ	0x0114
    00F6 3004      CPI	R16,4
    00F7 E0E0      LDI	R30,0
    00F8 071E      CPC	R17,R30
    00F9 F029      BEQ	0x00FF
    00FA 3008      CPI	R16,0x8
    00FB E0E0      LDI	R30,0
    00FC 071E      CPC	R17,R30
    00FD F151      BEQ	0x0128
    00FE C050      RJMP	0x014F
(0264)       	{//检测遥控器是否有键按下
(0265)       case 0x04:  // < A >
(0266) 		 delay_time2 = delay_time2 - 50;
    00FF 91800068  LDS	R24,_delay_time2
    0101 91900069  LDS	R25,_delay_time2+1
    0103 97C2      SBIW	R24,0x32
    0104 93900069  STS	_delay_time2+1,R25
    0106 93800068  STS	_delay_time2,R24
(0267) 	     if(delay_time2 == 50)
    0108 3382      CPI	R24,0x32
    0109 E0E0      LDI	R30,0
    010A 079E      CPC	R25,R30
    010B F009      BEQ	0x010D
    010C C042      RJMP	0x014F
(0268) 		   {delay_time2 = 100;}	 
    010D E684      LDI	R24,0x64
    010E E090      LDI	R25,0
    010F 93900069  STS	_delay_time2+1,R25
    0111 93800068  STS	_delay_time2,R24
(0269)       	break;
    0113 C03B      RJMP	0x014F
(0270)       case 0x02:  // < B >
(0271) 		 delay_time1 = delay_time1 + 50;
    0114 9180006A  LDS	R24,_delay_time1
    0116 9190006B  LDS	R25,_delay_time1+1
    0118 96C2      ADIW	R24,0x32
    0119 9390006B  STS	_delay_time1+1,R25
    011B 9380006A  STS	_delay_time1,R24
(0272) 	     if(delay_time1 == 2050)
    011D 3082      CPI	R24,2
    011E E0E8      LDI	R30,0x8
    011F 079E      CPC	R25,R30
    0120 F571      BNE	0x014F
(0273) 		   {delay_time1 = 2000;}	 
    0121 ED80      LDI	R24,0xD0
    0122 E097      LDI	R25,7
    0123 9390006B  STS	_delay_time1+1,R25
    0125 9380006A  STS	_delay_time1,R24
(0274)       	break;
    0127 C027      RJMP	0x014F
(0275)       case 0x08:  // < C >
(0276) 		 delay_time1 = delay_time1 - 50;
    0128 9180006A  LDS	R24,_delay_time1
    012A 9190006B  LDS	R25,_delay_time1+1
    012C 97C2      SBIW	R24,0x32
    012D 9390006B  STS	_delay_time1+1,R25
    012F 9380006A  STS	_delay_time1,R24
(0277) 	     if(delay_time1 == 50)
    0131 3382      CPI	R24,0x32
    0132 E0E0      LDI	R30,0
    0133 079E      CPC	R25,R30
    0134 F4D1      BNE	0x014F
(0278) 		   {delay_time1 = 100;}	 
    0135 E684      LDI	R24,0x64
    0136 E090      LDI	R25,0
    0137 9390006B  STS	_delay_time1+1,R25
    0139 9380006A  STS	_delay_time1,R24
(0279)       	break;
    013B C013      RJMP	0x014F
(0280)       case 0x01:  // < D >
(0281)          delay_time2 = delay_time2 + 50;
    013C 91800068  LDS	R24,_delay_time2
    013E 91900069  LDS	R25,_delay_time2+1
    0140 96C2      ADIW	R24,0x32
    0141 93900069  STS	_delay_time2+1,R25
    0143 93800068  STS	_delay_time2,R24
(0282) 	     if(delay_time2 == 2050)
    0145 3082      CPI	R24,2
    0146 E0E8      LDI	R30,0x8
    0147 079E      CPC	R25,R30
    0148 F431      BNE	0x014F
(0283) 		   {delay_time2 = 2000;}	 
    0149 ED80      LDI	R24,0xD0
    014A E097      LDI	R25,7
    014B 93900069  STS	_delay_time2+1,R25
    014D 93800068  STS	_delay_time2,R24
(0284)       	break;
(0285)       case 0x00:  // 无按键
(0286) 	     break;
(0287) 		} 
(0288) }
    014F 9508      RET
FILE: E:\icc\iccavr\sl3010\remote\bianma\bianma.c
(0001) // Target : 8515
(0002) //  Crystal:  8.0000Mhz
(0003) // 更新日期: 2003.03.18
(0004) // 接上遥控器,按动"A","B","C","D"会有LED灯指示
(0005) // 程序中每按键4次,认为一次输入,
(0006) //4个一组,根据按键的不同执行相应程序
(0007) 
(0008) //按四次"A",运行悬崖车程序
(0009) //按四次"B",运行遥控车程序
(0010)           //无键按下----------前行
(0011) 		  //"A", 按住---------右转
(0012) 		  //"B", 按住---------后退
(0013) 		  //"C", 按住---------停止
(0014) 		  //"D", 按住---------左转
(0015) 
(0016) //按四次"C",运行音乐车程序
(0017) //按四次"D",运行霓虹车程序
(0018) 
(0019) #include <io8515v.h>
(0020) #include <macros.h>
(0021) #include <sl3010.c>
(0022) 
(0023) //#define A 0x04      //0b0000,0100
(0024) //#define B 0x02      //0b0000,0010
(0025) //#define C 0x08      //0b0000,1000
(0026) //#define D 0x01      //0b0000,0001
(0027) #define delaytime  300
(0028) 
(0029) unsigned char bianma;
(0030) unsigned char pa,pb,pc,pd,sl,remote,bianma_count;
(0031) 
(0032) //call this routine to initialise all peripherals
(0033) void init_devices(void)
(0034) {
(0035)  //stop errant interrupts until set up
(0036)  CLI(); //disable all interrupts
_init_devices:
    0150 94F8      BCLR	7
(0037)  port_init();
    0151 DEDB      RCALL	_port_init
(0038) 
(0039)  MCUCR = 0x00;
    0152 2422      CLR	R2
    0153 BE25      OUT	P35,R2
(0040)  GIMSK = 0x00;
    0154 BE2B      OUT	P3B,R2
(0041)  TIMSK = 0x00;
    0155 BE29      OUT	P39,R2
(0042)  SEI(); //re-enable interrupts
    0156 9478      BSET	7
(0043)  //all peripherals are now initialised
(0044) }
    0157 9508      RET
_remote_car:
  temp                 --> Y+1
  stop_rst             --> R20
    0158 D16B      RCALL	push_gset1
(0045) 
(0046) void remote_car()
(0047) {
(0048)  unsigned char stop_rst,temp;
(0049)  DDRB = 0x00;PORTB = 0xFF;
    0159 2422      CLR	R2
    015A BA27      OUT	P17,R2
    015B EF8F      LDI	R24,0xFF
    015C BB88      OUT	P18,R24
(0050)  DDRA = 0xff;PORTA = 0xff;
    015D BB8A      OUT	P1A,R24
    015E BB8B      OUT	P1B,R24
    015F C037      RJMP	0x0197
(0051)  while(1)
(0052)      {
(0053) 	  remote = pb = PINB & 0x0F;
    0160 B386      IN	R24,P16
    0161 708F      ANDI	R24,0xF
    0162 2E28      MOV	R2,R24
    0163 92200065  STS	_pb,R2
    0165 92200061  STS	_remote,R2
(0054) 	  PORTA = ~pb;
    0167 9420      COM	R2
    0168 BA2B      OUT	P1B,R2
(0055) 	  if(pb == 0x04)
    0169 91800065  LDS	R24,_pb
    016B 3084      CPI	R24,4
    016C F429      BNE	0x0172
(0056) 	    {
(0057) 		 PORTD = 0x60;   //右转//0110 0000   
    016D E680      LDI	R24,0x60
    016E BB82      OUT	P12,R24
(0058) 		 PORTA = 0xCC;     //1100,1100
    016F EC8C      LDI	R24,0xCC
    0170 BB8B      OUT	P1B,R24
(0059) 		 stop_rst=0x00;
    0171 2744      CLR	R20
(0060) 		}
(0061) 	  if(pb == 0x02)
    0172 91800065  LDS	R24,_pb
    0174 3082      CPI	R24,2
    0175 F429      BNE	0x017B
(0062) 	    {
(0063) 		 PORTD = 0x50;   //后退//0101 0000   
    0176 E580      LDI	R24,0x50
    0177 BB82      OUT	P12,R24
(0064) 		 PORTA = 0x3C;     //0011,1100
    0178 E38C      LDI	R24,0x3C
    0179 BB8B      OUT	P1B,R24
(0065) 		 stop_rst=0x00;
    017A 2744      CLR	R20
(0066) 		}
(0067) 	  if(pb == 0x08)
    017B 91800065  LDS	R24,_pb
    017D 3088      CPI	R24,0x8
    017E F421      BNE	0x0183
(0068) 	    {
(0069) 		 PORTD = 0xff;   //stop   
    017F EF8F      LDI	R24,0xFF
    0180 BB82      OUT	P12,R24
(0070) 		 PORTA = 0xff;     //
    0181 BB8B      OUT	P1B,R24
(0071) 		 stop_rst++;
    0182 9543      INC	R20
(0072) 		}
(0073) 	  if(pb == 0x01)
    0183 91800065  LDS	R24,_pb
    0185 3081      CPI	R24,1
    0186 F429      BNE	0x018C
(0074) 	    {
(0075)          PORTD = 0x90;   //左转//1001 0000   
    0187 E980      LDI	R24,0x90
    0188 BB82      OUT	P12,R24
(0076) 		 PORTA = 0x33;     //0011,0011
    0189 E383      LDI	R24,0x33
    018A BB8B      OUT	P1B,R24
(0077) 		 stop_rst=0x00;
    018B 2744      CLR	R20
(0078) 		}
(0079) 	  if(pb == 0x00) 
    018C 90200065  LDS	R2,_pb
    018E 2022      TST	R2
    018F F421      BNE	0x0194
(0080) 	    {
(0081) 		 PORTD = 0xA0;   //前行//1010 0000   
    0190 EA80      LDI	R24,0xA0
    0191 BB82      OUT	P12,R24
(0082) 		 PORTA = 0xC3;     //1100,0011
    0192 EC83      LDI	R24,0xC3
    0193 BB8B      OUT	P1B,R24
(0083) 		}
(0084) /*
(0085)       while(1)
(0086) 	      {
(0087) 		   temp = PINB & 0x0f;
(0088) 		   if(temp != remote)
(0089) 		   {break;}
(0090) 		  }
(0091) 	  if(stop_rst == 0x04)
(0092) 	    {
(0093) 		 PORTD = 0xff;   //stop   
(0094) 		 PORTA=0xff;     //
(0095) 		 break;
(0096) 		}
(0097) */
(0098) 	  delay_ms(100);
    0194 E604      LDI	R16,0x64
    0195 E010      LDI	R17,0
    0196 DEAE      RCALL	_delay_ms
    0197 CFC8      RJMP	0x0160
(0099) 	 }
(0100) }
    0198 D12E      RCALL	pop_gset1
    0199 9508      RET
(0101) 
(0102) void xuanya_car(void)
(0103) {
(0104)  DDRC=0x01;PORTC=0xFF;
_xuanya_car:
    019A E081      LDI	R24,1
    019B BB84      OUT	P14,R24
    019C EF8F      LDI	R24,0xFF
    019D BB85      OUT	P15,R24
(0105)  DDRA=0xFF;PORTA=0xFF;  
    019E BB8A      OUT	P1A,R24
    019F BB8B      OUT	P1B,R24
(0106)  DDRD=0xFF;PORTD=0xFF;
    01A0 BB81      OUT	P11,R24
    01A1 BB82      OUT	P12,R24
    01A2 C084      RJMP	0x0227
(0107)  while(1)
(0108)    {//左(pc7)  中(pc6)  右(pc5)
(0109)     pc = PINC & 0x10;
    01A3 B383      IN	R24,P13
    01A4 7180      ANDI	R24,0x10
    01A5 93800064  STS	_pc,R24
(0110) 	if(pc==0x00)
    01A7 2388      TST	R24
    01A8 F471      BNE	0x01B7
(0111) 	  {
(0112) 	   PORTD = 0x50;
    01A9 E580      LDI	R24,0x50
    01AA BB82      OUT	P12,R24
(0113) 	   PORTA=0x3C;//后退
    01AB E38C      LDI	R24,0x3C
    01AC BB8B      OUT	P1B,R24
(0114) 	   delay_ms(delaytime);
    01AD E20C      LDI	R16,0x2C
    01AE E011      LDI	R17,1
    01AF DE95      RCALL	_delay_ms
(0115) 	   PORTD = 0x60;
    01B0 E680      LDI	R24,0x60
    01B1 BB82      OUT	P12,R24
(0116) 	   PORTA=0xCC;//右转
    01B2 EC8C      LDI	R24,0xCC
    01B3 BB8B      OUT	P1B,R24
(0117) 	   delay_ms(delaytime/2);
    01B4 E906      LDI	R16,0x96
    01B5 E010      LDI	R17,0
    01B6 DE8E      RCALL	_delay_ms
(0118) 	  }
(0119)     pc = PINC & 0xE0;
    01B7 B383      IN	R24,P13
    01B8 7E80      ANDI	R24,0xE0
    01B9 93800064  STS	_pc,R24
(0120)     if(pc==0x40)
    01BB 3480      CPI	R24,0x40
    01BC F489      BNE	0x01CE
(0121) 	  {
(0122) 	   PORTD = 0xFF;//刹车
    01BD EF8F      LDI	R24,0xFF
    01BE BB82      OUT	P12,R24
(0123) 	   PORTA = 0xFF;

⌨️ 快捷键说明

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