📄 xunxiandongzuo8.s
字号:
_delay_us::
.dbline -1
.dbline 26
.dbline 27
nop
.dbline -2
.dbline 28
L105:
.dbline 0 ; func end
ret
.dbend
.dbfunc e delay_10us _delay_10us fV
; i -> R22,R23
; i -> <dead>
; M -> R20,R21
.even
_delay_10us::
rcall push_gset2
movw R20,R16
.dbline -1
.dbline 38
rjmp L108
L107:
.dbline 41
.dbline 42
ldi R22,4
ldi R23,0
rjmp L111
L110:
.dbline 44
.dbline 45
rcall _delay_us
.dbline 46
nop
.dbline 47
L111:
.dbline 43
movw R2,R22
subi R22,1
sbci R23,0
tst R2
brne L110
tst R3
brne L110
X13:
.dbline 48
nop
.dbline 49
nop
.dbline 50
nop
.dbline 51
L108:
.dbline 40
movw R2,R20
subi R20,1
sbci R21,0
tst R2
brne L107
tst R3
brne L107
X14:
.dbline -2
.dbline 52
L106:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 22 i
.dbsym l i 1 i
.dbsym r M 20 i
.dbend
.dbfunc e delay_100us _delay_100us fV
; i -> R22,R23
; i -> <dead>
; M -> R20,R21
.even
_delay_100us::
rcall push_gset2
movw R20,R16
.dbline -1
.dbline 63
rjmp L115
L114:
.dbline 66
.dbline 67
ldi R22,52
ldi R23,0
rjmp L118
L117:
.dbline 69
.dbline 70
rcall _delay_us
.dbline 71
nop
.dbline 72
L118:
.dbline 68
movw R2,R22
subi R22,1
sbci R23,0
tst R2
brne L117
tst R3
brne L117
X15:
.dbline 73
nop
.dbline 74
nop
.dbline 75
nop
.dbline 76
L115:
.dbline 65
movw R2,R20
subi R20,1
sbci R21,0
tst R2
brne L114
tst R3
brne L114
X16:
.dbline -2
.dbline 77
L113:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 22 i
.dbsym l i 1 i
.dbsym r M 20 i
.dbend
.dbfunc e delay_ms _delay_ms fV
; i -> R22,R23
; i -> <dead>
; M -> R20,R21
.even
_delay_ms::
rcall push_gset2
movw R20,R16
.dbline -1
.dbline 87
rjmp L122
L121:
.dbline 89
.dbline 89
ldi R22,531
ldi R23,2
rjmp L125
L124:
.dbline 91
.dbline 92
rcall _delay_us
.dbline 93
nop
.dbline 94
L125:
.dbline 90
movw R2,R22
subi R22,1
sbci R23,0
tst R2
brne L124
tst R3
brne L124
X17:
.dbline 95
nop
.dbline 96
nop
.dbline 97
nop
.dbline 98
nop
.dbline 99
nop
.dbline 100
nop
.dbline 101
nop
.dbline 102
nop
.dbline 103
nop
.dbline 104
nop
.dbline 105
nop
.dbline 106
nop
.dbline 107
nop
.dbline 108
nop
.dbline 110
L122:
.dbline 88
movw R2,R20
subi R20,1
sbci R21,0
tst R2
brne L121
tst R3
brne L121
X18:
.dbline -2
.dbline 111
L120:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 22 i
.dbsym l i 1 i
.dbsym r M 20 i
.dbend
.dbfunc e delay_10ms _delay_10ms fV
; M -> R20,R21
.even
_delay_10ms::
rcall push_gset1
movw R20,R16
.dbline -1
.dbline 117
rjmp L129
L128:
.dbline 119
.dbline 120
ldi R16,10
ldi R17,0
rcall _delay_ms
.dbline 121
subi R20,1
sbci R21,0
.dbline 122
L129:
.dbline 118
cpi R20,0
cpc R20,R21
brne L128
X19:
.dbline -2
.dbline 123
L127:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r M 20 i
.dbend
.dbfunc e delay_100ms _delay_100ms fV
; M -> R20,R21
.even
_delay_100ms::
rcall push_gset1
movw R20,R16
.dbline -1
.dbline 129
rjmp L133
L132:
.dbline 131
.dbline 132
ldi R16,100
ldi R17,0
rcall _delay_ms
.dbline 133
subi R20,1
sbci R21,0
.dbline 134
L133:
.dbline 130
cpi R20,0
cpc R20,R21
brne L132
X20:
.dbline -2
.dbline 135
L131:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r M 20 i
.dbend
.dbfunc e delay_s _delay_s fV
; M -> R20,R21
.even
_delay_s::
rcall push_gset1
movw R20,R16
.dbline -1
.dbline 141
rjmp L137
L136:
.dbline 143
.dbline 144
ldi R16,1000
ldi R17,3
rcall _delay_ms
.dbline 145
subi R20,1
sbci R21,0
.dbline 146
L137:
.dbline 142
cpi R20,0
cpc R20,R21
brne L136
X21:
.dbline -2
.dbline 147
L135:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r M 20 i
.dbend
.dbfile E:\李斐机器人\xunxianjiadongzuo\8\xunxiandongzuo8.c
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 16
.dbline 17
clr R2
out 0x18,R2
.dbline 18
out 0x17,R2
.dbline 19
out 0x15,R2
.dbline 20
out 0x14,R2
.dbline 21
out 0x12,R2
.dbline 22
out 0x11,R2
.dbline 24
sbi 0x18,1
.dbline 25
sbi 0x17,1
.dbline 27
cbi 0x15,1
.dbline 28
sbi 0x14,1
.dbline 30
sbi 0x15,3
.dbline 31
in R24,0x14
ori R24,56
out 0x14,R24
.dbline 33
in R24,0x12
ori R24,12
out 0x12,R24
.dbline 34
in R24,0x11
andi R24,243
out 0x11,R24
.dbline 36
cbi 0x12,7
.dbline 37
sbi 0x11,7
.dbline 39
cbi 0x12,6
.dbline 40
sbi 0x11,6
.dbline 42
sbi 0x12,4
.dbline 43
cbi 0x11,4
.dbline -2
.dbline 44
L139:
.dbline 0 ; func end
ret
.dbend
.dbfunc e timer0_init _timer0_init fV
.even
_timer0_init::
.dbline -1
.dbline 48
.dbline 49
clr R2
out 0x33,R2
.dbline 50
out 0x32,R2
.dbline 51
ldi R24,6
out 0x33,R24
.dbline -2
.dbline 52
L140:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 18
rjmp _timer0_ovf_isr
.area text(rom, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8\xunxiandongzuo8.c
.dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
_timer0_ovf_isr::
st -y,R24
st -y,R25
in R24,0x3f
st -y,R24
.dbline -1
.dbline 56
.dbline 57
lds R24,_num_H
subi R24,255 ; addi 1
sts _num_H,R24
.dbline -2
.dbline 58
L141:
ld R24,y+
out 0x3f,R24
ld R25,y+
ld R24,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e timer1_init _timer1_init fV
.even
_timer1_init::
.dbline -1
.dbline 65
.dbline 66
clr R2
out 0x2e,R2
.dbline 67
ldi R24,252
out 0x2d,R24
.dbline 68
ldi R24,1
out 0x2c,R24
.dbline 69
out 0x2b,R2
.dbline 70
out 0x2a,R2
.dbline 71
out 0x29,R2
.dbline 72
out 0x28,R2
.dbline 73
ldi R24,3
out 0x27,R24
.dbline 74
ldi R24,255
out 0x26,R24
.dbline 75
ldi R24,195
out 0x2f,R24
.dbline 76
ldi R24,9
out 0x2e,R24
.dbline -2
.dbline 77
L142:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 2
rjmp _int0_isr
.area text(rom, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8\xunxiandongzuo8.c
.dbfunc e int0_isr _int0_isr fV
; temp_char -> R18
; temp_int -> R16,R17
.even
_int0_isr::
st -y,R2
st -y,R3
st -y,R16
st -y,R17
st -y,R18
in R2,0x3f
st -y,R2
.dbline -1
.dbline 84
.dbline 86
clr R16
clr R17
.dbline 87
clr R18
.dbline 89
.dbline 90
in R18,0x32
clr R2
out 0x32,R2
.dbline 92
.dbline 93
.dbline 95
.dbline 96
.dbline 98
lds R16,_num_H
clr R17
sts _num_H,R2
mov R17,R16
clr R16
mov R2,R18
clr R3
add R16,R2
adc R17,R3
lds R2,_Num_Speed
lds R3,_Num_Speed+1
add R2,R16
adc R3,R17
sts _Num_Speed+1,R3
sts _Num_Speed,R2
.dbline -2
.dbline 99
L143:
ld R2,y+
out 0x3f,R2
ld R18,y+
ld R17,y+
ld R16,y+
ld R3,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbsym r temp_char 18 c
.dbsym r temp_int 16 i
.dbend
.area vector(rom, abs)
.org 4
rjmp _int1_isr
.area text(rom, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8\xunxiandongzuo8.c
.dbfunc e int1_isr _int1_isr fV
; temp_char -> R18
; temp_int -> R16,R17
.even
_int1_isr::
st -y,R2
st -y,R3
st -y,R16
st -y,R17
st -y,R18
in R2,0x3f
st -y,R2
.dbline -1
.dbline 104
.dbline 106
clr R16
clr R17
.dbline 107
clr R18
.dbline 109
.dbline 110
in R18,0x32
clr R2
out 0x32,R2
.dbline 112
.dbline 113
.dbline 115
.dbline 116
.dbline 118
lds R16,_num_H
clr R17
sts _num_H,R2
mov R17,R16
clr R16
mov R2,R18
clr R3
add R16,R2
adc R17,R3
lds R2,_Num_Speed
lds R3,_Num_Speed+1
sub R2,R16
sbc R3,R17
sts _Num_Speed+1,R3
sts _Num_Speed,R2
.dbline -2
.dbline 119
L144:
ld R2,y+
out 0x3f,R2
ld R18,y+
ld R17,y+
ld R16,y+
ld R3,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbsym r temp_char 18 c
.dbsym r temp_int 16 i
.dbend
.dbfunc e timer2_init _timer2_init fV
.even
_timer2_init::
.dbline -1
.dbline 127
.dbline 128
clr R2
out 0x25,R2
.dbline 129
ldi R24,100
out 0x24,R24
.dbline 131
ldi R24,7
out 0x25,R24
.dbline -2
.dbline 132
L145:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 8
rjmp _timer2_ovf_isr
.area text(rom, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8\xunxiandongzuo8.c
.dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
; temp_sint -> R20,R21
; temp_char -> R10
; temp_int -> R22,R23
.even
_timer2_ovf_isr::
rcall push_lset
rcall push_gset3
.dbline -1
.dbline 139
.dbline 140
clr R22
clr R23
.dbline 141
clr R10
.dbline 142
clr R20
clr R21
.dbline 144
ldi R24,100
out 0x24,R24
.dbline 146
sei
.dbline 148
.dbline 149
in R10,0x32
clr R2
out 0x32,R2
.dbline 151
.dbline 152
.dbline 154
.dbline 155
.dbline 157
lds R22,_num_H
clr R23
sts _num_H,R2
mov R23,R22
clr R22
mov R2,R10
clr R3
add R22,R2
adc R23,R3
sbis 0x10,2
rjmp L147
.dbline 158
lds R2,_Num_Speed
lds R3,_Num_Speed+1
add R2,R22
adc R3,R23
sts _Num_Speed+1,R3
sts _Num_Speed,R2
rjmp L148
L147:
.dbline 160
lds R2,_Num_Speed
lds R3,_Num_Speed+1
sub R2,R22
sbc R3,R23
sts _Num_Speed+1,R3
sts _Num_Speed,R2
L148:
.dbline 162
lds R2,_Num_Speed
lds R3,_Num_Speed+1
sts _L_sPID+2+1,R3
sts _L_sPID+2,R2
.dbline 165
lds R22,_PID_choice
clr R23
cpi R22,128
ldi R30,0
cpc R23,R30
breq L153
cpi R22,128
ldi R30,0
cpc R23,R30
brlt L150
L155:
cpi R22,144
ldi R30,0
cpc R23,R30
breq L154
rjmp L150
X22:
.dbline 166
L153:
.dbline 168
.dbline 169
ldi R16,<_L_sPID
ldi R17,>_L_sPID
rcall _v_PIDCalc
movw R20,R16
.dbline 170
rjmp L151
L154:
.dbline 173
.dbline 174
ldi R16,<_L_sPID
ldi R17,>_L_sPID
rcall _s_PIDCalc
movw R20,R16
.dbline 175
L150:
L151:
.dbline 179
.dbline 181
clr R2
clr R3
sts _Num_Speed+1,R3
sts _Num_Speed,R2
movw R16,R20
rcall _send_PWM
.dbline -2
.dbline 183
L146:
rcall pop_gset3
rcall pop_lset
.dbline 0 ; func end
reti
.dbsym r temp_sint 20 I
.dbsym r temp_char 10 c
.dbsym r temp_int 22 i
.dbend
.dbfunc e send_PWM _send_PWM fV
; num_pwm -> R16,R17
.even
_send_PWM::
.dbline -1
.dbline 187
.dbline 188
cpi R16,0
ldi R30,0
cpc R17,R30
brlt L157
.dbline 189
ldi R24,1
sts _now_dir,R24
rjmp L158
L157:
.dbline 191
clr R2
sts _now_dir,R2
L158:
.dbline 193
lds R24,_now_dir
cpi R24,1
brne L159
.dbline 194
.dbline 196
mov R2,R24
lds R3,_pre_dir
cp R3,R24
breq L161
.dbline 197
.dbline 198
sbi 0x15,3
.dbline 199
sts _pre_dir,R2
.dbline 200
L161:
.dbline 202
out 0x2b,R17
out 0x2a,R16
.dbline 204
ldi R24,3
out 0x2d,R24
.dbline 205
ldi R24,240
out 0x2c,R24
.dbline 206
rjmp L160
L159:
.dbline 208
.dbline 210
lds R2,_now_dir
lds R3,_pre_dir
cp R3,R2
breq L163
.dbline 211
.dbline 212
cbi 0x15,3
.dbline 213
sts _pre_dir,R2
.dbline 214
L163:
.dbline 216
clr R2
clr R3
sub R2,R16
sbc R3,R17
out 0x2b,R3
out 0x2a,R2
.dbline 218
ldi R24,3
out 0x2d,R24
.dbline 219
ldi R24,240
out 0x2c,R24
.dbline 220
L160:
.dbline -2
.dbline 221
L156:
.dbline 0 ; func end
ret
.dbsym r num_pwm 16 I
.dbend
.dbfunc e free_stop _free_stop fV
.even
_free_stop::
.dbline -1
.dbline 224
.dbline 225
.dbline 226
.dbline 228
ldi R24,129
sts _now_dir,R24
sts _pre_dir,R24
sbi 0x15,3
.dbline 229
clr R2
clr R3
out 0x2b,R3
out 0x2a,R2
.dbline 231
ldi R24,3
out 0x2d,R24
.dbline 232
ldi R24,240
out 0x2c,R24
.dbline 234
ldi R24,255
sts _PID_choice,R24
.dbline -2
.dbline 235
L165:
.dbline 0 ; func end
ret
.dbend
.dbfunc e init_devices _init_devices fV
.even
_init_devices::
.dbline -1
.dbline 239
; void init_devices(void)
; {
.dbline 241
; //stop errant interrupts until set up
; CLI(); //disable all interrupts
cli
.dbline 242
; port_init();
rcall _port_init
.dbline 243
; timer0_init();
rcall _timer0_init
.dbline 244
; timer1_init();
rcall _timer1_init
.dbline 245
; timer2_init();
rcall _timer2_init
.dbline 247
; //init_7279();
; spi_init();
rcall _spi_init
.dbline 248
; L_PIDInit();
rcall _L_PIDInit
.dbline 250
;
; MCUCR = 0x0E; //INT0 下降沿触发,INT1上升沿触发,INT0 为高电平时表电机正转
ldi R24,14
out 0x35,R24
.dbline 251
; GICR = 0xC0;
ldi R24,192
out 0x3b,R24
.dbline 252
; TIMSK = 0x41; //timer interrupt sources
ldi R24,65
out 0x39,R24
.dbline 253
; SEI(); //re-enable interrupts
sei
.dbline -2
.dbline 255
; //all peripherals are now initialized
; }
L166:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; i -> <dead>
; temp_long -> y+0
.even
_main::
sbiw R28,4
.dbline -1
.dbline 258
;
; void main()
; {
.dbline 260
; unsigned char i ;
; unsigned long temp_long = 0;
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
movw R30,R28
std z+0,R20
std z+1,R21
std z+2,R22
std z+3,R23
.dbline 261
; init_devices();
rcall _init_devices
L168:
.dbline 268
.dbline 270
L169:
.dbline 267
rjmp L168
X23:
.dbline -2
.dbline 271
; //TCCR2 = 0x07;
; //PID_choice = SPEED_SET;//选择PID方式
; //L_sPID.vi_Ref= 300; //给定参考速度
; //delay_s(2);
; //L_sPID.vi_Ref= -300;
; while (1)
; {
;
; }
; }
L167:
adiw R28,4
.dbline 0 ; func end
ret
.dbsym l i 1 c
.dbsym l temp_long 0 l
.dbend
.area bss(ram, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8\xunxiandongzuo8.c
_L_sPID::
.blkb 44
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/L_PID.c
.dbsym e L_sPID _L_sPID X
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -