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

📄 motor.lis

📁 小车自动寻迹代码,可以进行电子设计,设计电动小车
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module motor.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator.1B4135EF7FF9405\桌面\小车寻迹\motor.c
 0000                   .dbfunc e motor_left_forward _motor_left_forward fV
 0000           ;          speed -> R16
                        .even
 0000           _motor_left_forward::
 0000                   .dbline -1
 0000                   .dbline 21
 0000           ; /****************************************************************
 0000           ; ** 文件名:motor.c   电机驱动函数
 0000           ; ****************************************************************/
 0000           ;  #include "config.h"
 0000           ;  /*#define T0_EN TIMSK |= (1<<OCIE0)|(1<<TOIE0)
 0000           ;  #define T0_UEN TIMSK &=~ (1<<OCIE0)|(1<<TOIE0)
 0000           ;  #define T0_start TCCR0 |= (1<<WGM00)|(1<<WGM01)|(1<<COM01)|0x04;
 0000           ;  //0x04 0100B 代表256预分频
 0000           ;  #define T0_stop TCCR0 = 0x00
 0000           ;  
 0000           ;  #define T2_EN TIMSK |= (1<<OCIE2)|(1<<TOIE2)
 0000           ;  #define T2_UEN TIMSK &=~ (1<<OCIE2)|(1<<TOIE2)
 0000           ;  #define T2_start TCCR2 = (1<<WGM20)|(1<<WGM21)|(1<<COM21)|0x06
 0000           ;  #define T2_stop TCCR2 = 0x00
 0000           ;  
 0000           ;  
 0000           ;  
 0000           ; /************************左电机动作*****************************/
 0000           ; //左电机前进
 0000           ; void motor_left_forward(uint8 speed)
 0000           ; {
 0000                   .dbline 22
 0000           ;  motol_uen1;
 0000 C498              cbi 0x18,4
 0002                   .dbline 23
 0002           ;  motol_en2;
 0002 C59A              sbi 0x18,5
 0004                   .dbline 24
 0004           ;  if(speed!=0) //加入调速指令
 0004 0023              tst R16
 0006 09F0              breq L2
 0008                   .dbline 25
 0008           ;   {
 0008                   .dbline 26
 0008           ;    OCR0=speed;
 0008 0CBF              out 0x3c,R16
 000A                   .dbline 27
 000A           ;   }
 000A           L2:
 000A                   .dbline 28
 000A           ;  T0_EN;
 000A 89B7              in R24,0x39
 000C 8360              ori R24,3
 000E 89BF              out 0x39,R24
 0010                   .dbline -2
 0010           L1:
 0010                   .dbline 0 ; func end
 0010 0895              ret
 0012                   .dbsym r speed 16 c
 0012                   .dbend
 0012                   .dbfunc e motor_left_backward _motor_left_backward fV
 0012           ;          speed -> R16
                        .even
 0012           _motor_left_backward::
 0012                   .dbline -1
 0012                   .dbline 32
 0012           ; }
 0012           ; //左电机后退
 0012           ; void motor_left_backward(uint8 speed)
 0012           ; {
 0012                   .dbline 33
 0012           ;  motol_en1;
 0012 C49A              sbi 0x18,4
 0014                   .dbline 34
 0014           ;  motol_uen2;
 0014 C598              cbi 0x18,5
 0016                   .dbline 35
 0016           ;  if(speed!=0) //加入调速指令
 0016 0023              tst R16
 0018 09F0              breq L5
 001A                   .dbline 36
 001A           ;   {
 001A                   .dbline 37
 001A           ;    OCR0=speed;
 001A 0CBF              out 0x3c,R16
 001C                   .dbline 38
 001C           ;   }
 001C           L5:
 001C                   .dbline 39
 001C           ;  T0_EN;
 001C 89B7              in R24,0x39
 001E 8360              ori R24,3
 0020 89BF              out 0x39,R24
 0022                   .dbline -2
 0022           L4:
 0022                   .dbline 0 ; func end
 0022 0895              ret
 0024                   .dbsym r speed 16 c
 0024                   .dbend
 0024                   .dbfunc e motor_left_speed_set _motor_left_speed_set fV
 0024           ;          speed -> R16
                        .even
 0024           _motor_left_speed_set::
 0024                   .dbline -1
 0024                   .dbline 43
 0024                   .dbline 44
 0024 0023              tst R16
 0026 09F0              breq L8
 0028                   .dbline 45
 0028                   .dbline 46
 0028 0CBF              out 0x3c,R16
 002A                   .dbline 47
 002A           L8:
 002A                   .dbline -2
 002A           L7:
 002A                   .dbline 0 ; func end
 002A 0895              ret
 002C                   .dbsym r speed 16 c
 002C                   .dbend
 002C                   .dbfunc e motor_left_stop _motor_left_stop fV
                        .even
 002C           _motor_left_stop::
 002C                   .dbline -1
 002C                   .dbline 51
 002C           ; }
 002C           ; //左电机速度设定
 002C           ; void motor_left_speed_set(uint8 speed)
 002C           ; {
 002C           ;  if(speed!=0)
 002C           ;   {
 002C           ;    OCR0=speed;
 002C           ;   } 
 002C           ; }
 002C           ; //左电机滑行
 002C           ; void motor_left_stop(void)
 002C           ; {
 002C                   .dbline 52
 002C           ;  motol_uen1;
 002C C498              cbi 0x18,4
 002E                   .dbline 53
 002E           ;  motol_uen2;
 002E C598              cbi 0x18,5
 0030                   .dbline 54
 0030           ;  T0_UEN;
 0030 89B7              in R24,0x39
 0032 8D7F              andi R24,253
 0034 89BF              out 0x39,R24
 0036                   .dbline -2
 0036           L10:
 0036                   .dbline 0 ; func end
 0036 0895              ret
 0038                   .dbend
 0038                   .dbfunc e motor_left_quick_stop _motor_left_quick_stop fV
                        .even
 0038           _motor_left_quick_stop::
 0038                   .dbline -1
 0038                   .dbline 58
 0038           ; }
 0038           ; //左电机急停
 0038           ; void motor_left_quick_stop(void)
 0038           ; {
 0038                   .dbline 59
 0038           ;  motol_en1;
 0038 C49A              sbi 0x18,4
 003A                   .dbline 60
 003A           ;  motol_en2;
 003A C59A              sbi 0x18,5
 003C                   .dbline 61
 003C           ;  T0_UEN;
 003C 89B7              in R24,0x39
 003E 8D7F              andi R24,253
 0040 89BF              out 0x39,R24
 0042                   .dbline -2
 0042           L11:
 0042                   .dbline 0 ; func end
 0042 0895              ret
 0044                   .dbend
 0044                   .dbfunc e motor_right_forward _motor_right_forward fV
 0044           ;          speed -> R16
                        .even
 0044           _motor_right_forward::
 0044                   .dbline -1
 0044                   .dbline 67
 0044           ; }
 0044           ; 
 0044           ; /*************************右电机动作*****************************/
 0044           ; //右电机前进
 0044           ; void motor_right_forward(uint8 speed)
 0044           ; {
 0044                   .dbline 68
 0044           ;  motor_en1;
 0044 C19A              sbi 0x18,1
 0046                   .dbline 69
 0046           ;  motor_uen2;
 0046 C298              cbi 0x18,2
 0048                   .dbline 70
 0048           ;   if(speed!=0) //加入调速指令
 0048 0023              tst R16
 004A 21F0              breq L13
 004C                   .dbline 71
 004C           ;   {
 004C                   .dbline 72
 004C           ;    OCR2=speed;
 004C 03BD              out 0x23,R16
 004E           L15:
 004E                   .dbline 73
 004E           L16:
 004E                   .dbline 73
 004E 22B4              in R2,0x22
 0050 20FC              sbrc R2,0
 0052 FDCF              rjmp L15
 0054                   .dbline 74
 0054           L13:
 0054                   .dbline -2
 0054           L12:
 0054                   .dbline 0 ; func end
 0054 0895              ret
 0056                   .dbsym r speed 16 c
 0056                   .dbend
 0056                   .dbfunc e motor_right_backward _motor_right_backward fV
 0056           ;          speed -> R16
                        .even
 0056           _motor_right_backward::
 0056                   .dbline -1
 0056                   .dbline 79
 0056           ;    while(ASSR&(1<<TCR2UB)==1) ; //异步操作需要等待 OCR2写入完毕
 0056           ;   }
 0056           ; //T2_EN;
 0056           ; }
 0056           ; //右电机后退
 0056           ; void motor_right_backward(uint8 speed)
 0056           ; {
 0056                   .dbline 80
 0056           ;  motor_uen1;
 0056 C198              cbi 0x18,1
 0058                   .dbline 81
 0058           ;  motor_en2;
 0058 C29A              sbi 0x18,2
 005A                   .dbline 82
 005A           ;  if(speed!=0) //加入调速指令
 005A 0023              tst R16
 005C 21F0              breq L19
 005E                   .dbline 83
 005E           ;   {
 005E                   .dbline 84
 005E           ;    OCR2=speed;
 005E 03BD              out 0x23,R16
 0060           L21:
 0060                   .dbline 85
 0060           L22:
 0060                   .dbline 85
 0060 22B4              in R2,0x22
 0062 20FC              sbrc R2,0
 0064 FDCF              rjmp L21
 0066                   .dbline 86
 0066           L19:
 0066                   .dbline -2
 0066           L18:
 0066                   .dbline 0 ; func end
 0066 0895              ret
 0068                   .dbsym r speed 16 c
 0068                   .dbend
 0068                   .dbfunc e motor_right_speed_set _motor_right_speed_set fV
 0068           ;          speed -> R16
                        .even
 0068           _motor_right_speed_set::
 0068                   .dbline -1
 0068                   .dbline 91
 0068           ;    while(ASSR&(1<<TCR2UB)==1) ; //异步操作需要等待 OCR2写入完毕
 0068           ;   }
 0068           ; //T2_EN;
 0068           ; }
 0068           ; //右电机速度设定
 0068           ; void motor_right_speed_set(uint8 speed)
 0068           ; {
 0068                   .dbline 92
 0068           ;  if(speed!=0)
 0068 0023              tst R16
 006A 21F0              breq L25
 006C                   .dbline 93
 006C           ;   {
 006C                   .dbline 94
 006C           ;    OCR0=speed;
 006C 0CBF              out 0x3c,R16
 006E           L27:
 006E                   .dbline 95
 006E           L28:
 006E                   .dbline 95
 006E 22B4              in R2,0x22
 0070 20FC              sbrc R2,0
 0072 FDCF              rjmp L27
 0074                   .dbline 96
 0074           L25:
 0074                   .dbline -2
 0074           L24:
 0074                   .dbline 0 ; func end
 0074 0895              ret
 0076                   .dbsym r speed 16 c
 0076                   .dbend
 0076                   .dbfunc e motor_right_stop _motor_right_stop fV
                        .even
 0076           _motor_right_stop::
 0076                   .dbline -1
 0076                   .dbline 100
 0076           ;    while(ASSR&(1<<TCR2UB)==1) ; //异步操作需要等待 OCR2写入完毕
 0076           ;   } 
 0076           ; }
 0076           ; //右电机滑行
 0076           ; void motor_right_stop(void)
 0076           ; {
 0076                   .dbline 101
 0076           ;  motor_uen1;
 0076 C198              cbi 0x18,1
 0078                   .dbline 102
 0078           ;  motor_uen2;
 0078 C298              cbi 0x18,2
 007A                   .dbline 103
 007A           ;  T2_UEN;
 007A 89B7              in R24,0x39
 007C 8F77              andi R24,127
 007E 89BF              out 0x39,R24

⌨️ 快捷键说明

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