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

📄 proc_motoraction_sctr.lis

📁 一个直流电机的闭环控制源代码程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module PROC_MotorAction_SCTR.c
                        .area text(rom, con, rel)
 0000                   .dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\PROC_MotorAction_SCTR.c
                        .area data(ram, con, rel)
 0000                   .dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\PROC_MotorAction_SCTR.c
 0000           _Delta::
 0000                   .blkb 2
                        .area idata
 0000 0000              .word 0
                        .area data(ram, con, rel)
 0002                   .dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\PROC_MotorAction_SCTR.c
 0002           L2:
 0002                   .blkb 2
                        .area idata
 0002 0000              .word 0
                        .area data(ram, con, rel)
 0004                   .dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\PROC_MotorAction_SCTR.c
                        .area text(rom, con, rel)
 0000                   .dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\PROC_MotorAction_SCTR.c
 0000                   .dbfunc e PROC_Motor_Postion_Control _PROC_Motor_Postion_Control fc
 0000           ;           ERR3 -> R12,R13
 0000           ;           ERR1 -> R12,R13
 0000           ; dTempDCounter1 -> y+0
                        .even
 0000           _PROC_Motor_Postion_Control::
 0000 00D0              rcall push_xgsetF03C
 0002 2497              sbiw R28,4
 0004                   .dbline -1
 0004                   .dbline 75
 0004           ; /***********************************************************
 0004           ; *   函数库说明:电机闭环位置控制模块函数库                 *
 0004           ; *   版本:      v1.00                                      *
 0004           ; *   作者:      王卓然                                     *
 0004           ; *   创建日期:  2007年4月16日                              *
 0004           ; * -------------------------------------------------------- *
 0004           ; *  [支 持 库]                                              *
 0004           ; *   支持库名称:                                           *
 0004           ; *   需要版本:                                             *
 0004           ; *   支持库说明:                                           *
 0004           ; * -------------------------------------------------------- *
 0004           ; *  [版本更新]                                              *
 0004           ; *   修改:                                                 *
 0004           ; *   修改日期:                                             *
 0004           ; *   版本:                                                 *
 0004           ; * -------------------------------------------------------- *
 0004           ; *  [版本历史]                                              *
 0004           ; * -------------------------------------------------------- *
 0004           ; *  [使用说明]                                              *
 0004           ; ***********************************************************/
 0004           ; 
 0004           ; /********************
 0004           ; * 头 文 件 配 置 区 *
 0004           ; ********************/
 0004           ; # include "RD_MacroAndConst.h"
 0004           ; # include "PF_Config.h"
 0004           ; # include "PROC_MotorAction_SCTR.h"
 0004           ; 
 0004           ; /********************
 0004           ; *   系 统 宏 定 义  *
 0004           ; ********************/
 0004           ; 
 0004           ; /*------------------*
 0004           ; *   常 数 宏 定 义  *
 0004           ; *------------------*/
 0004           ; #ifndef MOTOR_P
 0004           ;     # define MOTOR_P                10             
 0004           ; #endif
 0004           ; 
 0004           ; 
 0004           ; /*------------------*
 0004           ; *   动 作 宏 定 义  *
 0004           ; *------------------*/
 0004           ; 
 0004           ; /********************
 0004           ; *    结构体定义区   *
 0004           ; ********************/
 0004           ; 
 0004           ; /********************
 0004           ; *   模块函数声明区  *
 0004           ; ********************/
 0004           ; 
 0004           ; /********************
 0004           ; *   全局函数声明区  *
 0004           ; ********************/
 0004           ; BOOL PROC_Motor_Postion_Control(void);
 0004           ; 
 0004           ; /********************
 0004           ; *   模块变量声明区  *
 0004           ; ********************/
 0004           ; 
 0004           ; /********************
 0004           ; *   全局变量声明区  *
 0004           ; ********************/
 0004           ; 
 0004           ; uint16 Delta = 0;
 0004           ; 
 0004           ; /***********************************************************
 0004           ; *   函数说明:电机位置控制函数                             *
 0004           ; *   输入:    无                                           *
 0004           ; *   输出:    无                                           *
 0004           ; *   调用函数:无                                           *
 0004           ; ***********************************************************/
 0004           ; BOOL PROC_Motor_Postion_Control(void)
 0004           ; {
 0004                   .dbline 76
 0004           ;     uint32 dTempDCounter = 0;
 0004                   .dbline 77
 0004           ;     uint16  ERR = 0;
 0004                   .dbline 80
 0004           ;     static uint16 I = 0;
 0004           ;     
 0004           ;     SAFE_CODE_PERFORMANCE
 0004 F894              cli
 0006                   .dbline 80
 0006 40900200          lds R4,_g_dNowMotorPosition+2
 000A 50900300          lds R5,_g_dNowMotorPosition+2+1
 000E 20900000          lds R2,_g_dNowMotorPosition
 0012 30900100          lds R3,_g_dNowMotorPosition+1
 0016 2882              std y+0,R2
 0018 3982              std y+1,R3
 001A 4A82              std y+2,R4
 001C 5B82              std y+3,R5
 001E                   .dbline 80
 001E                   .dbline 80
 001E 7894              sei
 0020                   .dbline 85
 0020           ;     (
 0020           ;         dTempDCounter = g_dNowMotorPosition;
 0020           ;     )
 0020           ;     
 0020           ;     if (dTempDCounter > g_dAimMotorPosition)
 0020 40900200          lds R4,_g_dAimMotorPosition+2
 0024 50900300          lds R5,_g_dAimMotorPosition+2+1
 0028 20900000          lds R2,_g_dAimMotorPosition
 002C 30900100          lds R3,_g_dAimMotorPosition+1
 0030 6880              ldd R6,y+0
 0032 7980              ldd R7,y+1
 0034 8A80              ldd R8,y+2
 0036 9B80              ldd R9,y+3
 0038 2614              cp R2,R6
 003A 3704              cpc R3,R7
 003C 4804              cpc R4,R8
 003E 5904              cpc R5,R9
 0040 08F0              brlo X6
 0042 43C0              rjmp L3
 0044           X6:
 0044           X0:
 0044                   .dbline 86
 0044           ;     {
 0044                   .dbline 87
 0044           ;         ERR = (uint16)((dTempDCounter - g_dAimMotorPosition)*MOTOR_P);
 0044 6218              sub R6,R2
 0046 7308              sbc R7,R3
 0048 8408              sbc R8,R4
 004A 9508              sbc R9,R5
 004C 44E1              ldi R20,20
 004E 50E0              ldi R21,0
 0050 60E0              ldi R22,0
 0052 70E0              ldi R23,0
 0054 9A92              st -y,R9
 0056 8A92              st -y,R8
 0058 7A92              st -y,R7
 005A 6A92              st -y,R6
 005C 8A01              movw R16,R20
 005E 9B01              movw R18,R22
 0060 00D0              rcall empy32u
 0062 6801              movw R12,R16
 0064                   .dbline 88
 0064           ;         Delta = ABS((int16)(dTempDCounter - g_dAimMotorPosition));
 0064 20900000          lds R2,_g_dAimMotorPosition
 0068 30900100          lds R3,_g_dAimMotorPosition+1
 006C 8881              ldd R24,y+0
 006E 9981              ldd R25,y+1
 0070 8219              sub R24,R2
 0072 9309              sbc R25,R3
 0074 8030              cpi R24,0
 0076 E0E0              ldi R30,0
 0078 9E07              cpc R25,R30
 007A 54F4              brge L5
 007C           X1:
 007C 8881              ldd R24,y+0
 007E 9981              ldd R25,y+1
 0080 8219              sub R24,R2
 0082 9309              sbc R25,R3
 0084 8095              com R24
 0086 9095              com R25
 0088 8F5F              subi R24,0xFF
 008A 9F4F              sbci R25,0xFF
 008C 5C01              movw R10,R24
 008E 08C0              rjmp L6
 0090           L5:
 0090 20900000          lds R2,_g_dAimMotorPosition

⌨️ 快捷键说明

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