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

📄 motor2.s

📁 电机驱动
💻 S
📖 第 1 页 / 共 2 页
字号:
	rcall empy16s
	ldi R18,100
	ldi R19,0
	rcall div16s
	movw R18,R16
	ldi R16,100
	ldi R17,0
	rcall empy16s
	ldi R18,100
	ldi R19,0
	rcall div16s
	out 0x29,R17
	out 0x28,R16
	.dbline 131
;   }
	rjmp L22
L21:
	.dbline 132
;   else if(speed==0)
	cpi R20,0
	cpc R20,R21
	brne L23
X3:
	.dbline 133
;   {
	.dbline 134
; 	clr_bit(PORTA,0);
	cbi 0x1b,0
	.dbline 135
; 	clr_bit(PORTA,1);
	cbi 0x1b,1
	.dbline 136
;     OCR1B=speed*255/100*speedlp/100;
	ldi R16,255
	ldi R17,0
	movw R18,R20
	rcall empy16s
	ldi R18,100
	ldi R19,0
	rcall div16s
	movw R18,R16
	ldi R16,100
	ldi R17,0
	rcall empy16s
	ldi R18,100
	ldi R19,0
	rcall div16s
	out 0x29,R17
	out 0x28,R16
	.dbline 137
;   }
	rjmp L24
L23:
	.dbline 139
;   else
;   {
	.dbline 140
;     set_bit(PORTA,0);
	sbi 0x1b,0
	.dbline 141
; 	clr_bit(PORTA,1);
	cbi 0x1b,1
	.dbline 142
; 	OCR1B=speed*255/100*speedlp/100;
	ldi R16,255
	ldi R17,0
	movw R18,R20
	rcall empy16s
	ldi R18,100
	ldi R19,0
	rcall div16s
	movw R18,R16
	ldi R16,100
	ldi R17,0
	rcall empy16s
	ldi R18,100
	ldi R19,0
	rcall div16s
	out 0x29,R17
	out 0x28,R16
	.dbline 143
;   }
L24:
L22:
	.dbline -2
L20:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r speed 20 I
	.dbend
	.dbfunc e forward _forward fV
	.even
_forward::
	.dbline -1
	.dbline 145
; }
; void forward()    {motor_L(90);motor_R(90);} //0011 1010 车头向前
	.dbline 145
	ldi R16,90
	ldi R17,0
	rcall _motor_L
	.dbline 145
	ldi R16,90
	ldi R17,0
	rcall _motor_R
	.dbline -2
L25:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e backward _backward fV
	.even
_backward::
	.dbline -1
	.dbline 146
; void backward()   {motor_L(-90);motor_R(-90);} //0011 0101 车尾向前
	.dbline 146
	ldi R16,-90
	ldi R17,-1
	rcall _motor_L
	.dbline 146
	ldi R16,-90
	ldi R17,-1
	rcall _motor_R
	.dbline -2
L26:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e stop _stop fV
	.even
_stop::
	.dbline -1
	.dbline 147
; void stop()      {motor_L(0);motor_R(0);} //0000 0000 停止
	.dbline 147
	clr R16
	clr R17
	rcall _motor_L
	.dbline 147
	clr R16
	clr R17
	rcall _motor_R
	.dbline -2
L27:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e pause _pause fV
	.even
_pause::
	.dbline -1
	.dbline 148
; void pause()      {set_bit(PORTA,0);set_bit(PORTA,1);
	.dbline 148
	sbi 0x1b,0
	.dbline 148
	sbi 0x1b,1
	.dbline 149
;                    set_bit(PORTA,2);set_bit(PORTA,3);} //0011 1111 制动
	sbi 0x1b,2
	.dbline 149
	sbi 0x1b,3
	.dbline -2
L28:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e forleft _forleft fV
	.even
_forleft::
	.dbline -1
	.dbline 150
; void forleft()   {motor_L(1);motor_R(70);} //0011 1000 车头向前左拐
	.dbline 150
	ldi R16,1
	ldi R17,0
	rcall _motor_L
	.dbline 150
	ldi R16,70
	ldi R17,0
	rcall _motor_R
	.dbline -2
L29:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e foright _foright fV
	.even
_foright::
	.dbline -1
	.dbline 151
; void foright()   {motor_L(70);motor_R(1);} //0011 0010 车头向前右拐
	.dbline 151
	ldi R16,70
	ldi R17,0
	rcall _motor_L
	.dbline 151
	ldi R16,1
	ldi R17,0
	rcall _motor_R
	.dbline -2
L30:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e backleft _backleft fV
	.even
_backleft::
	.dbline -1
	.dbline 152
; void backleft()  {motor_L(-70);motor_R(-1);} //0011 0001 车尾向前左拐
	.dbline 152
	ldi R16,-70
	ldi R17,-1
	rcall _motor_L
	.dbline 152
	ldi R16,-1
	ldi R17,-1
	rcall _motor_R
	.dbline -2
L31:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e backright _backright fV
	.even
_backright::
	.dbline -1
	.dbline 153
; void backright() {motor_L(-1);motor_R(-70);} //0011 0100 车尾向前右拐
	.dbline 153
	ldi R16,-1
	ldi R17,-1
	rcall _motor_L
	.dbline 153
	ldi R16,-70
	ldi R17,-1
	rcall _motor_R
	.dbline -2
L32:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e cycleft _cycleft fV
	.even
_cycleft::
	.dbline -1
	.dbline 154
; void cycleft()   {motor_L(-40);motor_R(50);} //0011 1001 逆时针旋转
	.dbline 154
	ldi R16,-40
	ldi R17,-1
	rcall _motor_L
	.dbline 154
	ldi R16,50
	ldi R17,0
	rcall _motor_R
	.dbline -2
L33:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e cycright _cycright fV
	.even
_cycright::
	.dbline -1
	.dbline 155
; void cycright()  {motor_L(50);motor_R(-40);} //0011 0110 顺时针旋转
	.dbline 155
	ldi R16,50
	ldi R17,0
	rcall _motor_L
	.dbline 155
	ldi R16,-40
	ldi R17,-1
	rcall _motor_R
	.dbline -2
L34:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e getpacket _getpacket fV
	.even
_getpacket::
	.dbline -1
	.dbline 159
; 
; //收集包裹函数
; void getpacket()
; {set_bit(PORTD,0); 
	.dbline 159
	sbi 0x12,0
	.dbline 160
;  clr_bit(PORTD,1);}//10,启动收集装置
	cbi 0x12,1
	.dbline -2
L35:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e stopget _stopget fV
	.even
_stopget::
	rcall push_gset1
	.dbline -1
	.dbline 162
; void stopget()   
; {
	rjmp L38
L37:
	.dbline 163
	rcall _getpacket
L38:
	.dbline 163
;  while(SJ==1) getpacket(); 
	sbis 0x10,4
	rjmp L40
	ldi R20,1
	ldi R21,0
	rjmp L41
L40:
	clr R20
	clr R21
L41:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L37
	.dbline 164
;  set_bit(PORTD,1);
	sbi 0x12,1
	.dbline 165
;  clr_bit(PORTD,0);
	cbi 0x12,0
	.dbline 166
;  delay_ms(50);
	ldi R16,50
	ldi R17,0
	rcall _delay_ms
	.dbline 167
;  set_bit(PORTD,1);
	sbi 0x12,1
	.dbline 168
;  set_bit(PORTD,0);
	sbi 0x12,0
	.dbline -2
L36:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 172
;  }
;  
; void main()
; { 
	.dbline 173
;    CLI();
	cli
	.dbline 174
;   InitPorts();
	rcall _InitPorts
	.dbline 175
;   pwm_init();
	rcall _pwm_init
	.dbline 176
;   SEI();
	sei
	.dbline 177
;   delay_ms(200);
	ldi R16,200
	ldi R17,0
	rcall _delay_ms
	.dbline 203
;   
;   /*forward();//同时正转
;   delay_s(3);
;   pause();
;   delay_s(3);
;   backward();//同时反转
;   delay_s(3);
;   pause();
;   delay_s(3);
;   forleft();//左停右正
;   delay_s(3);
;   pause();
;   delay_s(3);
;   foright();//左正右停
;   delay_s(3);
;   pause();
;   delay_s(3);
;   backleft();//左反右停
;   delay_s(3);
;   pause();
;   delay_s(3);
;   backright();//左停右反
;   delay_s(3);
;   pause();
;   delay_s(3);*/
;   cycleft();//左反右正
	rcall _cycleft
	.dbline 204
;   delay_s(3);
	ldi R16,3
	ldi R17,0
	rcall _delay_s
	.dbline 205
;   pause();
	rcall _pause
	.dbline 206
;   delay_s(3);
	ldi R16,3
	ldi R17,0
	rcall _delay_s
	.dbline 207
;   cycright();//左正右反
	rcall _cycright
	.dbline 208
;   delay_s(3);
	ldi R16,3
	ldi R17,0
	rcall _delay_s
	.dbline -2
L42:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -