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

📄 sl3010_2.s

📁 单片机开发资料光盘-双龙-686M.zip
💻 S
📖 第 1 页 / 共 4 页
字号:
	.byte 'J,'J
	.byte 43,43
	.byte 43,43
	.byte 43,42
	.byte 42,42
	.byte 44,44
	.byte 43,41
	.byte 'H,'H
	.byte 'J,42
	.byte 41,40
	.byte 41,40
	.byte 39,'F
	.byte 'F,'F
	.byte 'F,'K
	.byte 43,42
	.byte 41,40
	.byte 41,43
	.byte 'J,'J
	.byte 'J,'K
	.byte 43,42
	.byte 'I,41
	.byte 43,'J
	.byte 42,40
	.byte 'F,'H
	.byte 'G,'J
	.byte 41,40
	.byte 39,40
	.byte 'F,'F
	.byte 'F,'F
	.byte 'J,42
	.byte 41,40
	.byte 41,40
	.byte 39,'F
	.byte 'F,'F
	.byte 'F,'K
	.byte 43,42
	.byte 41,40
	.byte 41,43
	.byte 'J,'J
	.byte 'J,'K
	.byte 43,42
	.byte 'I,41
	.byte 43,'J
	.byte 42,40
	.byte 'F,'H
	.byte 'G,'J
	.byte 41,40
	.byte 39,40
	.byte 'F,'F
	.byte 'F,'F
	.byte 0
	.dbsym e sound _sound A[137:137]c
	.area data(ram, con, rel)
	.dbfile E:\icc\iccavr\sl3010\sl3010_2\sl3010_2.c
	.area lit(rom, con, rel)
_TONETABLE::
	.word 64580
	.word 64684
	.word 64777
	.word 64820
	.word 64898
	.word 64968
	.word 65030
	.word 65058
	.word 65110
	.word 65157
	.word 65178
	.word 65217
	.word 65252
	.word 65283
	.word 65297
	.dbsym e TONETABLE _TONETABLE A[30:15]ki
	.area vector(rom, abs)
	.org 12
	rjmp _timer1_ovf_isr
	.area lit(rom, con, rel)
	.area text(rom, con, rel)
	.dbfile E:\icc\iccavr\sl3010\sl3010_2\sl3010_2.c
	.dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
	.even
_timer1_ovf_isr::
	st -y,R2
	st -y,R3
	st -y,R24
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 228
	.dbline 229
	lds R2,_toneconst
	lds R3,_toneconst+1
	out 0x2d,R3
	out 0x2c,R2
	.dbline 230
	ldi R24,1
	in R2,0x15
	eor R2,R24
	out 0x15,R2
	.dbline -2
	.dbline 231
L131:
	ld R2,y+
	out 0x3f,R2
	ld R24,y+
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e music_car _music_car fV
;      sound_add -> R20,R21
;          temp1 -> R22
;           temp -> R10
	.even
_music_car::
	rcall push_gset3
	.dbline -1
	.dbline 234
	.dbline 236
	clr R20
	clr R21
	.dbline 238
	ldi R24,24
	out 0x1b,R24
	.dbline 240
	ldi R24,48
	sts _work_status,R24
	.dbline 242
	sei
	.dbline 244
	rcall _mic_startup
	.dbline 246
	clr R2
	out 0x2f,R2
	.dbline 247
	ldi R24,2
	out 0x2e,R24
	.dbline 248
	ldi R24,<_sound
	ldi R25,>_sound
	mov R16,R20
	mov R17,R21
	add R16,R24
	adc R17,R25
	rcall _EEPROMread
	mov R22,R16
	rjmp L134
L133:
	.dbline 250
	.dbline 251
	mov R10,R22
	.dbline 252
	mov R24,R10
	andi R24,15
	mov R10,R24
	.dbline 254
	cpi R24,1
	breq L140
	cpi R24,2
	breq L140
	cpi R24,3
	breq L140
	cpi R24,4
	brne L136
L140:
	.dbline 254
	.dbline 254
	ldi R24,254
	out 0x1b,R24
	.dbline 254
L136:
	.dbline 255
	mov R24,R10
	cpi R24,5
	breq L143
	cpi R24,6
	brne L141
L143:
	.dbline 255
	.dbline 255
	ldi R24,252
	out 0x1b,R24
	.dbline 255
L141:
	.dbline 256
	mov R24,R10
	cpi R24,7
	breq L146
	cpi R24,8
	brne L144
L146:
	.dbline 256
	.dbline 256
	ldi R24,248
	out 0x1b,R24
	.dbline 256
L144:
	.dbline 257
	mov R24,R10
	cpi R24,9
	brne L147
	.dbline 257
	.dbline 257
	ldi R24,240
	out 0x1b,R24
	.dbline 257
L147:
	.dbline 258
	mov R24,R10
	cpi R24,10
	brne L149
	.dbline 258
	.dbline 258
	ldi R24,224
	out 0x1b,R24
	.dbline 258
L149:
	.dbline 259
	mov R24,R10
	cpi R24,11
	brne L151
	.dbline 259
	.dbline 259
	ldi R24,192
	out 0x1b,R24
	.dbline 259
L151:
	.dbline 260
	mov R24,R10
	cpi R24,12
	brne L153
	.dbline 260
	.dbline 260
	ldi R24,128
	out 0x1b,R24
	.dbline 260
L153:
	.dbline 261
	mov R24,R10
	cpi R24,13
	breq L158
	cpi R24,14
	breq L158
	cpi R24,15
	brne L155
L158:
	.dbline 261
	.dbline 261
	clr R2
	out 0x1b,R2
	.dbline 261
L155:
	.dbline 263
	tst R10
	breq L159
	.dbline 264
	.dbline 265
	in R24,0x39
	ori R24,128
	out 0x39,R24
	.dbline 266
	dec R10
	.dbline 267
	ldi R24,<_TONETABLE
	ldi R25,>_TONETABLE
	mov R16,R10
	clr R17
	lsl R16
	rol R17
	add R16,R24
	adc R17,R25
	rcall lpm16
	sts _toneconst+1,R17
	sts _toneconst,R16
	.dbline 268
	out 0x2d,R17
	out 0x2c,R16
	.dbline 269
L159:
	.dbline 270
	mov R10,R22
	.dbline 271
	mov R24,R10
	swap R24
	andi R24,#0x0F
	.dbline 272
	andi R24,15
	mov R10,R24
	.dbline 273
	mov R18,R24
	clr R19
	ldi R16,129
	ldi R17,0
	rcall mpy16s
	rcall _delay_ms
	.dbline 274
	in R24,0x39
	andi R24,127
	out 0x39,R24
	.dbline 275
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 276
	ldi R24,<_sound
	ldi R25,>_sound
	mov R16,R20
	mov R17,R21
	add R16,R24
	adc R17,R25
	rcall _EEPROMread
	mov R22,R16
	.dbline 277
L134:
	.dbline 249
	tst R22
	breq X8
	rjmp L133
X8:
	.dbline 278
	ldi R16,1000
	ldi R17,3
	rcall _delay_ms
	.dbline -2
	.dbline 279
L132:
	rcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r sound_add 20 i
	.dbsym r temp1 22 c
	.dbsym r temp 10 c
	.dbend
	.dbfunc e xuanya_car _xuanya_car fV
	.even
_xuanya_car::
	.dbline -1
	.dbline 296
; //PORTD = 0x90;//左转//1001 0000快速左转//PORTA = 0x33;//0011,0011
; //PORTD = 0x80;//左转//1000 0000慢速左转//PORTA = 0xF3;//1111,0011
; //PORTD = 0x60;//右转//0110 0000快速右转//PORTA = 0xCC;//1100,1100
; //PORTD = 0x20;//右转//0010 0000慢速右转//PORTA = 0xCF;//1100,1111
; //PORTD = 0x50;//后退//0101 0000        //PORTA = 0x3C;//0011,1100
; 
; //PC3声控启动
; //  用PD7~PD4来作为电机驱动端
; 
; #define xuanya_delayms  300
;  
; unsigned char pa,pb,pc,pd;
; 
; void xuanya_car(void)
; {
	.dbline 297
;  PORTA = 0xa5;//1010,0101
	ldi R24,165
	out 0x1b,R24
	.dbline 299
; 
;  work_status = 0x20;//置对应的工作状态标志
	ldi R24,32
	sts _work_status,R24
	.dbline 301
;  
;  mic_startup();       //等待声控启动
	rcall _mic_startup
	rjmp L163
L162:
	.dbline 304
;  
;  while(1)
;    {//左(pc7)  中(pc6)  右(pc5)
	.dbline 306
;     
; 	sw_touch();          //检测轻触开关
	rcall _sw_touch
	.dbline 308
; 	
; 	pc = PINC & 0x10;
	in R24,0x13
	andi R24,16
	sts _pc,R24
	.dbline 309
; 	if(pc == 0x00)
	tst R24
	brne L165
	.dbline 310
; 	  {//后退//左转
	.dbline 311
; 	   backward();//后退
	rcall _backward
	.dbline 312
; 	   delay_ms(xuanya_delayms);
	ldi R16,300
	ldi R17,1
	rcall _delay_ms
	.dbline 313
; 	   turn_right();//左转
	rcall _turn_right
	.dbline 314
; 	   delay_ms(xuanya_delayms/2);
	ldi R16,150
	ldi R17,0
	rcall _delay_ms
	.dbline 315
; 	  }
L165:
	.dbline 316
;     pc = PINC & 0xE0;
	in R24,0x13
	andi R24,224
	sts _pc,R24
	.dbline 317
;     if(pc == 0x40)
	cpi R24,64
	brne L167
	.dbline 318
; 	  {//后退//左转
	.dbline 319
; 	   backward();//后退
	rcall _backward
	.dbline 320
; 	   delay_ms(xuanya_delayms);
	ldi R16,300
	ldi R17,1
	rcall _delay_ms
	.dbline 321
; 	   turn_right();//左转
	rcall _turn_right
	.dbline 322
; 	   delay_ms(xuanya_delayms/2);
	ldi R16,150
	ldi R17,0
	rcall _delay_ms
	.dbline 323
; 	  }
L167:
	.dbline 324
; 	if(pc == 0x80)
	lds R24,_pc
	cpi R24,128
	brne L169
	.dbline 325
; 	  {//后退//左转
	.dbline 326
; 	   backward();//后退
	rcall _backward
	.dbline 327
; 	   delay_ms(xuanya_delayms);
	ldi R16,300
	ldi R17,1
	rcall _delay_ms
	.dbline 328
; 	   turn_right();//左转
	rcall _turn_right
	.dbline 329
; 	   delay_ms(xuanya_delayms/2);
	ldi R16,150
	ldi R17,0
	rcall _delay_ms
	.dbline 330
; 	  }
L169:
	.dbline 331
; 	if(pc == 0x20)
	lds R24,_pc
	cpi R24,32
	brne L171
	.dbline 332
; 	  {//后退//左转
	.dbline 333
; 	   backward();//后退
	rcall _backward
	.dbline 334
; 	   delay_ms(xuanya_delayms);
	ldi R16,300
	ldi R17,1
	rcall _delay_ms
	.dbline 335
; 	   turn_right();//左转
	rcall _turn_right
	.dbline 336
; 	   delay_ms(xuanya_delayms/2);
	ldi R16,150
	ldi R17,0
	rcall _delay_ms
	.dbline 337
; 	  }
L171:
	.dbline 338
; 	if(pc == 0xc0)
	lds R24,_pc
	cpi R24,192
	brne L173
	.dbline 339
; 	  {//后退//左转
	.dbline 340
; 	   backward();//后退
	rcall _backward
	.dbline 341
; 	   delay_ms(xuanya_delayms);
	ldi R16,300
	ldi R17,1
	rcall _delay_ms
	.dbline 342
; 	   turn_right();//左转
	rcall _turn_right
	.dbline 343
; 	   delay_ms(xuanya_delayms/2);
	ldi R16,150
	ldi R17,0
	rcall _delay_ms
	.dbline 344
; 	  }
L173:
	.dbline 345
; 	if(pc == 0x60)
	lds R24,_pc
	cpi R24,96
	brne L175
	.dbline 346
; 	  {//后退//左转
	.dbline 347
; 	   backward();//后退
	rcall _backward
	.dbline 348
; 	   delay_ms(xuanya_delayms);
	ldi R16,300
	ldi R17,1
	rcall _delay_ms
	.dbline 349
; 	   turn_right();//左转
	rcall _turn_right
	.dbline 350
; 	   delay_ms(xuanya_delayms/2);
	ldi R16,150
	ldi R17,0
	rcall _delay_ms
	.dbline 351
; 	  }
L175:
	.dbline 352
; 	if(pc == 0xE0)
	lds R24,_pc
	cpi R24,224
	brne L177
	.dbline 353
; 	  {
	.dbline 355
;        //刹车 //led灯为流水灯
;        stop();
	rcall _stop
	.dbline 356
;        PORTA = 0x3C;
	ldi R24,60
	out 0x1b,R24
	.dbline 357
;        delay_ms(xuanya_delayms);
	ldi R16,300
	ldi R17,1
	rcall _delay_ms
	.dbline 358
; 	   PORTA = 0xC3;
	ldi R24,195
	out 0x1b,R24
	.dbline 359
;        delay_ms(xuanya_delayms);
	ldi R16,300
	ldi R17,1
	rcall _delay_ms
	.dbline 360
; 	  } 
	rjmp L178
L177:
	.dbline 362
; 	else
; 	  {
	.dbline 363
; 	    forward();//前行
	rcall _forward
	.dbline 364
; 	  }
L178:
	.dbline 365
L163:
	.dbline 303
	rjmp L162
X9:
	.dbline -2
	.dbline 366
;    }
; }
L161:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e remote_car _remote_car fV
;      remote_in -> R22
	.even
_remote_car::
	rcall push_gset2
	.dbline -1
	.dbline 369
; 
; void remote_car()
; {//遥控车程序
	.dbline 372
;  unsigned char remote_in;
;  
;  PORTA = 0x0f;
	ldi R24,15
	out 0x1b,R24
	.dbline 374
;  
;  work_status = 0x60;//置对应的工作状态标志
	ldi R24,96
	sts _work_status,R24
	.dbline 376
;  
;  mic_startup();//等待声控启动函数
	rcall _mic_startup
	rjmp L181
L180:
	.dbline 379
;  
;  while(1)
;      {
	.dbline 381
; 	  
; 	  sw_touch();//检测轻触开关
	rcall _sw_touch
	.dbline 383
; 	  
; 	  remote_in = PINB & 0x0F;
	in R22,0x16
	andi R22,15
	.dbline 384
;       switch (remote_in)
	mov R20,R22
	clr R21
	cpi R20,0
	cpc R20,R21
	breq L190
X10:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L189
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L187
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	breq L186
	cpi R20,8
	ldi R30,0
	cpc R21,R30
	breq L188
	rjmp L183
X11:
	.dbline 385
;       	{//检测遥控器是否有键按下
L186:
	.dbline 387
;       case 0x04:  // < A >
; 		 turn_right();        //右转
	rcall _turn_right
	.dbline 388
;       	break;
	rjmp L184
L187:
	.dbline 390
;       case 0x02:  // < B >
; 		 backward();          //后退
	rcall _backward
	.dbline 391
;       	break;
	rjmp L184
L188:
	.dbline 393
;       case 0x08:  // < C >
; 		 stop();              //停止运动
	rcall _stop
	.dbline 394
;       	break;
	rjmp L184
L189:
	.dbline 396
;       case 0x01:  // < D >
;          turn_left();         //左转
	rcall _turn_left
	.dbline 397
;       	break;
	rjmp L184
L190:
	.dbline 399
;       case 0x00:
; 		 forward();           //前行
	rcall _forward
	.dbline 400
;       	break;
L183:
L184:
	.dbline 402
	ldi R16,100
	ldi R17,0
	rcall _delay_ms
	.dbline 403
L181:
	.dbline 378
	rjmp L180
X12:
	.dbline -2
	.dbline 404
;       	}
; 	  delay_ms(100);
; 	 }
; }
L179:
	rcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r remote_in 22 c
	.dbend
	.dbfunc e auto_car1 _auto_car1 fV
	.even
_auto_car1::
	.dbline -1
	.dbline 410
; 
; //自走车   机器人走四方形路线,遥控器调节行走路线
; unsigned int delay_time1,delay_time2;
; 
; void auto_car1()
; {
	.dbline 411
;  port_init();//PA,PB,PC,PD 初始化
	rcall _port_init
	.dbline 413
;  
;  work_status = 0x51;//置对应的工作状态标志
	ldi R24,81
	sts _work_status,R24
	.dbline 415
;  
;  PORTA = 0x44;//0100,0100
	ldi R24,68
	out 0x1b,R24
	.dbline 417
;  
;  delay_time1=510;    //转弯时间
	ldi R24,510
	ldi R25,1
	sts _delay_time1+1,R25
	sts _delay_time1,R24
	.dbline 418
;  delay_time2=1200;   //前行时间
	ldi R24,1200
	ldi R25,4
	sts _delay_time2+1,R25
	sts _delay_time2,R24
	.dbline 420
;  
;  mic_startup();//等待声控启动
	rcall _mic_startup
	.dbline 422
; 
; 	   forward();             //前行
	rcall _forward
	.dbline 423
; 	   delay_ms(200);         
	ldi R16,200
	ldi R17,0
	rcall _delay_ms
	rjmp L193
L192:
	.dbline 426
	.dbline 427
	rcall _sw_touch
	.dbline 429
	rcall _remote_auto_time
	.dbline 431
	rcall _turn_right
	.dbline 432
	lds R16,_delay_time1
	lds R17,_delay_time1+1
	rcall _delay_ms
	.dbline 434
	rcall _forward
	.dbline 435
	lds R16,_delay_time2
	lds R17,_delay_time2+1
	rcall _delay_ms
	.dbline 437
	rcall _turn_right
	.dbline 438
	lds R16,_delay_time1
	lds R17,_delay_time1+1
	rcall _delay_ms
	.dbline 440
	rcall _forward
	.dbline 441
	lds R16,_delay_time2
	lds R17,_delay_time2+1
	rcall _delay_ms
	.dbline 442
L193:
	.dbline 425
	rjmp L192
X13:
	.dbline -2
	.dbline 443
;  
;  while(1)
;       {
; 	   sw_touch();            //检测轻触开关
; 	   
; 	   remote_auto_time();    //遥控器控制直行和转弯时间
; 	   
; 	   turn_right();          //右转
; 	   delay_ms(delay_time1);
; 	
; 	   forward();             //前行
; 	   delay_ms(delay_time2);
;    
; 	   turn_right();           //右转
;        delay_ms(delay_time1);
; 
; 	   forward();             //前行
; 	   delay_ms(delay_time2);
; 	  }
; }
L191:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e auto_car8 _auto_car8 fV
	.even
_auto_car8::
	.dbline -1
	.dbline 447
; 
; //自走车   机器人走< 8 >字,遥控器调节行走路线
; void auto_car8()
; {
	.dbline 448
;  port_init();         //PA,PB,PC,PD 初始化
	rcall _port_init
	.dbline 450
;  
;  work_status = 0x50;//置对应的工作状态标志
	ldi R24,80
	sts _work_status,R24
	.dbline 452
;  
;  PORTA = 0x88;//1000,1000
	ldi R24,136
	out 0x1b,R24
	.dbline 454
;  
;  delay_time1=1000;  //转弯时间
	ldi R24,1000
	ldi R25,3
	sts _delay_time1+1,R25
	sts _delay_time1,R24
	.dbline 455
;  delay_time2=1200;  //前行时间
	ldi R24,1200
	ldi R25,4
	sts _delay_time2+1,R25
	sts _delay_time2,R24
	.dbline 457
;  
;  mic_startup();       //等待声控启动

⌨️ 快捷键说明

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