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

📄 xunxiandongzuo8.s

📁 mega8 对电机控制。采用mega8对电机控制。然后再用mega16 来控制mega8
💻 S
📖 第 1 页 / 共 3 页
字号:
_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 + -