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

📄 motor.lis

📁 设计大赛寻迹小车题目程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module motor.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\桌面\avr程序设计\循迹小车\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 9
 0000           ; /****************************************************************
 0000           ; ** 文件名:motor.c   电机驱动函数
 0000           ; ****************************************************************/
 0000           ; #include "config.h"
 0000           ; 
 0000           ; /************************左电机动作*****************************/
 0000           ; //左电机前进
 0000           ; void motor_left_forward(uint8 speed)
 0000           ; {
 0000                   .dbline 10
 0000           ;  motol_uen1;
 0000 C498              cbi 0x18,4
 0002                   .dbline 11
 0002           ;  motol_en2;
 0002 C59A              sbi 0x18,5
 0004                   .dbline 12
 0004           ;  if(speed!=0) //加入调速指令
 0004 0023              tst R16
 0006 09F0              breq L2
 0008                   .dbline 13
 0008           ;   {
 0008                   .dbline 14
 0008           ;    OCR0=speed;
 0008 0CBF              out 0x3c,R16
 000A                   .dbline 15
 000A           ;   }
 000A           L2:
 000A                   .dbline 16
 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 20
 0012           ; }
 0012           ; //左电机后退
 0012           ; void motor_left_backward(uint8 speed)
 0012           ; {
 0012                   .dbline 21
 0012           ;  motol_en1;
 0012 C49A              sbi 0x18,4
 0014                   .dbline 22
 0014           ;  motol_uen2;
 0014 C598              cbi 0x18,5
 0016                   .dbline 23
 0016           ;  if(speed!=0) //加入调速指令
 0016 0023              tst R16
 0018 09F0              breq L5
 001A                   .dbline 24
 001A           ;   {
 001A                   .dbline 25
 001A           ;    OCR0=speed;
 001A 0CBF              out 0x3c,R16
 001C                   .dbline 26
 001C           ;   }
 001C           L5:
 001C                   .dbline 27
 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 31
 0024                   .dbline 32
 0024 0023              tst R16
 0026 09F0              breq L8
 0028                   .dbline 33
 0028                   .dbline 34
 0028 0CBF              out 0x3c,R16
 002A                   .dbline 35
 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 39
 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 40
 002C           ;  motol_uen1;
 002C C498              cbi 0x18,4
 002E                   .dbline 41
 002E           ;  motol_uen2;
 002E C598              cbi 0x18,5
 0030                   .dbline 42
 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 46
 0038           ; }
 0038           ; //左电机急停
 0038           ; void motor_left_quick_stop(void)
 0038           ; {
 0038                   .dbline 47
 0038           ;  motol_en1;
 0038 C49A              sbi 0x18,4
 003A                   .dbline 48
 003A           ;  motol_en2;
 003A C59A              sbi 0x18,5
 003C                   .dbline 49
 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 55
 0044           ; }
 0044           ; 
 0044           ; /*************************右电机动作*****************************/
 0044           ; //右电机前进
 0044           ; void motor_right_forward(uint8 speed)
 0044           ; {
 0044                   .dbline 56
 0044           ;  motor_en1;
 0044 C19A              sbi 0x18,1
 0046                   .dbline 57
 0046           ;  motor_uen2;
 0046 C298              cbi 0x18,2
 0048                   .dbline 58
 0048           ;   if(speed!=0) //加入调速指令
 0048 0023              tst R16
 004A 21F0              breq L13
 004C                   .dbline 59
 004C           ;   {
 004C                   .dbline 60
 004C           ;    OCR2=speed;
 004C 03BD              out 0x23,R16
 004E           L15:
 004E                   .dbline 61
 004E           L16:
 004E                   .dbline 61
 004E           ;    while(ASSR&(1<<TCR2UB)==1) ; //异步操作需要等待 OCR2写入完毕
 004E 22B4              in R2,0x22
 0050 20FC              sbrc R2,0
 0052 FDCF              rjmp L15
 0054                   .dbline 62
 0054           ;   }
 0054           L13:
 0054                   .dbline 63
 0054           ;  T2_EN;
 0054 89B7              in R24,0x39
 0056 806C              ori R24,192
 0058 89BF              out 0x39,R24
 005A                   .dbline -2
 005A           L12:
 005A                   .dbline 0 ; func end
 005A 0895              ret
 005C                   .dbsym r speed 16 c
 005C                   .dbend
 005C                   .dbfunc e motor_right_backward _motor_right_backward fV
 005C           ;          speed -> R16
                        .even
 005C           _motor_right_backward::
 005C                   .dbline -1
 005C                   .dbline 67
 005C           ; }
 005C           ; //右电机后退
 005C           ; void motor_right_backward(uint8 speed)
 005C           ; {
 005C                   .dbline 68
 005C           ;  motor_uen1;
 005C C198              cbi 0x18,1
 005E                   .dbline 69
 005E           ;  motor_en2;
 005E C29A              sbi 0x18,2
 0060                   .dbline 70
 0060           ;  if(speed!=0) //加入调速指令
 0060 0023              tst R16
 0062 21F0              breq L19
 0064                   .dbline 71
 0064           ;   {
 0064                   .dbline 72
 0064           ;    OCR2=speed;
 0064 03BD              out 0x23,R16
 0066           L21:
 0066                   .dbline 73
 0066           L22:
 0066                   .dbline 73
 0066           ;    while(ASSR&(1<<TCR2UB)==1) ; //异步操作需要等待 OCR2写入完毕
 0066 22B4              in R2,0x22
 0068 20FC              sbrc R2,0
 006A FDCF              rjmp L21
 006C                   .dbline 74
 006C           ;   }
 006C           L19:
 006C                   .dbline 75
 006C           ;  T2_EN;
 006C 89B7              in R24,0x39
 006E 806C              ori R24,192
 0070 89BF              out 0x39,R24
 0072                   .dbline -2
 0072           L18:
 0072                   .dbline 0 ; func end
 0072 0895              ret
 0074                   .dbsym r speed 16 c
 0074                   .dbend
 0074                   .dbfunc e motor_right_speed_set _motor_right_speed_set fV
 0074           ;          speed -> R16
                        .even
 0074           _motor_right_speed_set::
 0074                   .dbline -1
 0074                   .dbline 79
 0074           ; }
 0074           ; //右电机速度设定
 0074           ; void motor_right_speed_set(uint8 speed)
 0074           ; {
 0074                   .dbline 80
 0074           ;  if(speed!=0)
 0074 0023              tst R16
 0076 21F0              breq L25
 0078                   .dbline 81
 0078           ;   {
 0078                   .dbline 82
 0078           ;    OCR0=speed;
 0078 0CBF              out 0x3c,R16
 007A           L27:
 007A                   .dbline 83
 007A           L28:
 007A                   .dbline 83
 007A 22B4              in R2,0x22
 007C 20FC              sbrc R2,0
 007E FDCF              rjmp L27
 0080                   .dbline 84
 0080           L25:
 0080                   .dbline -2
 0080           L24:
 0080                   .dbline 0 ; func end
 0080 0895              ret
 0082                   .dbsym r speed 16 c
 0082                   .dbend
 0082                   .dbfunc e motor_right_stop _motor_right_stop fV
                        .even
 0082           _motor_right_stop::
 0082                   .dbline -1
 0082                   .dbline 88
 0082           ;    while(ASSR&(1<<TCR2UB)==1) ; //异步操作需要等待 OCR2写入完毕
 0082           ;   } 
 0082           ; }
 0082           ; //右电机滑行
 0082           ; void motor_right_stop(void)
 0082           ; {
 0082                   .dbline 89
 0082           ;  motor_uen1;
 0082 C198              cbi 0x18,1
 0084                   .dbline 90
 0084           ;  motor_uen2;
 0084 C298              cbi 0x18,2
 0086                   .dbline 91
 0086           ;  T2_UEN;
 0086 89B7              in R24,0x39
 0088 8F77              andi R24,127
 008A 89BF              out 0x39,R24
 008C                   .dbline -2
 008C           L30:

⌨️ 快捷键说明

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