📄 调试程序.s
字号:
; //void MainSend(void)
;
; void port_init(void) //端口初始化
; {
.dbline 21
; PORTA = 0xFF;
ldi R24,255
out 0x1b,R24
.dbline 22
; DDRA = 0xFF;
out 0x1a,R24
.dbline 23
; PORTB = 0xFF;
out 0x18,R24
.dbline 24
; DDRB = 0xFF;
out 0x17,R24
.dbline 25
; PORTC = 0xFF;
out 0x15,R24
.dbline 26
; 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
.dbline 35
; }
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 52
; SEI(); //re-enable interrupts
sei
.dbline -2
.dbline 54
; //all peripherals are now initialised
; }
L2:
.dbline 0 ; func end
ret
.dbend
.dbfunc e InitMotor _InitMotor fc
; STRB_HIG -> R20
; STRB_LOW -> R4
; DATA_HIG -> R10
; CLOK_HIG -> R22
; CLOK_LOW -> R12
; DATA_LOW -> R14
; Port -> R16
.even
_InitMotor::
xcall push_gset5
.dbline -1
.dbline 58
;
;
; unsigned char InitMotor(unsigned char Port) //步进电机初始化
; {
.dbline 62
; 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 X1
xjmp L4
X1:
ldi R24,4
cp R24,R16
brsh X2
xjmp L4
X2:
.dbline 63
; {
.dbline 64
; switch(Port)
mov R20,R16
clr R21
cpi R20,1
ldi R30,0
cpc R21,R30
breq L9
cpi R20,2
ldi R30,0
cpc R21,R30
breq L10
cpi R20,3
ldi R30,0
cpc R21,R30
breq L11
cpi R20,4
ldi R30,0
cpc R21,R30
breq L12
xjmp L6
X0:
.dbline 65
; {
L9:
.dbline 67
; case 0x01:
; STRB_LOW = 0x00;
clr R4
.dbline 68
; STRB_HIG = 0x10;
ldi R20,16
.dbline 69
; CLOK_LOW = 0x00;
clr R12
.dbline 70
; CLOK_HIG = 0x01;
ldi R22,1
.dbline 71
; DATA_LOW = 0x00;
clr R14
.dbline 72
; DATA_HIG = 0x10;
ldi R24,16
mov R10,R24
.dbline 73
; break;
xjmp L7
L10:
.dbline 75
; case 0x02:
; STRB_LOW = 0x00;
clr R4
.dbline 76
; STRB_HIG = 0x20;
ldi R20,32
.dbline 77
; CLOK_LOW = 0x00;
clr R12
.dbline 78
; CLOK_HIG = 0x02;
ldi R22,2
.dbline 79
; DATA_LOW = 0x00;
clr R14
.dbline 80
; DATA_HIG = 0x20;
ldi R24,32
mov R10,R24
.dbline 81
; break;
xjmp L7
L11:
.dbline 83
; case 0x03:
; STRB_LOW = 0x00;
clr R4
.dbline 84
; STRB_HIG = 0x40;
ldi R20,64
.dbline 85
; CLOK_LOW = 0x00;
clr R12
.dbline 86
; CLOK_HIG = 0x04;
ldi R22,4
.dbline 87
; DATA_LOW = 0x00;
clr R14
.dbline 88
; DATA_HIG = 0x40;
ldi R24,64
mov R10,R24
.dbline 89
; break;
xjmp L7
L12:
.dbline 91
; case 0x04:
; STRB_LOW = 0x00;
clr R4
.dbline 92
; STRB_HIG = 0x80;
ldi R20,128
.dbline 93
; CLOK_LOW = 0x00;
clr R12
.dbline 94
; CLOK_HIG = 0x08;
ldi R22,8
.dbline 95
; DATA_LOW = 0x00;
clr R14
.dbline 96
; DATA_HIG = 0x80;
ldi R24,128
mov R10,R24
.dbline 97
; break;
L6:
L7:
.dbline 100
; }
;
; PORTB=CLOK_LOW;
out 0x18,R12
.dbline 101
; PORTB=CLOK_LOW;
out 0x18,R12
.dbline 102
; PORTE=STRB_LOW;
out 0x3,R4
.dbline 103
; PORTE=STRB_LOW;
out 0x3,R4
.dbline 105
;
; PORTB=DATA_HIG; //D18 0:处于低功耗状态,输出被禁止,1:正常工作状态
out 0x18,R10
.dbline 106
; PORTB=DATA_HIG;
out 0x18,R10
.dbline 107
; PORTB=DATA_HIG|CLOK_LOW;
mov R2,R10
or R2,R12
out 0x18,R2
.dbline 108
; PORTB=DATA_HIG|CLOK_LOW;
mov R2,R10
or R2,R12
out 0x18,R2
.dbline 109
; PORTB=DATA_HIG|CLOK_HIG;
mov R2,R10
or R2,R22
out 0x18,R2
.dbline 110
; PORTB=DATA_HIG|CLOK_HIG;
mov R2,R10
or R2,R22
out 0x18,R2
.dbline 112
;
; PORTB=DATA_LOW; //D17 11:测试状态,00:正常工作
out 0x18,R14
.dbline 113
; PORTB=DATA_LOW;
out 0x18,R14
.dbline 114
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 115
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 116
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 117
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 119
;
; PORTB=DATA_LOW; //D16
out 0x18,R14
.dbline 120
; PORTB=DATA_LOW;
out 0x18,R14
.dbline 121
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 122
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 123
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 124
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 126
;
; PORTB=DATA_LOW; //D15 00:主动模式,01:被动模式,10:禁止模式,11:下桥臂模式
out 0x18,R14
.dbline 127
; PORTB=DATA_LOW;
out 0x18,R14
.dbline 128
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 129
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 130
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 131
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 133
;
; PORTB=DATA_LOW; //D14
out 0x18,R14
.dbline 134
; PORTB=DATA_LOW;
out 0x18,R14
.dbline 135
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 136
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 137
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 138
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 140
;
; PORTB=DATA_LOW; //D13 00:内部4MHZ晶振,01:外部时钟,10:外部时钟1/2,11:外部时钟1/4
out 0x18,R14
.dbline 141
; PORTB=DATA_LOW;
out 0x18,R14
.dbline 142
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 143
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 144
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 145
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 147
;
; PORTB=DATA_LOW; //D12
out 0x18,R14
.dbline 148
; PORTB=DATA_LOW;
out 0x18,R14
.dbline 149
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 150
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 151
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 152
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 154
;
; PORTB=DATA_LOW; //D11 D11、D10、D9、D8
out 0x18,R14
.dbline 155
; PORTB=DATA_LOW;
out 0x18,R14
.dbline 156
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 157
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 158
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 159
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 162
;
;
; PORTB=DATA_HIG; //D10
out 0x18,R10
.dbline 163
; PORTB=DATA_HIG;
out 0x18,R10
.dbline 164
; PORTB=DATA_HIG|CLOK_LOW;
mov R2,R10
or R2,R12
out 0x18,R2
.dbline 165
; PORTB=DATA_HIG|CLOK_LOW;
mov R2,R10
or R2,R12
out 0x18,R2
.dbline 166
; PORTB=DATA_HIG|CLOK_HIG;
mov R2,R10
or R2,R22
out 0x18,R2
.dbline 167
; PORTB=DATA_HIG|CLOK_HIG;
mov R2,R10
or R2,R22
out 0x18,R2
.dbline 169
;
; PORTB=DATA_LOW; //D9
out 0x18,R14
.dbline 170
; PORTB=DATA_LOW;
out 0x18,R14
.dbline 171
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 172
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 173
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 174
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 176
;
; PORTB=DATA_LOW; //D8
out 0x18,R14
.dbline 177
; PORTB=DATA_LOW;
out 0x18,R14
.dbline 178
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 179
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 180
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 181
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 183
;
; PORTB=DATA_LOW; //D7 D7、D6、D5、D4
out 0x18,R14
.dbline 184
; PORTB=DATA_LOW;
out 0x18,R14
.dbline 185
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 186
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 187
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 188
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 190
;
; PORTB=DATA_LOW; //D6
out 0x18,R14
.dbline 191
; PORTB=DATA_LOW;
out 0x18,R14
.dbline 192
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 193
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 194
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 195
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 197
;
; PORTB=DATA_HIG; //D5
out 0x18,R10
.dbline 198
; PORTB=DATA_HIG;
out 0x18,R10
.dbline 199
; PORTB=DATA_HIG|CLOK_LOW;
mov R2,R10
or R2,R12
out 0x18,R2
.dbline 200
; PORTB=DATA_HIG|CLOK_LOW;
mov R2,R10
or R2,R12
out 0x18,R2
.dbline 201
; PORTB=DATA_HIG|CLOK_HIG;
mov R2,R10
or R2,R22
out 0x18,R2
.dbline 202
; PORTB=DATA_HIG|CLOK_HIG;
mov R2,R10
or R2,R22
out 0x18,R2
.dbline 204
;
; PORTB=DATA_LOW; //D4
out 0x18,R14
.dbline 205
; PORTB=DATA_LOW;
out 0x18,R14
.dbline 206
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 207
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 208
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 209
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 211
;
; PORTB=DATA_LOW; //D3
out 0x18,R14
.dbline 212
; PORTB=DATA_LOW;
out 0x18,R14
.dbline 213
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 214
; PORTB=DATA_LOW|CLOK_LOW;
mov R2,R14
or R2,R12
out 0x18,R2
.dbline 215
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 216
; PORTB=DATA_LOW|CLOK_HIG;
mov R2,R14
or R2,R22
out 0x18,R2
.dbline 218
;
; PORTB=DATA_HIG; //D2 00:死区时间为4/fosc,01:死区时间为6/fosc ,10:死区时间为8/fosc,11:死区时间为12/fosc
out 0x18,R10
.dbline 219
; PORTB=DATA_HIG;
out 0x18,R10
.dbline 220
; PORTB=DATA_HIG|CLOK_LOW;
mov R2,R10
or R2,R12
out 0x18,R2
.dbline 221
; PORTB=DATA_HIG|CLOK_LOW;
mov R2,R10
or R2,R12
out 0x18,R2
.dbline 222
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -