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

📄 sl3010.s

📁 单片机开发资料光盘-双龙-686M.zip
💻 S
📖 第 1 页 / 共 2 页
字号:
	out 0x1b,R24
	.dbline 180
	ldi R16,250
	ldi R17,0
	rcall _delay_ms
	.dbline 181
L23:
	.dbline 175
; 		  while(1)
	rjmp L22
X1:
	.dbline 182
; 		    {
; 			 PORTA = 0x55;
; 		     delay_ms(250);
; 		     PORTA = 0xAA;
; 		     delay_ms(250);
; 			}
; 		 }
L20:
	.dbline 184
; 	   
;        turn_left();         //左转
	rcall _turn_left
	.dbline 185
;        delay_ms(touch_time);
	ldi R16,250
	ldi R17,0
	rcall _delay_ms
	.dbline 186
;    }
L18:
	.dbline 188
;  
;  sw_in = PINB & 0x70;
	in R20,0x16
	andi R20,112
	.dbline 189
;  if(sw_in == 0x50)// 0b 0101,0000  尾部开关接触 
	cpi R20,80
	brne L25
	.dbline 190
;    {//前行,左转
	.dbline 191
; 	   forward();           //前行
	rcall _forward
	.dbline 192
;        delay_ms(touch_time);
	ldi R16,250
	ldi R17,0
	rcall _delay_ms
	.dbline 194
;        
; 	   turn_left();         //左转
	rcall _turn_left
	.dbline 195
;        delay_ms(touch_time);
	ldi R16,250
	ldi R17,0
	rcall _delay_ms
	.dbline 196
;    }
L25:
	.dbline 197
;  if(sw_in == 0x30)// 0b 0011,0000  右侧开关接触
	cpi R20,48
	brne L27
	.dbline 198
;    {//后退,左转
	.dbline 199
;        backward();          //后退
	rcall _backward
	.dbline 200
;        delay_ms(touch_time);
	ldi R16,250
	ldi R17,0
	rcall _delay_ms
	.dbline 202
;        
; 	   turn_left();         //左转
	rcall _turn_left
	.dbline 203
;        delay_ms(touch_time);
	ldi R16,250
	ldi R17,0
	rcall _delay_ms
	.dbline 204
;    }  
L27:
	.dbline 205
;  if(sw_in == 0x60)// 0b 0110,0000  左侧开关接触
	cpi R20,96
	brne L29
	.dbline 206
;    {//后退,左转
	.dbline 207
;        backward();          //后退
	rcall _backward
	.dbline 208
;        delay_ms(touch_time);
	ldi R16,250
	ldi R17,0
	rcall _delay_ms
	.dbline 210
;        
; 	   turn_left();         //左转
	rcall _turn_left
	.dbline 211
;        delay_ms(touch_time);
	ldi R16,250
	ldi R17,0
	rcall _delay_ms
	.dbline 212
;    }
L29:
	.dbline 213
;  if(sw_in == 0x20)// 0b 0010,0000  两侧开关同时接触,停止运动
	cpi R20,32
	brne L31
	.dbline 214
;    {
	.dbline 215
; 	stop();       //停止运动,熄灭指示灯
	rcall _stop
	.dbline 216
;     delay_ms(touch_time*4);
	ldi R16,1000
	ldi R17,3
	rcall _delay_ms
	rjmp L34
L33:
	.dbline 218
; 	while(1)
; 	     {
	.dbline 219
; 		  sw_in = PINC & 0x10;
	in R20,0x13
	andi R20,16
	.dbline 220
; 		  if(sw_in == 0x00)
	brne L36
	.dbline 221
; 		    {break;}
	.dbline 221
	rjmp L35
L36:
	.dbline 222
; 		  PORTA = 0x55;
	ldi R24,85
	out 0x1b,R24
	.dbline 223
; 		  delay_ms(250);
	ldi R16,250
	ldi R17,0
	rcall _delay_ms
	.dbline 224
; 		  PORTA = 0xAA;
	ldi R24,170
	out 0x1b,R24
	.dbline 225
; 		  delay_ms(250);
	ldi R16,250
	ldi R17,0
	rcall _delay_ms
	.dbline 226
; 		  remote_in = PINB & 0x0f;
	in R22,0x16
	andi R22,15
	.dbline 227
; 		  if(remote_in != 0x00)
	breq L38
	.dbline 228
; 		    {break;}
	.dbline 228
	rjmp L35
L38:
	.dbline 229
L34:
	.dbline 217
	rjmp L33
L35:
	.dbline 230
L31:
	.dbline -2
	.dbline 231
; 		 }
;    }   
; }
L17:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r remote_in 22 c
	.dbsym r sw_in 20 c
	.dbend
	.dbfunc e mic_startup _mic_startup fV
;         mic_in -> R20
	.even
_mic_startup::
	rcall push_gset1
	.dbline -1
	.dbline 234
; 
; void mic_startup()
; {//声控启动程序运行
	.dbline 236
;  unsigned char mic_in;
;  DDRC = 0x01;PORTC = 0xFF;
	ldi R24,1
	out 0x14,R24
	.dbline 236
	ldi R24,255
	out 0x15,R24
	.dbline 237
;  delay_us(1);
	ldi R16,1
	ldi R17,0
	rcall _delay_us
	rjmp L42
L41:
	.dbline 239
;  while(1)//等待pc3(声控键)按键按下	
;  {	  //无键按下等待
	.dbline 240
;   mic_in = PINC & 0x08;     //pc2=0
	in R20,0x13
	andi R20,8
	.dbline 241
;   if(mic_in == 0){break;}
	brne L44
	.dbline 241
	.dbline 241
	rjmp L43
L44:
	.dbline 242
L42:
	.dbline 238
	rjmp L41
L43:
	.dbline -2
	.dbline 243
;  }//有键按下运行下面的程序
; }
L40:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r mic_in 20 c
	.dbend
	.dbfunc e remote_auto_time _remote_auto_time fV
;      remote_in -> R16
	.even
_remote_auto_time::
	.dbline -1
	.dbline 260
; 
; //                #       
; //                #
; //                #
; //                #
; //                #    //  delay_time1  转弯时间
; //        # # # # #    //  delay_time2  直行时间
; //      # X       #    //<A>  0x04  delay_time2-50
; //      #   B  C  #    //<B>  0x02  delay_time1+50
; //      #  D  A   #    //<C>  0x08  delay_time1-50
; //      #         #    //<D>  0x01  delay_time2+50
; //        # # # #      // max: 2000   min: 200 
; 
; unsigned int delay_time1,delay_time2;
; 
; void remote_auto_time()
; {
	.dbline 262
;  unsigned char remote_in;
;  	  remote_in = PINB & 0x0F;
	in R16,0x16
	andi R16,15
	.dbline 263
;       switch (remote_in)
	clr R17
	cpi R16,0
	cpc R16,R17
	brne X4
	rjmp L48
X4:
X2:
	cpi R16,1
	ldi R30,0
	cpc R17,R30
	brne X5
	rjmp L59
X5:
	cpi R16,2
	ldi R30,0
	cpc R17,R30
	breq L53
	cpi R16,4
	ldi R30,0
	cpc R17,R30
	breq L50
	cpi R16,8
	ldi R30,0
	cpc R17,R30
	breq L56
	rjmp L47
X3:
	.dbline 264
;       	{//检测遥控器是否有键按下
L50:
	.dbline 266
;       case 0x04:  // < A >
; 		 delay_time2 = delay_time2 - 50;
	lds R24,_delay_time2
	lds R25,_delay_time2+1
	sbiw R24,50
	sts _delay_time2+1,R25
	sts _delay_time2,R24
	.dbline 267
; 	     if(delay_time2 == 50)
	cpi R24,50
	ldi R30,0
	cpc R25,R30
	breq X6
	rjmp L48
X6:
	.dbline 268
; 		   {delay_time2 = 100;}	 
	.dbline 268
	ldi R24,100
	ldi R25,0
	sts _delay_time2+1,R25
	sts _delay_time2,R24
	.dbline 268
	.dbline 269
;       	break;
	rjmp L48
L53:
	.dbline 271
;       case 0x02:  // < B >
; 		 delay_time1 = delay_time1 + 50;
	lds R24,_delay_time1
	lds R25,_delay_time1+1
	adiw R24,50
	sts _delay_time1+1,R25
	sts _delay_time1,R24
	.dbline 272
; 	     if(delay_time1 == 2050)
	cpi R24,2
	ldi R30,8
	cpc R25,R30
	brne L48
	.dbline 273
; 		   {delay_time1 = 2000;}	 
	.dbline 273
	ldi R24,2000
	ldi R25,7
	sts _delay_time1+1,R25
	sts _delay_time1,R24
	.dbline 273
	.dbline 274
;       	break;
	rjmp L48
L56:
	.dbline 276
;       case 0x08:  // < C >
; 		 delay_time1 = delay_time1 - 50;
	lds R24,_delay_time1
	lds R25,_delay_time1+1
	sbiw R24,50
	sts _delay_time1+1,R25
	sts _delay_time1,R24
	.dbline 277
; 	     if(delay_time1 == 50)
	cpi R24,50
	ldi R30,0
	cpc R25,R30
	brne L48
	.dbline 278
; 		   {delay_time1 = 100;}	 
	.dbline 278
	ldi R24,100
	ldi R25,0
	sts _delay_time1+1,R25
	sts _delay_time1,R24
	.dbline 278
	.dbline 279
;       	break;
	rjmp L48
L59:
	.dbline 281
;       case 0x01:  // < D >
;          delay_time2 = delay_time2 + 50;
	lds R24,_delay_time2
	lds R25,_delay_time2+1
	adiw R24,50
	sts _delay_time2+1,R25
	sts _delay_time2,R24
	.dbline 282
; 	     if(delay_time2 == 2050)
	cpi R24,2
	ldi R30,8
	cpc R25,R30
	brne L48
	.dbline 283
; 		   {delay_time2 = 2000;}	 
	.dbline 283
	ldi R24,2000
	ldi R25,7
	sts _delay_time2+1,R25
	sts _delay_time2,R24
	.dbline 283
	.dbline 284
;       	break;
	.dbline 286
;       case 0x00:  // 无按键
; 	     break;
L47:
L48:
	.dbline -2
	.dbline 288
; 		} 
; }
L46:
	.dbline 0 ; func end
	ret
	.dbsym r remote_in 16 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\icc\include\sl3010.c
_delay_time2::
	.blkb 2
	.dbsym e delay_time2 _delay_time2 i
_delay_time1::
	.blkb 2
	.dbsym e delay_time1 _delay_time1 i
_work_status::
	.blkb 1
	.dbsym e work_status _work_status c

⌨️ 快捷键说明

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