📄 调试程序1.s
字号:
; 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 + -