📄 motor.s
字号:
.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 + -