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

📄 调试程序1.s

📁 这段程序是步进电机的细分驱动程序
💻 S
📖 第 1 页 / 共 5 页
字号:
;  	 DDRC  = 0xFF;
	out 0x14,R24
	.dbline 27
;  	 PORTD = 0xFF;
	out 0x12,R24
	.dbline 28
;  	 DDRD  = 0x00;
	clr R2
	out 0x11,R2
	.dbline 29
;  	 PORTE = 0xFF;
	out 0x3,R24
	.dbline 30
;  	 DDRE  = 0xFF;
	out 0x2,R24
	.dbline 31
;      PORTF = 0xFB;
	ldi R24,251
	sts 98,R24
	.dbline 32
;  	 DDRF  = 0xFF;
	ldi R24,255
	sts 97,R24
	.dbline 33
;  	 PORTG = 0x1F;
	ldi R24,31
	sts 101,R24
	.dbline 34
;  	 DDRG  = 0x1F;
	sts 100,R24
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e init_devices _init_devices fV
	.even
_init_devices::
	.dbline -1
	.dbline 39
; }
; 
; 
; void init_devices(void)                         //寄存器处始化        
; {
	.dbline 41
;  	 //stop errant interrupts until set up
;  	 CLI(); //disable all interrupts
	cli
	.dbline 42
;  	 XDIV  = 0x00; //xtal divider
	clr R2
	out 0x3c,R2
	.dbline 43
;  	 XMCRA = 0x00; //external memory
	sts 109,R2
	.dbline 44
;  	 port_init();
	xcall _port_init
	.dbline 46
; 
;  	 MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 47
;  	 EICRA = 0x00; //extended ext ints
	sts 106,R2
	.dbline 48
;  	 EICRB = 0x00; //extended ext ints
	out 0x3a,R2
	.dbline 49
;  	 EIMSK = 0x00;
	out 0x39,R2
	.dbline 50
;  	 TIMSK = 0x00; //timer interrupt sources
	out 0x37,R2
	.dbline 51
;  	 ETIMSK = 0x00; //extended timer interrupt sources
	sts 125,R2
	.dbline 53
; 	// PORTC = 0x00;
;      MCUCR|= 0x80;
	in R24,0x35
	ori R24,128
	out 0x35,R24
	.dbline 55
;      //SFIOR = 0X00;
;      XMCRA = 0x00; 
	sts 109,R2
	.dbline 56
;  	 SEI(); //re-enable interrupts
	sei
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e InitMotor _InitMotor fc
;       STRB_HIG -> R20
;       STRB_LOW -> R14
;       DATA_HIG -> R10
;       CLOK_HIG -> R22
;       CLOK_LOW -> y+1
;       DATA_LOW -> y+0
;           Port -> R16
	.even
_InitMotor::
	xcall push_xgsetF0FC
	sbiw R28,2
	.dbline -1
	.dbline 62
;  	 //all peripherals are now initialised
; }
; 
; 
; unsigned char InitMotor(unsigned char Port)       //步进电机初始化
; {
	.dbline 66
; 	unsigned char STRB_LOW,CLOK_LOW,DATA_LOW;
; 	unsigned char STRB_HIG,CLOK_HIG,DATA_HIG;
; 		
; 	if((Port>=0x01)&&(Port<=0x04))
	cpi R16,1
	brsh X6
	xjmp L4
X6:
X0:
	ldi R24,4
	cp R24,R16
	brsh X7
	xjmp L4
X7:
X1:
	.dbline 67
; 	{		
	.dbline 68
; 		switch(Port)
	mov R12,R16
	clr R13
	movw R24,R12
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	breq L9
X2:
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	breq L10
X3:
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	breq L11
X4:
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	breq L12
X5:
	xjmp L6
L9:
	.dbline 71
; 		{
; 		    case 0x01:
; 			    STRB_LOW = 0x00;
	clr R14
	.dbline 72
; 				STRB_HIG = 0x10;
	ldi R20,16
	.dbline 73
; 				CLOK_LOW = 0x00;
	clr R0
	std y+1,R0
	.dbline 74
; 				CLOK_HIG = 0x01;
	ldi R22,1
	.dbline 75
; 				DATA_LOW = 0x00;
	std y+0,R0
	.dbline 76
; 				DATA_HIG = 0x10;
	ldi R24,16
	mov R10,R24
	.dbline 77
; 			    break;
	xjmp L7
L10:
	.dbline 79
; 			case 0x02:
; 			    STRB_LOW = 0x00;
	clr R14
	.dbline 80
; 				STRB_HIG = 0x20;
	ldi R20,32
	.dbline 81
; 				CLOK_LOW = 0x00;
	clr R0
	std y+1,R0
	.dbline 82
; 				CLOK_HIG = 0x02;
	ldi R22,2
	.dbline 83
; 				DATA_LOW = 0x00;
	std y+0,R0
	.dbline 84
; 				DATA_HIG = 0x20;
	ldi R24,32
	mov R10,R24
	.dbline 85
; 			    break;
	xjmp L7
L11:
	.dbline 87
; 			case 0x03:
; 			    STRB_LOW = 0x00;
	clr R14
	.dbline 88
; 				STRB_HIG = 0x40;
	ldi R20,64
	.dbline 89
; 				CLOK_LOW = 0x00;
	clr R0
	std y+1,R0
	.dbline 90
; 				CLOK_HIG = 0x04;
	ldi R22,4
	.dbline 91
; 				DATA_LOW = 0x00;
	std y+0,R0
	.dbline 92
; 				DATA_HIG = 0x40;
	ldi R24,64
	mov R10,R24
	.dbline 93
; 			    break;
	xjmp L7
L12:
	.dbline 95
; 			case 0x04:
; 			    STRB_LOW = 0x00;
	clr R14
	.dbline 96
; 				STRB_HIG = 0x80;
	ldi R20,128
	.dbline 97
; 				CLOK_LOW = 0x00;
	clr R0
	std y+1,R0
	.dbline 98
; 				CLOK_HIG = 0x08;
	ldi R22,8
	.dbline 99
; 				DATA_LOW = 0x00;
	std y+0,R0
	.dbline 100
; 				DATA_HIG = 0x80;
	ldi R24,128
	mov R10,R24
	.dbline 101
; 			    break;
L6:
L7:
	.dbline 104
; 		}
; 	 
; 		PORTB=CLOK_LOW;
	ldd R0,y+1
	out 0x18,R0
	.dbline 105
; 		PORTB=CLOK_LOW;
	out 0x18,R0
	.dbline 106
; 		PORTE=STRB_LOW;
	out 0x3,R14
	.dbline 107
; 		PORTE=STRB_LOW;
	out 0x3,R14
	.dbline 109
; 	 
; 	    PORTB=DATA_HIG;  //D18		0:处于低功耗状态,输出被禁止,1:正常工作状态			
	out 0x18,R10
	.dbline 110
; 		PORTB=DATA_HIG;
	out 0x18,R10
	.dbline 111
; 		PORTB=DATA_HIG|CLOK_LOW;
	mov R2,R10
	or R2,R0
	out 0x18,R2
	.dbline 112
; 		PORTB=DATA_HIG|CLOK_LOW;
	mov R2,R10
	or R2,R0
	out 0x18,R2
	.dbline 113
; 		PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 114
; 		PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 116
; 	 
; 	    PORTB=DATA_LOW; //D17		11:测试状态,00:正常工作
	ldd R0,y+0
	out 0x18,R0
	.dbline 117
; 		PORTB=DATA_LOW;
	out 0x18,R0
	.dbline 118
; 		PORTB=DATA_LOW|CLOK_LOW;
	mov R2,R0
	ldd R0,y+1
	or R2,R0
	out 0x18,R2
	.dbline 119
; 		PORTB=DATA_LOW|CLOK_LOW;
	ldd R2,y+0
	or R2,R0
	out 0x18,R2
	.dbline 120
; 		PORTB=DATA_LOW|CLOK_HIG;
	ldd R2,y+0
	or R2,R22
	out 0x18,R2
	.dbline 121
; 		PORTB=DATA_LOW|CLOK_HIG;
	ldd R2,y+0
	or R2,R22
	out 0x18,R2
	.dbline 123
; 	     
; 	    PORTB=DATA_LOW; //D16
	ldd R0,y+0
	out 0x18,R0
	.dbline 124
; 		PORTB=DATA_LOW;
	out 0x18,R0
	.dbline 125
; 		PORTB=DATA_LOW|CLOK_LOW;
	mov R2,R0
	ldd R0,y+1
	or R2,R0
	out 0x18,R2
	.dbline 126
; 		PORTB=DATA_LOW|CLOK_LOW;
	ldd R2,y+0
	or R2,R0
	out 0x18,R2
	.dbline 127
; 		PORTB=DATA_LOW|CLOK_HIG;
	ldd R2,y+0
	or R2,R22
	out 0x18,R2
	.dbline 128
; 		PORTB=DATA_LOW|CLOK_HIG;
	ldd R2,y+0
	or R2,R22
	out 0x18,R2
	.dbline 130
; 	    
; 	    PORTB=DATA_LOW; //D15		00:主动模式,01:被动模式,10:禁止模式,11:下桥臂模式
	ldd R0,y+0
	out 0x18,R0
	.dbline 131
; 		PORTB=DATA_LOW;
	out 0x18,R0
	.dbline 132
; 		PORTB=DATA_LOW|CLOK_LOW;
	mov R2,R0
	ldd R0,y+1
	or R2,R0
	out 0x18,R2
	.dbline 133
; 		PORTB=DATA_LOW|CLOK_LOW;
	ldd R2,y+0
	or R2,R0
	out 0x18,R2
	.dbline 134
; 		PORTB=DATA_LOW|CLOK_HIG;
	ldd R2,y+0
	or R2,R22
	out 0x18,R2
	.dbline 135
; 		PORTB=DATA_LOW|CLOK_HIG;
	ldd R2,y+0
	or R2,R22
	out 0x18,R2
	.dbline 137
; 	     
; 	    PORTB=DATA_LOW; //D14    
	ldd R0,y+0
	out 0x18,R0
	.dbline 138
; 		PORTB=DATA_LOW;
	out 0x18,R0
	.dbline 139
; 		PORTB=DATA_LOW|CLOK_LOW;
	mov R2,R0
	ldd R0,y+1
	or R2,R0
	out 0x18,R2
	.dbline 140
; 		PORTB=DATA_LOW|CLOK_LOW;
	ldd R2,y+0
	or R2,R0
	out 0x18,R2
	.dbline 141
; 		PORTB=DATA_LOW|CLOK_HIG;
	ldd R2,y+0
	or R2,R22
	out 0x18,R2
	.dbline 142
; 		PORTB=DATA_LOW|CLOK_HIG;
	ldd R2,y+0
	or R2,R22
	out 0x18,R2
	.dbline 144
; 	 
; 	    PORTB=DATA_LOW; //D13		00:内部4MHZ晶振,01:外部时钟,10:外部时钟1/2,11:外部时钟1/4		
	ldd R0,y+0
	out 0x18,R0
	.dbline 145
; 		PORTB=DATA_LOW;	
	out 0x18,R0
	.dbline 146
; 		PORTB=DATA_LOW|CLOK_LOW;
	mov R2,R0
	ldd R0,y+1
	or R2,R0
	out 0x18,R2
	.dbline 147
; 		PORTB=DATA_LOW|CLOK_LOW;
	ldd R2,y+0
	or R2,R0
	out 0x18,R2
	.dbline 148
; 		PORTB=DATA_LOW|CLOK_HIG;
	ldd R2,y+0
	or R2,R22
	out 0x18,R2
	.dbline 149
; 		PORTB=DATA_LOW|CLOK_HIG;
	ldd R2,y+0
	or R2,R22
	out 0x18,R2
	.dbline 151
; 	 
; 	    PORTB=DATA_LOW; //D12
	ldd R0,y+0
	out 0x18,R0
	.dbline 152
; 		PORTB=DATA_LOW;
	out 0x18,R0
	.dbline 153
; 		PORTB=DATA_LOW|CLOK_LOW;
	mov R2,R0
	ldd R0,y+1
	or R2,R0
	out 0x18,R2
	.dbline 154
; 		PORTB=DATA_LOW|CLOK_LOW;
	ldd R2,y+0
	or R2,R0
	out 0x18,R2
	.dbline 155
; 		PORTB=DATA_LOW|CLOK_HIG;
	ldd R2,y+0
	or R2,R22
	out 0x18,R2
	.dbline 156
; 		PORTB=DATA_LOW|CLOK_HIG;
	ldd R2,y+0
	or R2,R22
	out 0x18,R2
	.dbline 158
; 	     
; 	    PORTB=DATA_LOW; //D11		D11、D10、D9、D8
	ldd R0,y+0
	out 0x18,R0
	.dbline 159
; 		PORTB=DATA_LOW;
	out 0x18,R0
	.dbline 160
; 		PORTB=DATA_LOW|CLOK_LOW;
	mov R2,R0
	ldd R0,y+1
	or R2,R0
	out 0x18,R2
	.dbline 161
; 		PORTB=DATA_LOW|CLOK_LOW;
	ldd R2,y+0
	or R2,R0
	out 0x18,R2
	.dbline 162
; 		PORTB=DATA_LOW|CLOK_HIG;
	ldd R2,y+0
	or R2,R22
	out 0x18,R2
	.dbline 163
; 		PORTB=DATA_LOW|CLOK_HIG;
	ldd R2,y+0
	or R2,R22
	out 0x18,R2
	.dbline 166
; 	  
; 		
; 	    PORTB=DATA_HIG; //D10
	out 0x18,R10
	.dbline 167
; 		PORTB=DATA_HIG;
	out 0x18,R10
	.dbline 168
; 		PORTB=DATA_HIG|CLOK_LOW;
	mov R2,R10
	or R2,R0
	out 0x18,R2
	.dbline 169
; 		PORTB=DATA_HIG|CLOK_LOW;
	mov R2,R10
	or R2,R0
	out 0x18,R2
	.dbline 170
; 		PORTB=DATA_HIG|CLOK_HIG;
	mov R2,R10
	or R2,R22
	out 0x18,R2
	.dbline 171
; 		PORTB=DATA_HIG|CLOK_HIG;

⌨️ 快捷键说明

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