📄 xunxiandongzuo8.s
字号:
adc R7,R17
adc R8,R18
adc R9,R19
movw R30,R10
std z+40,R6
std z+41,R7
std z+42,R8
std z+43,R9
.dbline 158
; if(Dir) //计数累加
; Num_Speed += temp_int;
ldi R20,0
ldi R21,64
ldi R22,6
ldi R23,0
movw R30,R10
ldd R2,z+40
ldd R3,z+41
ldd R4,z+42
ldd R5,z+43
cp R2,R20
cpc R3,R21
cpc R4,R22
cpc R5,R23
brlt L37
.dbline 159
; else
ldi R20,0
ldi R21,64
ldi R22,6
ldi R23,0
movw R30,R10
std z+40,R20
std z+41,R21
std z+42,R22
std z+43,R23
rjmp L38
L37:
.dbline 160
; Num_Speed -= temp_int;
ldi R20,0
ldi R21,192
ldi R22,249
ldi R23,255
movw R30,R10
ldd R2,z+40
ldd R3,z+41
ldd R4,z+42
ldd R5,z+43
cp R20,R2
cpc R21,R3
cpc R22,R4
cpc R23,R5
brlt L39
.dbline 161
;
ldi R20,0
ldi R21,192
ldi R22,249
ldi R23,255
movw R30,R10
std z+40,R20
std z+41,R21
std z+42,R22
std z+43,R23
L39:
L38:
.dbline 162
; L_sPID.vi_FeedBack = Num_Speed; //储存当前速速值
L28:
.dbline 164
;
; /**************************************/
ldi R24,10
ldi R25,0
movw R30,R10
ldd R2,z+40
ldd R3,z+41
ldd R4,z+42
ldd R5,z+43
st -y,R24
movw R16,R2
movw R18,R4
rcall asr32
.dbline -2
L25:
adiw R28,12
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym l temp_comp 8 L
.dbsym l d_error 4 L
.dbsym l error 0 L
.dbsym r pp 10 pX
.dbend
.area data(ram, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/L_PID.c
_rev_buf::
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/L_PID.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/L_PID.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/L_PID.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/L_PID.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/L_PID.c
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Slave_SPI.c
.dbsym e rev_buf _rev_buf A[10:10]c
_send_buf::
.blkb 2
.area idata
.byte 1,2
.area data(ram, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Slave_SPI.c
.blkb 2
.area idata
.byte 3,4
.area data(ram, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Slave_SPI.c
.blkb 2
.area idata
.byte 5,6
.area data(ram, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Slave_SPI.c
.blkb 2
.area idata
.byte 7,9
.area data(ram, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Slave_SPI.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Slave_SPI.c
.dbsym e send_buf _send_buf A[10:10]c
.area text(rom, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Slave_SPI.c
.dbfunc e spi_init _spi_init fV
.even
_spi_init::
.dbline -1
.dbline 8
.dbline 9
in R24,0x18
ori R24,60
out 0x18,R24
.dbline 10
in R24,0x17
andi R24,195
out 0x17,R24
.dbline 11
sbi 0x17,4
.dbline 14
ldi R24,195
out 0xd,R24
.dbline 15
clr R2
out 0xe,R2
.dbline -2
.dbline 16
L41:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 20
rjmp _spi_stc_isr
.area text(rom, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Slave_SPI.c
.area data(ram, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Slave_SPI.c
L43:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Slave_SPI.c
L44:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Slave_SPI.c
L45:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Slave_SPI.c
L46:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Slave_SPI.c
.area text(rom, con, rel)
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/Slave_SPI.c
.dbfunc e spi_stc_isr _spi_stc_isr fV
.dbsym s data_long L46 c
.dbsym s com_flag L45 c
.dbsym s start_trans_flag L44 c
.dbsym s i L43 c
; temp_int -> R10,R11
; temp_long -> y+0
; temp_char -> R12
.even
_spi_stc_isr::
rcall push_lset
rcall push_gset4
sbiw R28,4
.dbline -1
.dbline 40
.dbline 46
clr R12
.dbline 47
clr R10
clr R11
.dbline 48
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 50
.dbline 52
in R12,0xf
lds R2,L44
tst R2
brne L47
.dbline 53
.dbline 54
mov R24,R12
andi R24,224
cpi R24,64
breq X1
rjmp L48
X1:
.dbline 55
.dbline 56
.dbline 57
.dbline 58
.dbline 60
mov R24,R12
andi R24,15
sts L46,R24
mov R24,R12
andi R24,16
sts L45,R24
ldi R24,1
sts L44,R24
lds R2,L45
tst R2
brne X2
rjmp L48
X2:
.dbline 61
.dbline 62
lds R2,_send_buf
out 0xf,R2
.dbline 63
lds R24,L43
subi R24,255 ; addi 1
sts L43,R24
.dbline 64
.dbline 65
.dbline 66
rjmp L48
L47:
.dbline 68
.dbline 69
lds R2,L45
tst R2
breq X3
rjmp L53
X3:
.dbline 70
.dbline 71
ldi R24,<_rev_buf
ldi R25,>_rev_buf
lds R30,L43
clr R31
add R30,R24
adc R31,R25
std z+0,R12
.dbline 73
.dbline 75
lds R24,L43
subi R24,255 ; addi 1
sts L43,R24
lds R2,L46
cp R24,R2
brsh X4
rjmp L54
X4:
.dbline 76
.dbline 77
.dbline 78
.dbline 79
.dbline 80
.dbline 82
clr R2
sts L43,R2
sts L44,R2
sts L46,R2
sts L45,R2
lds R12,_rev_buf
clr R13
movw R24,R12
cpi R24,144
ldi R30,0
cpc R25,R30
brne X5
rjmp L70
X5:
ldi R24,144
cp R24,R12
cpc R25,R13
brlt L77
L76:
movw R24,R12
cpi R24,128
ldi R30,0
cpc R25,R30
brne X6
rjmp L67
X6:
cpi R24,129
ldi R30,0
cpc R25,R30
brne X7
rjmp L66
X7:
cpi R24,135
ldi R30,0
cpc R25,R30
brne X8
rjmp L64
X8:
cpi R24,136
ldi R30,0
cpc R25,R30
breq L60
cpi R24,137
ldi R30,0
cpc R25,R30
breq L61
cpi R24,138
ldi R30,0
cpc R25,R30
breq L62
cpi R24,139
ldi R30,0
cpc R25,R30
breq L63
rjmp L54
L77:
movw R24,R12
cpi R24,164
ldi R30,0
cpc R25,R30
brne X9
rjmp L65
X9:
rjmp L54
X0:
.dbline 83
L60:
.dbline 85
.dbline 86
ldi R16,103
ldi R17,0
rcall _risemotor
.dbline 87
ldi R16,2300
ldi R17,8
rcall _delay_ms
.dbline 88
ldi R16,115
ldi R17,0
rcall _risemotor
.dbline 96
.dbline 96
rjmp L54
L61:
.dbline 98
.dbline 99
ldi R16,98
ldi R17,0
rcall _risemotor
.dbline 100
ldi R16,1200
ldi R17,4
rcall _delay_ms
.dbline 101
ldi R16,115
ldi R17,0
rcall _risemotor
.dbline 103
.dbline 103
rjmp L54
L62:
.dbline 105
.dbline 106
ldi R16,103
ldi R17,0
rcall _pushmotor2
.dbline 107
ldi R16,2000
ldi R17,7
rcall _delay_ms
.dbline 108
ldi R16,115
ldi R17,0
rcall _pushmotor2
.dbline 109
.dbline 109
rjmp L54
L63:
.dbline 111
.dbline 112
ldi R16,98
ldi R17,0
rcall _pushmotor2
.dbline 113
ldi R16,2000
ldi R17,7
rcall _delay_ms
.dbline 114
ldi R16,115
ldi R17,0
rcall _pushmotor2
.dbline 115
.dbline 115
rjmp L54
L64:
.dbline 117
.dbline 118
ldi R16,103
ldi R17,0
rcall _pushmotor1
.dbline 119
ldi R16,1500
ldi R17,5
rcall _delay_ms
.dbline 120
ldi R16,115
ldi R17,0
rcall _pushmotor1
.dbline 122
.dbline 122
rjmp L54
L65:
.dbline 126
.dbline 127
rcall _L_PIDInit
.dbline 128
clr R2
out 0x32,R2
.dbline 129
.dbline 130
sts _num_H,R2
clr R3
sts _Num_Speed+1,R3
sts _Num_Speed,R2
.dbline 132
.dbline 132
rjmp L54
L66:
.dbline 134
.dbline 135
clr R2
out 0x25,R2
.dbline 136
.dbline 138
ldi R24,255
sts _PID_choice,R24
rcall _free_stop
.dbline 139
.dbline 139
rjmp L54
L67:
.dbline 141
.dbline 142
.dbline 143
.dbline 144
.dbline 145
.dbline 147
.dbline 148
lds R10,_rev_buf+1
clr R11
mov R11,R10
clr R10
lds R2,_rev_buf+2
clr R3
add R10,R2
adc R11,R3
sts _L_sPID+1,R11
sts _L_sPID,R10
ldi R24,128
sts _PID_choice,R24
ldi R24,7
out 0x25,R24
.dbline 149
.dbline 149
rjmp L54
L70:
.dbline 151
.dbline 152
.dbline 153
.dbline 155
.dbline 156
.dbline 158
.dbline 159
.dbline 161
.dbline 163
lds R2,_rev_buf+1
clr R3
clr R4
clr R5
movw R30,R28
std z+0,R2
std z+1,R3
std z+2,R4
std z+3,R5
ldi R24,8
ldi R25,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R24
movw R16,R2
movw R18,R4
rcall lsl32
movw R30,R28
std z+0,R16
std z+1,R17
std z+2,R18
std z+3,R19
lds R2,_rev_buf+2
clr R3
clr R4
clr R5
movw R30,R28
ldd R6,z+0
ldd R7,z+1
ldd R8,z+2
ldd R9,z+3
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
movw R30,R28
std z+0,R6
std z+1,R7
std z+2,R8
std z+3,R9
ldi R24,8
ldi R25,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R24
movw R16,R2
movw R18,R4
rcall lsl32
movw R30,R28
std z+0,R16
std z+1,R17
std z+2,R18
std z+3,R19
lds R2,_rev_buf+3
clr R3
clr R4
clr R5
movw R30,R28
ldd R6,z+0
ldd R7,z+1
ldd R8,z+2
ldd R9,z+3
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
movw R30,R28
std z+0,R6
std z+1,R7
std z+2,R8
std z+3,R9
ldi R24,8
ldi R25,0
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
st -y,R24
movw R16,R2
movw R18,R4
rcall lsl32
movw R30,R28
std z+0,R16
std z+1,R17
std z+2,R18
std z+3,R19
lds R2,_rev_buf+4
clr R3
clr R4
clr R5
movw R30,R28
ldd R6,z+0
ldd R7,z+1
ldd R8,z+2
ldd R9,z+3
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
movw R30,R28
std z+0,R6
std z+1,R7
std z+2,R8
std z+3,R9
movw R30,R28
ldd R2,z+0
ldd R3,z+1
ldd R4,z+2
ldd R5,z+3
sts _L_sPID+4+1,R3
sts _L_sPID+4,R2
sts _L_sPID+4+2+1,R5
sts _L_sPID+4+2,R4
.dbline 169
; switch( PID_choice )
; {
; case SPEED_SET :
; {
; temp_sint = v_PIDCalc ( &L_sPID);
.dbline 171
; break;
; }
ldi R24,144
sts _PID_choice,R24
ldi R24,7
out 0x25,R24
.dbline 172
; case DISTANCE_SET :
.dbline 172
.dbline 173
; {
.dbline 177
; temp_sint = s_PIDCalc( &L_sPID );
; break;
; }
; }
.dbline 178
; //temp_sint = v_PIDCalc ( &L_sPID);
rjmp L54
L53:
.dbline 180
; Num_Speed = 0;
;
.dbline 181
; send_PWM( temp_sint ); //调节PWM的占空比
lds R2,L46
lds R3,L43
cp R3,R2
brsh L78
.dbline 182
;
.dbline 183
; }
ldi R24,<_send_buf
ldi R25,>_send_buf
mov R30,R3
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
out 0xf,R2
.dbline 184
;
mov R24,R3
subi R24,255 ; addi 1
sts L43,R24
.dbline 185
; /*pwm脉宽调节*/
rjmp L79
L78:
.dbline 187
; void send_PWM(signed int num_pwm)
; {
.dbline 188
; if( num_pwm >= 0 )
.dbline 189
; now_dir = GO_AHEAD;
.dbline 190
; else
.dbline 191
; now_dir = GO_BACK;
clr R2
sts L43,R2
sts L44,R2
sts L46,R2
sts L45,R2
.dbline 201
;
; if( now_dir == GO_AHEAD ) //判断正反转
; {
; //now_dir=GO_AHEAD,正向,
; if(pre_dir != now_dir) //pre_dir!=now_dir,换成正向,
; {
; PORTC |= 0x08; //PC3->1,转向变为正
; pre_dir = now_dir; //重载pre_dir
; }
;
L79:
.dbline 203
; OCR1A = num_pwm; //重载OCR1A
;
L54:
.dbline 205
L48:
.dbline -2
.dbline 207
; TCNT1H = 0x03; //隔一定时间更新OCR1A的值,改变PWM信号,保护18200
; TCNT1L = 0xF0;
; }
; else
L42:
adiw R28,4
rcall pop_gset4
rcall pop_lset
.dbline 0 ; func end
reti
.dbsym r temp_int 10 I
.dbsym l temp_long 0 L
.dbsym r temp_char 12 c
.dbend
.dbfunc e risemotor _risemotor fV
; m -> R16
.even
_risemotor::
rcall push_gset1
.dbline -1
.dbline 210
; {
; //now_dir=GO_BACK,负方向,
; if(pre_dir != now_dir) //pre_dir!=now_dir,换成负向
.dbline 211
; {
mov R20,R16
clr R21
cpi R20,103
ldi R30,0
cpc R21,R30
breq L84
ldi R24,103
ldi R25,0
cp R24,R20
cpc R25,R21
brlt L88
L87:
cpi R20,98
ldi R30,0
cpc R21,R30
breq L85
rjmp L82
L88:
cpi R20,115
ldi R30,0
cpc R21,R30
breq L86
rjmp L82
X10:
.dbline 212
L84:
.dbline 212
; PORTC &= ~0x08; //PC3->0,转向变为负
cbi 0x12,6
.dbline 212
sbi 0x12,7
.dbline 212
rjmp L82
L85:
.dbline 213
; pre_dir = now_dir; //重载pre_dr
sbi 0x12,6
.dbline 213
sbi 0x12,7
.dbline 213
rjmp L82
L86:
.dbline 214
cbi 0x12,6
.dbline 214
cbi 0x12,7
.dbline 214
.dbline 215
L82:
.dbline -2
.dbline 217
; }
;
; OCR1A = 0 - num_pwm; //赋负转占空比
;
L80:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r m 16 c
.dbend
.dbfunc e pushmotor2 _pushmotor2 fV
; m -> R16
.even
_pushmotor2::
rcall push_gset1
.dbline -1
.dbline 220
; TCNT1H = 0x03; //隔一定时间更新OCR1A的值,改变PWM信号,保护18200
; TCNT1L = 0xF0;
; }
.dbline 221
; }
mov R20,R16
clr R21
cpi R20,103
ldi R30,0
cpc R21,R30
breq L93
ldi R24,103
ldi R25,0
cp R24,R20
cpc R25,R21
brlt L97
L96:
cpi R20,98
ldi R30,0
cpc R21,R30
breq L94
rjmp L91
L97:
cpi R20,115
ldi R30,0
cpc R21,R30
breq L95
rjmp L91
X11:
.dbline 222
L93:
.dbline 222
;
sbi 0x12,6
.dbline 222
sbi 0x12,7
.dbline 222
rjmp L91
L94:
.dbline 223
; void free_stop (void) //立即停机
cbi 0x12,6
.dbline 223
sbi 0x12,7
.dbline 223
rjmp L91
L95:
.dbline 224
cbi 0x12,6
.dbline 224
cbi 0x12,7
.dbline 224
.dbline 225
L91:
.dbline -2
.dbline 227
; {
; now_dir = GO_STOP;
; pre_dir = GO_STOP;
;
L89:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r m 16 c
.dbend
.dbfunc e pushmotor1 _pushmotor1 fV
; m -> R16
.even
_pushmotor1::
rcall push_gset1
.dbline -1
.dbline 231
; PORTC |= 0x08; //正向输出占空比为零。
; OCR1A = 0x0000; //使占空比为0
;
; TCNT1H = 0x03; //隔一定时间更新OCR1A的值,改变PWM信号,保护18200
.dbline 232
; TCNT1L = 0xF0;
mov R20,R16
clr R21
cpi R20,103
ldi R30,0
cpc R21,R30
breq L102
cpi R20,103
ldi R30,0
cpc R21,R30
brlt L100
L104:
cpi R20,115
ldi R30,0
cpc R21,R30
breq L103
rjmp L100
X12:
.dbline 233
L102:
.dbline 233
;
sbi 0x15,5
.dbline 233
rjmp L100
L103:
.dbline 234
cbi 0x15,5
.dbline 234
.dbline 235
L100:
.dbline -2
.dbline 237
; PID_choice = 0xFF;
; }
;
; //call this routine to initialize all peripherals
L98:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r m 16 c
.dbend
.dbfile E:\李斐机器人\xunxianjiadongzuo\8/TIMEDELAY8.C
.dbfunc e delay_us _delay_us fV
.even
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -