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

📄 调试程序.s

📁 这段程序是步进电机的细分驱动程序
💻 S
📖 第 1 页 / 共 5 页
字号:
; 		PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 223
; 		PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 225
; 	
; 	    PORTB=DATA_LOW; //D1
	out 0x18,R14
	.dbline 226
; 		PORTB=DATA_LOW;
	out 0x18,R14
	.dbline 227
; 		PORTB=DATA_LOW|CLOK_LOW;
	mov R2,R14
	or R2,R12
	out 0x18,R2
	.dbline 228
; 		PORTB=DATA_LOW|CLOK_LOW;
	mov R2,R14
	or R2,R12
	out 0x18,R2
	.dbline 229
; 		PORTB=DATA_LOW|CLOK_HIG;
	mov R2,R14
	or R2,R22
	out 0x18,R2
	.dbline 230
; 		PORTB=DATA_LOW|CLOK_HIG;
	mov R2,R14
	or R2,R22
	out 0x18,R2
	.dbline 232
; 	
; 	    PORTB=DATA_HIG; //D0		数据模式
	out 0x18,R10
	.dbline 233
; 		PORTB=DATA_HIG;
	out 0x18,R10
	.dbline 234
; 		PORTB=DATA_HIG|CLOK_LOW;
	mov R2,R10
	or R2,R12
	out 0x18,R2
	.dbline 235
; 		PORTB=DATA_HIG|CLOK_LOW;
	mov R2,R10
	or R2,R12
	out 0x18,R2
	.dbline 236
; 		PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 237
; 		PORTB=DATA_HIG|CLOK_HIG; 
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 239
; 		    
; 	    PORTE=STRB_HIG;	 
	out 0x3,R20
	.dbline 240
; 	    PORTE=STRB_HIG;
	out 0x3,R20
	.dbline 242
; 		
; 		return 0x01;
	ldi R16,1
	xjmp L3
L4:
	.dbline 244
; 	}
; 	else{
	.dbline 245
; 		return 0x00;
	clr R16
	.dbline -2
L3:
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r STRB_HIG 20 c
	.dbsym r STRB_LOW 4 c
	.dbsym r DATA_HIG 10 c
	.dbsym r CLOK_HIG 22 c
	.dbsym r CLOK_LOW 12 c
	.dbsym r DATA_LOW 14 c
	.dbsym r Port 16 c
	.dbend
	.dbfunc e OutputMotor _OutputMotor fc
;       CLOK_LOW -> y+0
;       STRB_LOW -> R8
;       STRB_HIG -> R20
;       DATA_HIG -> R12
;       CLOK_HIG -> R22
;       DATA_LOW -> R10
;     Bridge2DAC -> R14
;     Bridge1DAC -> R4
;           Port -> R6
	.even
_OutputMotor::
	xcall push_gset5
	mov R4,R18
	mov R6,R16
	sbiw R28,1
	ldd R14,y+11
	.dbline -1
	.dbline 250
; 	}
; }
; //步进电机转动函数
; unsigned char OutputMotor(unsigned char Port,unsigned char Bridge1DAC,unsigned char Bridge2DAC)
; {
	.dbline 254
; 	unsigned char STRB_LOW,CLOK_LOW,DATA_LOW;
; 	unsigned char STRB_HIG,CLOK_HIG,DATA_HIG;
; 	
; 	if((Port>=0x01)&&(Port<=0x04))
	mov R24,R6
	cpi R24,1
	brsh X4
	xjmp L14
X4:
	ldi R24,4
	cp R24,R6
	brsh X5
	xjmp L14
X5:
	.dbline 255
; 	{		
	.dbline 256
; 		switch(Port)
	mov R20,R6
	clr R21
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L19
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L20
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L21
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	breq L22
	xjmp L16
X3:
	.dbline 257
; 		{
L19:
	.dbline 259
; 		    case 0x01:
; 			    STRB_LOW = 0x00;
	clr R8
	.dbline 260
; 				STRB_HIG = 0x10;
	ldi R20,16
	.dbline 261
; 				CLOK_LOW = 0x00;
	clr R0
	std y+0,R0
	.dbline 262
; 				CLOK_HIG = 0x01;
	ldi R22,1
	.dbline 263
; 				DATA_LOW = 0x00;
	clr R10
	.dbline 264
; 				DATA_HIG = 0x10;
	ldi R24,16
	mov R12,R24
	.dbline 265
; 			    break;
	xjmp L17
L20:
	.dbline 267
; 			case 0x02:
; 			    STRB_LOW = 0x00;
	clr R8
	.dbline 268
; 				STRB_HIG = 0x20;
	ldi R20,32
	.dbline 269
; 				CLOK_LOW = 0x00;
	clr R0
	std y+0,R0
	.dbline 270
; 				CLOK_HIG = 0x02;
	ldi R22,2
	.dbline 271
; 				DATA_LOW = 0x00;
	clr R10
	.dbline 272
; 				DATA_HIG = 0x20;
	ldi R24,32
	mov R12,R24
	.dbline 273
; 			    break;
	xjmp L17
L21:
	.dbline 275
; 			case 0x03:
; 			    STRB_LOW = 0x00;
	clr R8
	.dbline 276
; 				STRB_HIG = 0x40;
	ldi R20,64
	.dbline 277
; 				CLOK_LOW = 0x00;
	clr R0
	std y+0,R0
	.dbline 278
; 				CLOK_HIG = 0x04;
	ldi R22,4
	.dbline 279
; 				DATA_LOW = 0x00;
	clr R10
	.dbline 280
; 				DATA_HIG = 0x40;
	ldi R24,64
	mov R12,R24
	.dbline 281
; 			    break;
	xjmp L17
L22:
	.dbline 283
; 			case 0x04:
; 			    STRB_LOW = 0x00;
	clr R8
	.dbline 284
; 				STRB_HIG = 0x80;
	ldi R20,128
	.dbline 285
; 				CLOK_LOW = 0x00;
	clr R0
	std y+0,R0
	.dbline 286
; 				CLOK_HIG = 0x08;
	ldi R22,8
	.dbline 287
; 				DATA_LOW = 0x00;
	clr R10
	.dbline 288
; 				DATA_HIG = 0x80;
	ldi R24,128
	mov R12,R24
	.dbline 289
; 			    break;
L16:
L17:
	.dbline 292
; 		}
; 	 
; 		PORTB=CLOK_LOW;
	ldd R0,y+0
	out 0x18,R0
	.dbline 293
; 		PORTE=STRB_LOW;
	out 0x3,R8
	.dbline 295
; 
; 	    if(Port==3)
	mov R24,R6
	cpi R24,3
	brne L23
	.dbline 296
; 	   {
	.dbline 297
; 		PORTB=DATA_LOW;      //D18  	电流范围选择方式 0:VDAC/8Rs  1:VDAC/4Rs
	out 0x18,R10
	.dbline 298
; 		PORTB=DATA_LOW|CLOK_HIG; 
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 299
; 	   }
	xjmp L24
L23:
	.dbline 301
; 	   else
; 	   {
	.dbline 302
; 		PORTB=DATA_HIG;      //D18  	电流范围选择方式 0:VDAC/8Rs  1:VDAC/4Rs
	out 0x18,R12
	.dbline 303
; 		PORTB=DATA_HIG|CLOK_HIG; 
	mov R2,R12
	or R2,R22
	out 0x18,R2
	.dbline 304
; 	   }
L24:
	.dbline 305
; 	    PORTB=DATA_LOW;     //D17 	参考电压方式 0:内部2V参考电压 1:外部参考电压
	out 0x18,R10
	.dbline 306
; 		PORTB=DATA_LOW|CLOK_HIG; 
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 308
; 	
; 	    PORTB=DATA_LOW;   	//D16  	H桥2衰减模式 0:混合衰减模式 1:慢衰减模式//
	out 0x18,R10
	.dbline 309
; 		PORTB=DATA_LOW|CLOK_HIG;	 
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 311
; 	
; 	    PORTB=DATA_LOW;   	//D15 	H桥1衰减模式 0:混合衰减模式 1:慢衰减模式//
	out 0x18,R10
	.dbline 312
; 		PORTB=DATA_LOW|CLOK_HIG;	 	
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 314
; 		
;  	    if(Bridge2DAC&0x80) //D14	绕组2电流方向 0:OUT2B->OUT2A	 0:OUT2A->OUT2B 	
	sbrs R14,7
	rjmp L25
	.dbline 315
; 	    {
	.dbline 316
; 	       PORTB=DATA_HIG;
	out 0x18,R12
	.dbline 317
; 	       PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R12
	or R2,R22
	out 0x18,R2
	.dbline 318
; 	    }
	xjmp L26
L25:
	.dbline 319
; 	    else{
	.dbline 320
; 	       PORTB=DATA_LOW;
	out 0x18,R10
	.dbline 321
; 	       PORTB=DATA_LOW|CLOK_HIG;
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 322
; 	    }	 	
L26:
	.dbline 324
; 	
;  	    if(Bridge2DAC&0x40) //D13	绕组1电流方向 0:OUT1B->OUT1A	 0:OUT1A->OUT1B
	sbrs R14,6
	rjmp L27
	.dbline 325
; 	    {
	.dbline 326
; 	       PORTB=DATA_HIG;
	out 0x18,R12
	.dbline 327
; 	       PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R12
	or R2,R22
	out 0x18,R2
	.dbline 328
; 	    }
	xjmp L28
L27:
	.dbline 329
; 	    else{
	.dbline 330
; 	       PORTB=DATA_LOW;
	out 0x18,R10
	.dbline 331
; 	       PORTB=DATA_LOW|CLOK_HIG;
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 332
; 	    }	 	
L28:
	.dbline 334
; 		
;  	    if(Bridge2DAC&0x20)
	sbrs R14,5
	rjmp L29
	.dbline 335
; 	    {
	.dbline 336
; 	       PORTB=DATA_HIG;
	out 0x18,R12
	.dbline 337
; 	       PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R12
	or R2,R22
	out 0x18,R2
	.dbline 338
; 	    }
	xjmp L30
L29:
	.dbline 339
; 	    else{
	.dbline 340
; 	       PORTB=DATA_LOW;
	out 0x18,R10
	.dbline 341
; 	       PORTB=DATA_LOW|CLOK_HIG;
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 342
; 	    }  	
L30:
	.dbline 344
; 		
;  	    if(Bridge2DAC&0x10)
	sbrs R14,4
	rjmp L31
	.dbline 345
; 	    {
	.dbline 346
; 	       PORTB=DATA_HIG;
	out 0x18,R12
	.dbline 347
; 	       PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R12
	or R2,R22
	out 0x18,R2
	.dbline 348
; 	    }
	xjmp L32
L31:
	.dbline 349
; 	    else{
	.dbline 350
; 	       PORTB=DATA_LOW;
	out 0x18,R10
	.dbline 351
; 	       PORTB=DATA_LOW|CLOK_HIG;
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 352
; 	    }  	
L32:
	.dbline 354
; 		
;  	    if(Bridge2DAC&0x08)
	sbrs R14,3
	rjmp L33
	.dbline 355
; 	    {
	.dbline 356
; 	       PORTB=DATA_HIG;
	out 0x18,R12
	.dbline 357
; 	       PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R12
	or R2,R22
	out 0x18,R2
	.dbline 358
; 	    }
	xjmp L34
L33:
	.dbline 359
; 	    else{
	.dbline 360
; 	       PORTB=DATA_LOW;
	out 0x18,R10
	.dbline 361
; 	       PORTB=DATA_LOW|CLOK_HIG;
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 362
; 	    } 	
L34:
	.dbline 364
; 		
;  	    if(Bridge2DAC&0x04)
	sbrs R14,2
	rjmp L35
	.dbline 365
; 	    {
	.dbline 366
; 	       PORTB=DATA_HIG;
	out 0x18,R12
	.dbline 367
; 	       PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R12
	or R2,R22
	out 0x18,R2
	.dbline 368
; 	    }
	xjmp L36
L35:
	.dbline 369
; 	    else{
	.dbline 370
; 	       PORTB=DATA_LOW;
	out 0x18,R10
	.dbline 371
; 	       PORTB=DATA_LOW|CLOK_HIG;
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 372
; 	    }	
L36:
	.dbline 374
; 		
;  	    if(Bridge2DAC&0x02)
	sbrs R14,1
	rjmp L37
	.dbline 375
; 	    {
	.dbline 376
; 	       PORTB=DATA_HIG;
	out 0x18,R12
	.dbline 377
; 	       PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R12
	or R2,R22
	out 0x18,R2
	.dbline 378
; 	    }
	xjmp L38
L37:
	.dbline 379
; 	    else{
	.dbline 380
; 	       PORTB=DATA_LOW;
	out 0x18,R10
	.dbline 381
; 	       PORTB=DATA_LOW|CLOK_HIG;
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 382
; 	    }	
L38:
	.dbline 384
; 		
;  	    if(Bridge2DAC&0x01)
	sbrs R14,0
	rjmp L39
	.dbline 385
; 	    {
	.dbline 386
; 	       PORTB=DATA_HIG;
	out 0x18,R12
	.dbline 387
; 	       PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R12
	or R2,R22
	out 0x18,R2
	.dbline 388
; 	    }
	xjmp L40
L39:
	.dbline 389
; 	    else{
	.dbline 390
; 	       PORTB=DATA_LOW;
	out 0x18,R10
	.dbline 391
; 	       PORTB=DATA_LOW|CLOK_HIG;
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 392
; 	    }	
L40:
	.dbline 394
; 	 	
;  	    if(Bridge1DAC&0x20)
	sbrs R4,5
	rjmp L41
	.dbline 395
; 	    {
	.dbline 396
; 	       PORTB=DATA_HIG;
	out 0x18,R12
	.dbline 397
; 	       PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R12
	or R2,R22
	out 0x18,R2
	.dbline 398
; 	    }
	xjmp L42
L41:
	.dbline 399
; 	    else{
	.dbline 400
; 	       PORTB=DATA_LOW;
	out 0x18,R10
	.dbline 401
; 	       PORTB=DATA_LOW|CLOK_HIG;
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 402
; 	    } 	
L42:
	.dbline 404
; 		
;  	    if(Bridge1DAC&0x10)
	sbrs R4,4
	rjmp L43
	.dbline 405
; 	    {
	.dbline 406
; 	       PORTB=DATA_HIG;
	out 0x18,R12
	.dbline 407
; 	       PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R12
	or R2,R22
	out 0x18,R2
	.dbline 408
; 	    }
	xjmp L44
L43:
	.dbline 409
; 	    else{
	.dbline 410
; 	       PORTB=DATA_LOW;
	out 0x18,R10
	.dbline 411
; 	       PORTB=DATA_LOW|CLOK_HIG;
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 412
; 	    }
L44:
	.dbline 414
; 		
;  	    if(Bridge1DAC&0x08)
	sbrs R4,3
	rjmp L45
	.dbline 415
; 	    {
	.dbline 416
; 	       PORTB=DATA_HIG;
	out 0x18,R12
	.dbline 417
; 	       PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R12
	or R2,R22
	out 0x18,R2
	.dbline 418
; 	    }
	xjmp L46
L45:
	.dbline 419
; 	    else{
	.dbline 420
; 	       PORTB=DATA_LOW;
	out 0x18,R10
	.dbline 421
; 	       PORTB=DATA_LOW|CLOK_HIG;
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 422
; 	    } 
L46:
	.dbline 424
; 		
;  	    if(Bridge1DAC&0x04)
	sbrs R4,2
	rjmp L47
	.dbline 425
; 	    {
	.dbline 426
; 	       PORTB=DATA_HIG;
	out 0x18,R12
	.dbline 427
; 	       PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R12
	or R2,R22
	out 0x18,R2
	.dbline 428
; 	    }
	xjmp L48
L47:
	.dbline 429
; 	    else{
	.dbline 430
; 	       PORTB=DATA_LOW;
	out 0x18,R10
	.dbline 431
; 	       PORTB=DATA_LOW|CLOK_HIG;
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 432
; 	    } 
L48:
	.dbline 434
; 		
;  	    if(Bridge1DAC&0x02)
	sbrs R4,1
	rjmp L49
	.dbline 435
; 	    {
	.dbline 436
; 	       PORTB=DATA_HIG;
	out 0x18,R12
	.dbline 437
; 	       PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R12
	or R2,R22
	out 0x18,R2
	.dbline 438
; 	    }

⌨️ 快捷键说明

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