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

📄 test_pc10_main.s

📁 AVR单片机开发中
💻 S
📖 第 1 页 / 共 4 页
字号:
	.dbline 416
;  TIMSK = 0x00; //timer interrupt sources
	out 0x37,R2
	.dbline 417
;  ETIMSK = 0x00; //extended timer interrupt sources
	sts 125,R2
	.dbline 418
;  SEI(); //re-enable interrupts
	sei
	.dbline -2
	.dbline 420
;  //all peripherals are now initialized
; }
L74:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e test_motor_pwm _test_motor_pwm fV
	.even
_test_motor_pwm::
	.dbline -1
	.dbline 422
; void test_motor_pwm(void)
; {
	.dbline 423
;     motor_pwm(12288,12288);
	ldi R18,12288
	ldi R19,48
	ldi R16,12288
	ldi R17,48
	xcall _motor_pwm
L76:
	.dbline 425
;   do
;   {
	.dbline 427
; 	 
; 	 xy_set(0x01);
	ldi R16,1
	xcall _xy_set
	.dbline 428
; 	 printf_str(" inp  value :");
	ldi R16,<L79
	ldi R17,>L79
	xcall _printf_str
	.dbline 429
; 	 delay_nms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_nms
	.dbline 430
; 	 xy_set(0x21);
	ldi R16,33
	xcall _xy_set
	.dbline 431
; 	 printf_str("              ");
	ldi R16,<L80
	ldi R17,>L80
	xcall _printf_str
	.dbline 432
; 	 xy_set(0x21);
	ldi R16,33
	xcall _xy_set
	.dbline 433
; 	 left=scanf_int();
	xcall _scanf_int
	sts _left+1,R17
	sts _left,R16
	.dbline 434
; 	 delay_nms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_nms
	.dbline 435
; 	 xy_set(0x31);
	ldi R16,49
	xcall _xy_set
	.dbline 436
; 	 printf_str("              ");
	ldi R16,<L80
	ldi R17,>L80
	xcall _printf_str
	.dbline 437
; 	 xy_set(0x31);
	ldi R16,49
	xcall _xy_set
	.dbline 438
; 	 delay_nms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_nms
	.dbline 439
; 	 printf_int(left);
	lds R16,_left
	lds R17,_left+1
	xcall _printf_int
	.dbline 440
; 	 right=left;
	lds R2,_left
	lds R3,_left+1
	sts _right+1,R3
	sts _right,R2
	.dbline 441
;      motor_pwm(right,left);
	movw R18,R2
	movw R16,R2
	xcall _motor_pwm
	.dbline 442
; 	  }
L77:
	.dbline 443
	xjmp L76
X2:
	.dbline -2
	.dbline 446
;     while (1);
; 	
; 
; }
L75:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e test_isp_cnt _test_isp_cnt fV
	.even
_test_isp_cnt::
	.dbline -1
	.dbline 448
; void test_isp_cnt()
; {
	.dbline 449
;      motor_pwm(12288,12288);
	ldi R18,12288
	ldi R19,48
	ldi R16,12288
	ldi R17,48
	xcall _motor_pwm
	.dbline 450
;      xy_set(0x01);
	ldi R16,1
	xcall _xy_set
	.dbline 451
; 	 printf_str(" inp  value :");
	ldi R16,<L79
	ldi R17,>L79
	xcall _printf_str
	.dbline 452
; 	 delay_nms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_nms
	.dbline 453
; 	 xy_set(0x21);
	ldi R16,33
	xcall _xy_set
	.dbline 454
; 	 printf_str("        ");
	ldi R16,<L82
	ldi R17,>L82
	xcall _printf_str
	.dbline 455
; 	 xy_set(0x21);
	ldi R16,33
	xcall _xy_set
	.dbline 456
; 	 left=scanf_int();
	xcall _scanf_int
	sts _left+1,R17
	sts _left,R16
	.dbline 457
; 	 delay_nms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_nms
	.dbline 458
; 	 xy_set(0x31);
	ldi R16,49
	xcall _xy_set
	.dbline 459
; 	 printf_str("        ");
	ldi R16,<L82
	ldi R17,>L82
	xcall _printf_str
	.dbline 460
; 	 xy_set(0x31);
	ldi R16,49
	xcall _xy_set
	.dbline 461
; 	 delay_nms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_nms
	.dbline 462
; 	 printf_int(left);
	lds R16,_left
	lds R17,_left+1
	xcall _printf_int
	.dbline 463
; 	 right=left;
	lds R2,_left
	lds R3,_left+1
	sts _right+1,R3
	sts _right,R2
	.dbline 464
;      motor_pwm(right,left);
	movw R18,R2
	movw R16,R2
	xcall _motor_pwm
L83:
	.dbline 467
; 	 
;    do
; 	 {
	.dbline 468
;      spi_cnt(CH1);
	ldi R16,1
	ldi R17,0
	xcall _spi_cnt
	.dbline 469
; 	 delay_nms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_nms
	.dbline 470
; 	 xy_set(0x27);
	ldi R16,39
	xcall _xy_set
	.dbline 471
; 	 printf_str("              ");
	ldi R16,<L80
	ldi R17,>L80
	xcall _printf_str
	.dbline 472
; 	 xy_set(0x27);
	ldi R16,39
	xcall _xy_set
	.dbline 473
; 	 len_test=len/7168;
	ldi R24,0
	ldi R25,28
	ldi R26,0
	ldi R27,0
	lds R4,_len+2
	lds R5,_len+2+1
	lds R2,_len
	lds R3,_len+1
	st -y,R27
	st -y,R26
	st -y,R25
	st -y,R24
	movw R16,R2
	movw R18,R4
	xcall div32s
	sts _len_test+1,R17
	sts _len_test,R16
	.dbline 474
; 	 printf_int(len_test);
	xcall _printf_int
	.dbline 475
; 	 xy_set(0x01);
	ldi R16,1
	xcall _xy_set
	.dbline 476
; 	 printf_hex(inp(0x250));
	ldi R16,592
	ldi R17,2
	xcall _inp
	xcall _printf_hex
	.dbline 478
; 	
; 	 delay_nms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_nms
	.dbline 479
; 	 }
L84:
	.dbline 480
	xjmp L83
X3:
	.dbline -2
	.dbline 481
; 	 while(1);
; }
L81:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e gogo _gogo fV
;              k -> R22,R23
;              j -> R20,R21
;          speed -> y+2
;        gowhere -> y+0
;              i -> R10,R11
	.even
_gogo::
	xcall push_gset5
	sbiw R28,4
	.dbline -1
	.dbline 484
; 
; void gogo(void)
; {   
	.dbline 485
;     int  speed = 0;
	clr R0
	clr R1
	std y+2,R0
	std y+3,R1
	.dbline 486
;     int  gowhere = 0;
	std y+0,R0
	std y+1,R1
	.dbline 488
; 	
; 	int i=0,j=0,k=0;
	clr R10
	clr R11
	.dbline 488
	clr R20
	clr R21
	.dbline 488
	clr R22
	clr R23
	.dbline 490
;      
; 	 init_lcd ();
	xcall _init_lcd
	.dbline 491
; 	 xy_set(0x01);
	ldi R16,1
	xcall _xy_set
	.dbline 492
; 	 delay_nms(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline 493
; 	 printf_str(" inp  speed :");
	ldi R16,<L87
	ldi R17,>L87
	xcall _printf_str
	.dbline 494
; 	 delay_nms(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline 495
; 	 xy_set(0x21);
	ldi R16,33
	xcall _xy_set
	.dbline 496
; 	 printf_str("        ");
	ldi R16,<L82
	ldi R17,>L82
	xcall _printf_str
	.dbline 497
; 	 xy_set(0x21);
	ldi R16,33
	xcall _xy_set
	.dbline 498
; 	 speed = scanf_int();
	xcall _scanf_int
	std y+2,R16
	std y+3,R17
	.dbline 499
; 	 delay_nms(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline 500
; 	 xy_set(0x31);
	ldi R16,49
	xcall _xy_set
	.dbline 501
; 	 printf_str("        ");
	ldi R16,<L82
	ldi R17,>L82
	xcall _printf_str
	.dbline 502
; 	 xy_set(0x31);
	ldi R16,49
	xcall _xy_set
	.dbline 503
; 	 delay_nms(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline 504
; 	 printf_int(speed);
	ldd R16,y+2
	ldd R17,y+3
	xcall _printf_int
	.dbline 505
; 	 delay_nms(1000);
	ldi R16,1000
	ldi R17,3
	xcall _delay_nms
	.dbline 508
; 	 
; 	 
; 	 init_lcd ();
	xcall _init_lcd
	.dbline 512
; 	
; 	
; 	
; 	 xy_set(0x01);
	ldi R16,1
	xcall _xy_set
	.dbline 513
; 	 delay_nms(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline 514
; 	 printf_str(" inp len:");
	ldi R16,<L88
	ldi R17,>L88
	xcall _printf_str
	.dbline 515
; 	 delay_nms(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline 516
; 	 xy_set(0x21);
	ldi R16,33
	xcall _xy_set
	.dbline 517
; 	 printf_str("              ");
	ldi R16,<L80
	ldi R17,>L80
	xcall _printf_str
	.dbline 518
; 	 xy_set(0x21);
	ldi R16,33
	xcall _xy_set
	.dbline 519
; 	 gowhere = scanf_int();
	xcall _scanf_int
	std y+0,R16
	std y+1,R17
	.dbline 520
; 	 delay_nms(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline 521
; 	 xy_set(0x31);
	ldi R16,49
	xcall _xy_set
	.dbline 522
; 	 printf_str("             ");
	ldi R16,<L89
	ldi R17,>L89
	xcall _printf_str
	.dbline 523
; 	 xy_set(0x31);
	ldi R16,49
	xcall _xy_set
	.dbline 524
; 	 delay_nms(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline 525
; 	 printf_int(gowhere);
	ldd R16,y+0
	ldd R17,y+1
	xcall _printf_int
	.dbline 526
;      delay_nms(1000);
	ldi R16,1000
	ldi R17,3
	xcall _delay_nms
	.dbline 528
; 
;      init_lcd ();
	xcall _init_lcd
	.dbline 532
; 
;     // speed = 13000;
; 	// gowhere = 3;
; 	motor_pwm(speed,speed);
	ldd R18,y+2
	ldd R19,y+3
	ldd R16,y+2
	ldd R17,y+3
	xcall _motor_pwm
	.dbline 533
; 	outp(0x250,0xff);
	ldi R18,255
	ldi R16,592
	ldi R17,2
	xcall _outp
	.dbline 535
; 	 
; 	for(i=0;i<5;i++)
L90:
	.dbline 536
	ldi R16,1
	ldi R17,0
	xcall _spi_cnt
L91:
	.dbline 535
	movw R24,R10
	adiw R24,1
	movw R10,R24
	.dbline 535
	cpi R24,5
	ldi R30,0
	cpc R25,R30
	brlt L90
	.dbline 537
; 	 spi_cnt(CH1);
; 	 j=0;
	clr R20
	clr R21
	xjmp L95
L94:
	.dbline 539
; 	 while (1)
; 	 {  
	.dbline 541
; 	     
; 	      spi_cnt(CH1);
	ldi R16,1
	ldi R17,0
	xcall _spi_cnt
	.dbline 542
; 		  spi_cnt(CH1);
	ldi R16,1
	ldi R17,0
	xcall _spi_cnt
	.dbline 544
; 		
; 	     len_test = len/7168;  
	ldi R24,0
	ldi R25,28
	ldi R26,0
	ldi R27,0
	lds R4,_len+2
	lds R5,_len+2+1
	lds R2,_len
	lds R3,_len+1
	st -y,R27
	st -y,R26
	st -y,R25
	st -y,R24
	movw R16,R2
	movw R18,R4
	xcall div32s
	sts _len_test+1,R17
	sts _len_test,R16
	.dbline 546
; 		
; 		  if (len_test >= gowhere)
	ldd R0,y+0
	ldd R1,y+1
	cp R16,R0
	cpc R17,R1
	brlt L97
	.dbline 547
; 		  {   
	.dbline 549
; 		      
; 		      xy_set(0x31);
	ldi R16,49
	xcall _xy_set
	.dbline 550
; 		      printf_str(" stop  ");
	ldi R16,<L99
	ldi R17,>L99
	xcall _printf_str
	.dbline 551
; 			  printf_int(len_test);
	lds R16,_len_test
	lds R17,_len_test+1
	xcall _printf_int
	.dbline 552
; 			  motor_pwm(12288,12288);
	ldi R18,12288
	ldi R19,48
	ldi R16,12288
	ldi R17,48
	xcall _motor_pwm
	.dbline 553
; 		  }
	xjmp L98
L97:
	.dbline 555
; 		  else 
; 		  {  
	.dbline 556
; 		     xy_set(0x31);
	ldi R16,49
	xcall _xy_set
	.dbline 557
; 		     printf_str("         ");
	ldi R16,<L100
	ldi R17,>L100
	xcall _printf_str
	.dbline 558
; 		     xy_set(0x31);
	ldi R16,49
	xcall _xy_set
	.dbline 559
; 		     printf_int(len_test);
	lds R16,_len_test
	lds R17,_len_test+1
	xcall _printf_int
	.dbline 560
; 			 if(k==0)
	cpi R22,0
	cpc R22,R23
	brne L101
X4:
	.dbline 561
; 		     motor_pwm(speed,speed);
	ldd R18,y+2
	ldd R19,y+3
	ldd R16,y+2
	ldd R17,y+3
	xcall _motor_pwm
L101:
	.dbline 562
; 		  }
L98:
	.dbline 564
; 	      
; 		 if((inp(0x250)&0x01)!=0)
	ldi R16,592
	ldi R17,2
	xcall _inp
	sbrs R16,0
	rjmp L103
	.dbline 565
; 		  {     delay_nms(1);
	.dbline 565
	ldi R16,1
	ldi R17,0
	xcall _delay_nms
	.dbline 566
; 		        if((inp(0x250)&0x01)!=0)
	ldi R16,592
	ldi R17,2
	xcall _inp
	sbrs R16,0
	rjmp L105
	.dbline 567
; 		        {
	.dbline 568
; 				xy_set(0x21);
	ldi R16,33
	xcall _xy_set
	.dbline 569
; 		        printf_str(" touched ");
	ldi R16,<L107
	ldi R17,>L107
	xcall _printf_str
	.dbline 570
; 		        motor_pwm(12288,12288);
	ldi R18,12288
	ldi R19,48
	ldi R16,12288
	ldi R17,48
	xcall _motor_pwm
	.dbline 571
; 				k=1;
	ldi R22,1
	ldi R23,0
	.dbline 572
; 				} 
L105:
	.dbline 574
; 				
; 		  }
L103:
	.dbline 578
; 		  
; 		  
; 		  
; 	      if ((inp(0x250)&0x80)!=0)
	ldi R16,592
	ldi R17,2
	xcall _inp
	sbrs R16,7
	rjmp L108
	.dbline 579
; 		  {   delay_nms(1);
	.dbline 579
	ldi R16,1
	ldi R17,0
	xcall _delay_nms
	.dbline 580
; 		      if ((inp(0x250)&0x80)!=0)
	ldi R16,592
	ldi R17,2
	xcall _inp
	sbrs R16,7
	rjmp L109
	.dbline 581
; 			  {
	.dbline 582
; 		      xy_set(0x11);
	ldi R16,17
	xcall _xy_set
	.dbline 583
; 		      printf_str(" complete");
	ldi R16,<L112
	ldi R17,>L112
	xcall _printf_str
	.dbline 584
; 			  outp(0x250,0x00);
	clr R18
	ldi R16,592
	ldi R17,2
	xcall _outp
	.dbline 585
; 			  j++;
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 586
; 			  }
	.dbline 587
; 		  }
	xjmp L109
L108:
	.dbline 589
; 		  else
; 		  {   
	.dbline 590
; 		       delay_nms(1);
	ldi R16,1
	ldi R17,0
	xcall _delay_nms
	.dbline 591
; 		       if ((inp(0x250)&0x80)==0)

⌨️ 快捷键说明

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