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

📄 motor.s

📁 AVR单片机应用开发指南及实例,包含许多实例,挺不错
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module motor.c
	.area text(rom, con, rel)
	.dbfile D:/icc/include/diy0206.c
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 81
; /*******************************************/
; /*            广州天河双龙电子公司         */
; /*            http://www.sl.com.cn         */
; /*功能:  PA口控制八路伺服电机。           */
; /*注意:伺服电机数据线是I/O-VCC-GND        */
; /*******************************************/
; //         ATMEGA16  晶振 8MHz             //
; #include <iom16v.h>
; #include <macros.h>
; #include <diy0206.c>
; #pragma interrupt_handler timer1:9
; 
; //*********************************************************************
; #define  delay_time 0xb1e0			//延时20 ms
; 
; //以下常量对应的角度(n为负)			 n90     n45	0	   45	  90
; //const  unsigned char loc_angle[10]={0x01f4,0x03e8,0x05dc,0x07d0,0x0904};
; const  unsigned int loc_angle[8]={0x01f4,0x03e8,0x05dc,0x07d0,0x0904,0x07d0,0x05dc,0x03e8};
; unsigned char pwm_number=0;	//脉冲数
; unsigned char pwm_outword=1;	//输出命令
; unsigned int  delay_timel,delay_timeh;	//低电平延时时间,高电平延时时间
; //********************************************************************
; void timer1(void) 	//T0定时中断服务子程序
; {
; 	
; 	if (pwm_outword!=0x80)
; 	{
; 		
; 		TCNT1=delay_timeh;
; 		PORTA=pwm_outword;        	//输出控制命令
; 		pwm_outword<<=1;		//控制命令左移一位
; 		
; 	}
; 	else 
; 	{
; 		
; 		pwm_outword=1;
; 		TCNT1=delay_timel;
; 		PORTA=0x00;			//输出低电平
; 		pwm_number++;			//低电平输出完成,脉冲数++
; 		
; 	}
; 	
; 	
; 
; }
; //*******************************************************************
; void  time1_init()			//定时器初始化
; {
; 	TCCR1A=0x00;
; 	TCCR1B=0x00;          //停止定时器1
; 	TIMSK=0x04;           //TIMER1溢出中断使能
; 	TCNT1H=0x44;			//设置中断初值
; 	TCNT1L=0x44;
; 	SEI();				//使能全局中断
; 	TCCR1B=0x02;	//启动T1,8分频
; }
; //**********************************************************************
; void  main(void)
; {
; 	unsigned char i_temp;	//临时变量
; 	unsigned int temp;  //临时变量
; //********************************************************************
; 	DDRA=0xff;              //PA口输出
; 	PORTA=0xff;
; 	mic_startup();			//调用声控
; 	for(i_temp=0;i_temp<10;i_temp++)	//灯闪烁10次
; 	{	
; 		PORTA=0xff;			//灯灭
; 		delay_ms(500);	//延时0.5S
; 		PORTA=0x00;			//灯亮
; 		delay_ms(500);	//延时0.5S
; 	}
; 	time1_init();
; 	while(1)
; 	{      
; 	  for (i_temp=0;i_temp<8;i_temp++)	//8个位置依次切换
; 		 {
; 			delay_timeh=0xffff-loc_angle[i_temp];
; 			delay_timel=delay_time+loc_angle[i_temp]*8;			
; 			while(pwm_number<8);
	.dbline 82
; 			pwm_number=0;
	ldi R24,255
	out 0x1a,R24
	.dbline 82
	out 0x1b,R24
	.dbline 84
; 		
; 	      }			//for 结束
	clr R2
	out 0x17,R2
	.dbline 84
	out 0x18,R24
	.dbline 86
; 		    
; 		
	ldi R24,1
	out 0x14,R24
	.dbline 86
	ldi R24,255
	out 0x15,R24
	.dbline 88
; 	      }			//while 结束
; 	     
	ldi R24,240
	out 0x11,R24
	.dbline 88
	ldi R24,255
	out 0x12,R24
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delay_us _delay_us fV
;           time -> R16,R17
	.even
_delay_us::
	.dbline -1
	.dbline 93
; 	  
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
L3:
	.dbline 95
; }						//main函数结 
; }						//main函数结 
	.dbline 96
; }						//main函数结 
	subi R16,1
	sbci R17,0
	.dbline 97
; }						//main函数结 
L4:
	.dbline 98
; }						//main函数结 
	ldi R24,1
	ldi R25,0
	cp R24,R16
	cpc R25,R17
	brlt L3
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbsym r time 16 I
	.dbend
	.dbfunc e delay_ms _delay_ms fV
;           time -> R20,R21
	.even
_delay_ms::
	xcall push_gset1
	movw R20,R16
	.dbline -1
	.dbline 102
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
	xjmp L8
L7:
	.dbline 104
	.dbline 105
	ldi R16,1000
	ldi R17,3
	xcall _delay_us
	.dbline 106
	subi R20,1
	sbci R21,0
	.dbline 107
L8:
	.dbline 103
; }						//main函数结 
	cpi R20,0
	cpc R20,R21
	brne L7
X0:
	.dbline -2
L6:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r time 20 i
	.dbend
	.dbfunc e turn_right _turn_right fV
	.even
_turn_right::
	.dbline -1
	.dbline 111
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
	.dbline 112
; }						//main函数结 
	ldi R24,144
	out 0x12,R24
	.dbline 113
; }						//main函数结 
	ldi R24,204
	out 0x1b,R24
	.dbline -2
L10:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e turn_left _turn_left fV
	.even
_turn_left::
	.dbline -1
	.dbline 117
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
	.dbline 118
; }						//main函数结 
	ldi R24,96
	out 0x12,R24
	.dbline 119
; }						//main函数结 
	ldi R24,51
	out 0x1b,R24
	.dbline -2
L11:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e turn_right_s _turn_right_s fV
	.even
_turn_right_s::
	.dbline -1
	.dbline 122
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
	.dbline 123
; }						//main函数结 
	ldi R24,128
	out 0x12,R24
	.dbline 124
; }						//main函数结 
	ldi R24,207
	out 0x1b,R24
	.dbline -2
L12:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e turn_left_s _turn_left_s fV
	.even
_turn_left_s::
	.dbline -1
	.dbline 128
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
	.dbline 129
; }						//main函数结 
	ldi R24,32
	out 0x12,R24
	.dbline 130
; }						//main函数结 
	ldi R24,243
	out 0x1b,R24
	.dbline -2
L13:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e backward _backward fV
	.even
_backward::
	.dbline -1
	.dbline 134
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
	.dbline 135
; }						//main函数结 
	ldi R24,80
	out 0x12,R24
	.dbline 136
; }						//main函数结 
	ldi R24,60
	out 0x1b,R24
	.dbline -2
L14:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e forward _forward fV
	.even
_forward::
	.dbline -1
	.dbline 140
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
	.dbline 141
; }						//main函数结 
	ldi R24,160
	out 0x12,R24
	.dbline 142
; }						//main函数结 
	ldi R24,195
	out 0x1b,R24
	.dbline -2
L15:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e stop _stop fV
	.even
_stop::
	.dbline -1
	.dbline 146
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
	.dbline 147
; }						//main函数结 
	ldi R24,255
	out 0x12,R24
	.dbline 148
; }						//main函数结 
	out 0x1b,R24
	.dbline -2
L16:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e sw_touch _sw_touch fV
;          sw_in -> R20
;      remote_in -> R22
	.even
_sw_touch::
	xcall push_gset2
	.dbline -1
	.dbline 165
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
	.dbline 167
; }						//main函数结 
; }						//main函数结 
	in R20,0x13
	andi R20,16
	.dbline 168
; }						//main函数结 
	brne L18
	.dbline 169
; }						//main函数结 
	.dbline 170
; }						//main函数结 
	xcall _backward
	.dbline 171
; }						//main函数结 
	ldi R16,250
	ldi R17,0
	xcall _delay_ms
	.dbline 173
; }						//main函数结 
; }						//main函数结 
	lds R24,_work_status
	cpi R24,112
	brne L20
	.dbline 174
; }						//main函数结 
	.dbline 175
; }						//main函数结 
	xcall _stop
	xjmp L23
L22:
	.dbline 177
	.dbline 178
	ldi R24,85
	out 0x1b,R24
	.dbline 179
	ldi R16,250
	ldi R17,0
	xcall _delay_ms
	.dbline 180
	ldi R24,170
	out 0x1b,R24
	.dbline 181
	ldi R16,250
	ldi R17,0
	xcall _delay_ms
	.dbline 182
L23:
	.dbline 176
; }						//main函数结 
	xjmp L22
X1:
	.dbline 183
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
; }						//main函数结 
L20:
	.dbline 185
; }						//main函数结 
; }						//main函数结 
	xcall _turn_left
	.dbline 186
; }						//main函数结 
	ldi R16,250
	ldi R17,0
	xcall _delay_ms
	.dbline 187
; }						//main函数结 
L18:
	.dbline 189
; }						//main函数结 
; }						//main函数结 
	in R20,0x16
	andi R20,11
	.dbline 190
; }						//main函数结 
	cpi R20,9
	brne L25
	.dbline 191
; }						//main函数结 
	.dbline 192
; }						//main函数结 
	xcall _forward
	.dbline 193
; }						//main函数结 
	ldi R16,250
	ldi R17,0
	xcall _delay_ms
	.dbline 195
; }						//main函数结 
; }						//main函数结 
	xcall _turn_left
	.dbline 196
; }						//main函数结 
	ldi R16,250
	ldi R17,0
	xcall _delay_ms
	.dbline 197
; }						//main函数结 
L25:
	.dbline 198
; }						//main函数结 
	cpi R20,10
	brne L27
	.dbline 199
; }						//main函数结 
	.dbline 200
; }						//main函数结 
	xcall _backward
	.dbline 201
; }						//main函数结 
	ldi R16,250
	ldi R17,0
	xcall _delay_ms
	.dbline 203
; }						//main函数结 
; }						//main函数结 
	xcall _turn_left
	.dbline 204
; }						//main函数结 
	ldi R16,250
	ldi R17,0
	xcall _delay_ms
	.dbline 205
; }						//main函数结 
L27:
	.dbline 206
; }						//main函数结 
	cpi R20,3
	brne L29
	.dbline 207
; }						//main函数结 
	.dbline 208
; }						//main函数结 
	xcall _backward
	.dbline 209
; }						//main函数结 
	ldi R16,250
	ldi R17,0
	xcall _delay_ms
	.dbline 211
; }						//main函数结 
; }						//main函数结 
	xcall _turn_left
	.dbline 212
; }						//main函数结 
	ldi R16,250
	ldi R17,0
	xcall _delay_ms
	.dbline 213
; }						//main函数结 
L29:
	.dbline 214
; }						//main函数结 
	cpi R20,2
	brne L31
	.dbline 215
; }						//main函数结 
	.dbline 216
; }						//main函数结 
	xcall _stop
	.dbline 217
; }						//main函数结 
	ldi R16,1000
	ldi R17,3
	xcall _delay_ms
	xjmp L34
L33:
	.dbline 219
; }						//main函数结 
; }						//main函数结 
	.dbline 220
; }						//main函数结 
	in R20,0x13
	andi R20,16
	.dbline 221
; }						//main函数结 

⌨️ 快捷键说明

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