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

📄 motor.lis

📁 运动控制:利用单片机的定时器中断来产生脉冲
💻 LIS
字号:
                        .module motor.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\桌面\avr程序设计\电机控制\motor.c
 0000                   .dbfunc e for_ward _for_ward fV
 0000           ;          speed -> R16
                        .even
 0000           _for_ward::
 0000                   .dbline -1
 0000                   .dbline 9
 0000           ; /****************************************************************
 0000           ; ** 文件名:motor.c   电机驱动函数
 0000           ; ****************************************************************/
 0000           ; #include "config.h"
 0000           ; 
 0000           ; /******************************************************************************/
 0000           ; //正转,速度
 0000           ; void for_ward(uint8 speed)
 0000           ; {
 0000                   .dbline 10
 0000           ;        if(speed!=0)
 0000 0023              tst R16
 0002 21F0              breq L2
 0004                   .dbline 11
 0004           ;         {
 0004                   .dbline 12
 0004           ;          OCR2 = speed;
 0004 03BD              out 0x23,R16
 0006           L4:
 0006                   .dbline 13
 0006           L5:
 0006                   .dbline 13
 0006           ;          while(ASSR&(1<<TCR2UB)==1) ; //启动TC2 pwm 输出,异步操作需要等待 OCR2写入完毕
 0006 22B4              in R2,0x22
 0008 20FC              sbrc R2,0
 000A FDCF              rjmp L4
 000C                   .dbline 14
 000C           ;         }
 000C           L2:
 000C                   .dbline 15
 000C           ;        TC2_EN;   //pwm_start
 000C 89B7              in R24,0x39
 000E 806C              ori R24,192
 0010 89BF              out 0x39,R24
 0012                   .dbline 16
 0012           ;        moto_en1;
 0012 949A              sbi 0x12,4
 0014                   .dbline 17
 0014           ;        moto_uen2;
 0014 9598              cbi 0x12,5
 0016                   .dbline -2
 0016           L1:
 0016                   .dbline 0 ; func end
 0016 0895              ret
 0018                   .dbsym r speed 16 c
 0018                   .dbend
 0018                   .dbfunc e back_ward _back_ward fV
 0018           ;          speed -> R16
                        .even
 0018           _back_ward::
 0018                   .dbline -1
 0018                   .dbline 22
 0018           ; }
 0018           ; /******************************************************************************/
 0018           ; //反转,速度
 0018           ; void back_ward(uint8 speed)
 0018           ; {
 0018                   .dbline 23
 0018           ;        if(speed!=0)
 0018 0023              tst R16
 001A 21F0              breq L8
 001C                   .dbline 24
 001C           ;       {
 001C                   .dbline 25
 001C           ;        OCR2 = speed;
 001C 03BD              out 0x23,R16
 001E           L10:
 001E                   .dbline 26
 001E           L11:
 001E                   .dbline 26
 001E           ;          while(ASSR&(1<<TCR2UB)==1) ;// 启动TC2 pwm 输出,异步操作需要等待OCR2写入完毕
 001E 22B4              in R2,0x22
 0020 20FC              sbrc R2,0
 0022 FDCF              rjmp L10
 0024                   .dbline 27
 0024           ;     }
 0024           L8:
 0024                   .dbline 28
 0024           ;    TC2_EN;   //pwm start
 0024 89B7              in R24,0x39
 0026 806C              ori R24,192
 0028 89BF              out 0x39,R24
 002A                   .dbline 29
 002A           ;    moto_uen1;
 002A 9498              cbi 0x12,4
 002C                   .dbline 30
 002C           ;    moto_en2;
 002C 959A              sbi 0x12,5
 002E                   .dbline -2
 002E           L7:
 002E                   .dbline 0 ; func end
 002E 0895              ret
 0030                   .dbsym r speed 16 c
 0030                   .dbend
 0030                   .dbfunc e motor_stop _motor_stop fV
                        .even
 0030           _motor_stop::
 0030                   .dbline -1
 0030                   .dbline 35
 0030           ; }
 0030           ; /******************************************************************************/
 0030           ; //停止
 0030           ; void motor_stop(void)
 0030           ; {
 0030                   .dbline 36
 0030           ;  moto_en1;   //同时置一停止
 0030 949A              sbi 0x12,4
 0032                   .dbline 37
 0032           ;  moto_en2;
 0032 959A              sbi 0x12,5
 0034                   .dbline 38
 0034           ;  TC2_DIS;    //pwm stop
 0034 89B7              in R24,0x39
 0036 8F77              andi R24,127
 0038 89BF              out 0x39,R24
 003A                   .dbline -2
 003A           L13:
 003A                   .dbline 0 ; func end
 003A 0895              ret
 003C                   .dbend
 003C                   .dbfunc e speed_add _speed_add fV
 003C           ;            add -> R16
                        .even
 003C           _speed_add::
 003C                   .dbline -1
 003C                   .dbline 44
 003C                   .dbline 45
 003C 83B5              in R24,0x23
 003E 800F              add R24,R16
 0040 803F              cpi R24,240
 0042 18F4              brsh L15
 0044                   .dbline 46
 0044                   .dbline 47
 0044 23B4              in R2,0x23
 0046 200E              add R2,R16
 0048 23BC              out 0x23,R2
 004A                   .dbline 48
 004A           L15:
 004A                   .dbline -2
 004A           L14:
 004A                   .dbline 0 ; func end
 004A 0895              ret
 004C                   .dbsym r add 16 c
 004C                   .dbend
 004C                   .dbfunc e speed_subtract _speed_subtract fV
 004C           ;       subtract -> R16
                        .even
 004C           _speed_subtract::
 004C                   .dbline -1
 004C                   .dbline 54
 004C                   .dbline 55
 004C 23B4              in R2,0x23
 004E 201A              sub R2,R16
 0050 8AE0              ldi R24,10
 0052 8215              cp R24,R2
 0054 18F4              brsh L18
 0056                   .dbline 56
 0056                   .dbline 57
 0056 23B4              in R2,0x23
 0058 201A              sub R2,R16
 005A 23BC              out 0x23,R2
 005C                   .dbline 58
 005C           L18:
 005C                   .dbline -2
 005C           L17:
 005C                   .dbline 0 ; func end
 005C 0895              ret
 005E                   .dbsym r subtract 16 c
 005E                   .dbend

⌨️ 快捷键说明

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