📄 motor.lis
字号:
.module motor.c
.area text(rom, con, rel)
0000 .dbfile D:/icc/include/diy0206.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 81
0000 ; /*******************************************/
0000 ; /* 广州天河双龙电子公司 */
0000 ; /* http://www.sl.com.cn */
0000 ; /*功能: PA口控制八路伺服电机。 */
0000 ; /*注意:伺服电机数据线是I/O-VCC-GND */
0000 ; /*******************************************/
0000 ; // ATMEGA16 晶振 8MHz //
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #include <diy0206.c>
0000 ; #pragma interrupt_handler timer1:9
0000 ;
0000 ; //*********************************************************************
0000 ; #define delay_time 0xb1e0 //延时20 ms
0000 ;
0000 ; //以下常量对应的角度(n为负) n90 n45 0 45 90
0000 ; //const unsigned char loc_angle[10]={0x01f4,0x03e8,0x05dc,0x07d0,0x0904};
0000 ; const unsigned int loc_angle[8]={0x01f4,0x03e8,0x05dc,0x07d0,0x0904,0x07d0,0x05dc,0x03e8};
0000 ; unsigned char pwm_number=0; //脉冲数
0000 ; unsigned char pwm_outword=1; //输出命令
0000 ; unsigned int delay_timel,delay_timeh; //低电平延时时间,高电平延时时间
0000 ; //********************************************************************
0000 ; void timer1(void) //T0定时中断服务子程序
0000 ; {
0000 ;
0000 ; if (pwm_outword!=0x80)
0000 ; {
0000 ;
0000 ; TCNT1=delay_timeh;
0000 ; PORTA=pwm_outword; //输出控制命令
0000 ; pwm_outword<<=1; //控制命令左移一位
0000 ;
0000 ; }
0000 ; else
0000 ; {
0000 ;
0000 ; pwm_outword=1;
0000 ; TCNT1=delay_timel;
0000 ; PORTA=0x00; //输出低电平
0000 ; pwm_number++; //低电平输出完成,脉冲数++
0000 ;
0000 ; }
0000 ;
0000 ;
0000 ;
0000 ; }
0000 ; //*******************************************************************
0000 ; void time1_init() //定时器初始化
0000 ; {
0000 ; TCCR1A=0x00;
0000 ; TCCR1B=0x00; //停止定时器1
0000 ; TIMSK=0x04; //TIMER1溢出中断使能
0000 ; TCNT1H=0x44; //设置中断初值
0000 ; TCNT1L=0x44;
0000 ; SEI(); //使能全局中断
0000 ; TCCR1B=0x02; //启动T1,8分频
0000 ; }
0000 ; //**********************************************************************
0000 ; void main(void)
0000 ; {
0000 ; unsigned char i_temp; //临时变量
0000 ; unsigned int temp; //临时变量
0000 ; //********************************************************************
0000 ; DDRA=0xff; //PA口输出
0000 ; PORTA=0xff;
0000 ; mic_startup(); //调用声控
0000 ; for(i_temp=0;i_temp<10;i_temp++) //灯闪烁10次
0000 ; {
0000 ; PORTA=0xff; //灯灭
0000 ; delay_ms(500); //延时0.5S
0000 ; PORTA=0x00; //灯亮
0000 ; delay_ms(500); //延时0.5S
0000 ; }
0000 ; time1_init();
0000 ; while(1)
0000 ; {
0000 ; for (i_temp=0;i_temp<8;i_temp++) //8个位置依次切换
0000 ; {
0000 ; delay_timeh=0xffff-loc_angle[i_temp];
0000 ; delay_timel=delay_time+loc_angle[i_temp]*8;
0000 ; while(pwm_number<8);
0000 .dbline 82
0000 ; pwm_number=0;
0000 8FEF ldi R24,255
0002 8ABB out 0x1a,R24
0004 .dbline 82
0004 8BBB out 0x1b,R24
0006 .dbline 84
0006 ;
0006 ; } //for 结束
0006 2224 clr R2
0008 27BA out 0x17,R2
000A .dbline 84
000A 88BB out 0x18,R24
000C .dbline 86
000C ;
000C ;
000C 81E0 ldi R24,1
000E 84BB out 0x14,R24
0010 .dbline 86
0010 8FEF ldi R24,255
0012 85BB out 0x15,R24
0014 .dbline 88
0014 ; } //while 结束
0014 ;
0014 80EF ldi R24,240
0016 81BB out 0x11,R24
0018 .dbline 88
0018 8FEF ldi R24,255
001A 82BB out 0x12,R24
001C .dbline -2
001C L1:
001C .dbline 0 ; func end
001C 0895 ret
001E .dbend
001E .dbfunc e delay_us _delay_us fV
001E ; time -> R16,R17
.even
001E _delay_us::
001E .dbline -1
001E .dbline 93
001E ;
001E ; } //main函数结
001E ; } //main函数结
001E ; } //main函数结
001E ; } //main函数结
001E L3:
001E .dbline 95
001E ; } //main函数结
001E ; } //main函数结
001E .dbline 96
001E ; } //main函数结
001E 0150 subi R16,1
0020 1040 sbci R17,0
0022 .dbline 97
0022 ; } //main函数结
0022 L4:
0022 .dbline 98
0022 ; } //main函数结
0022 81E0 ldi R24,1
0024 90E0 ldi R25,0
0026 8017 cp R24,R16
0028 9107 cpc R25,R17
002A CCF3 brlt L3
002C .dbline -2
002C L2:
002C .dbline 0 ; func end
002C 0895 ret
002E .dbsym r time 16 I
002E .dbend
002E .dbfunc e delay_ms _delay_ms fV
002E ; time -> R20,R21
.even
002E _delay_ms::
002E 0E940000 xcall push_gset1
0032 A801 movw R20,R16
0034 .dbline -1
0034 .dbline 102
0034 ; } //main函数结
0034 ; } //main函数结
0034 ; } //main函数结
0034 ; } //main函数结
0034 05C0 xjmp L8
0036 L7:
0036 .dbline 104
0036 .dbline 105
0036 08EE ldi R16,1000
0038 13E0 ldi R17,3
003A F1DF xcall _delay_us
003C .dbline 106
003C 4150 subi R20,1
003E 5040 sbci R21,0
0040 .dbline 107
0040 L8:
0040 .dbline 103
0040 ; } //main函数结
0040 4030 cpi R20,0
0042 4507 cpc R20,R21
0044 C1F7 brne L7
0046 X0:
0046 .dbline -2
0046 L6:
0046 0E940000 xcall pop_gset1
004A .dbline 0 ; func end
004A 0895 ret
004C .dbsym r time 20 i
004C .dbend
004C .dbfunc e turn_right _turn_right fV
.even
004C _turn_right::
004C .dbline -1
004C .dbline 111
004C ; } //main函数结
004C ; } //main函数结
004C ; } //main函数结
004C ; } //main函数结
004C ; } //main函数结
004C ; } //main函数结
004C ; } //main函数结
004C ; } //main函数结
004C .dbline 112
004C ; } //main函数结
004C 80E9 ldi R24,144
004E 82BB out 0x12,R24
0050 .dbline 113
0050 ; } //main函数结
0050 8CEC ldi R24,204
0052 8BBB out 0x1b,R24
0054 .dbline -2
0054 L10:
0054 .dbline 0 ; func end
0054 0895 ret
0056 .dbend
0056 .dbfunc e turn_left _turn_left fV
.even
0056 _turn_left::
0056 .dbline -1
0056 .dbline 117
0056 ; } //main函数结
0056 ; } //main函数结
0056 ; } //main函数结
0056 ; } //main函数结
0056 .dbline 118
0056 ; } //main函数结
0056 80E6 ldi R24,96
0058 82BB out 0x12,R24
005A .dbline 119
005A ; } //main函数结
005A 83E3 ldi R24,51
005C 8BBB out 0x1b,R24
005E .dbline -2
005E L11:
005E .dbline 0 ; func end
005E 0895 ret
0060 .dbend
0060 .dbfunc e turn_right_s _turn_right_s fV
.even
0060 _turn_right_s::
0060 .dbline -1
0060 .dbline 122
0060 ; } //main函数结
0060 ; } //main函数结
0060 ; } //main函数结
0060 .dbline 123
0060 ; } //main函数结
0060 80E8 ldi R24,128
0062 82BB out 0x12,R24
0064 .dbline 124
0064 ; } //main函数结
0064 8FEC ldi R24,207
0066 8BBB out 0x1b,R24
0068 .dbline -2
0068 L12:
0068 .dbline 0 ; func end
0068 0895 ret
006A .dbend
006A .dbfunc e turn_left_s _turn_left_s fV
.even
006A _turn_left_s::
006A .dbline -1
006A .dbline 128
006A ; } //main函数结
006A ; } //main函数结
006A ; } //main函数结
006A ; } //main函数结
006A .dbline 129
006A ; } //main函数结
006A 80E2 ldi R24,32
006C 82BB out 0x12,R24
006E .dbline 130
006E ; } //main函数结
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -