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

📄 ex_support.s

📁 一个直流电机的闭环控制源代码程序
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module EX_Support.c
	.area text(rom, con, rel)
	.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\EX_Support.c
	.area data(ram, con, rel)
	.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\EX_Support.c
_s_wSystemDelayTimerCounter:
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\EX_Support.c
_g_wSystemTimer::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\EX_Support.c
_g_dNowMotorPosition::
	.blkb 4
	.area idata
	.word 65535,32767
	.area data(ram, con, rel)
	.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\EX_Support.c
_g_dAimMotorPosition::
	.blkb 4
	.area idata
	.word 65535,32767
	.area data(ram, con, rel)
	.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\EX_Support.c
_g_dGoDistance::
	.blkb 4
	.area idata
	.word 0,0
	.area data(ram, con, rel)
	.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\EX_Support.c
_g_bIfMarkDistance::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\EX_Support.c
	.area text(rom, con, rel)
	.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\EX_Support.c
	.dbfunc e Driver_INIT _Driver_INIT fV
	.even
_Driver_INIT::
	.dbline -1
	.dbline 95
; /***********************************************************
; *   函数库说明:底层硬件初始化驱动函数库                   *
; *   版本:                                                 *
; *   作者:                                                 *
; *   创建日期:                                             *
; * -------------------------------------------------------- *
; *  [硬件说明]                                              *
; *   处理器:                                               *
; *   系统时钟:                                             *
; * -------------------------------------------------------- *
; *  [支 持 库]                                              *
; *   支持库名称:PF_Config.h                                *
; *   需要版本:  -----                                      *
; *   声明库说明:硬件平台配置声明库                         *
; *                                                          *
; *   支持库名称:EX_Support.h                               *
; *   需要版本:  -----                                      *
; *   声明库说明:底层硬件初始化驱动声明库                   *
; *                                                          *
; *   支持库名称:LIB_Config.h                               *
; *   需要版本:  -----                                      *
; *   支持库说明:库函数配置声明库                           *
; * -------------------------------------------------------- *
; *  [版本更新]                                              *
; *   修改:                                                 *
; *   修改日期:                                             *
; *   版本:                                                 *
; * -------------------------------------------------------- *
; *  [版本历史]                                              *
; * -------------------------------------------------------- *
; *  [使用说明]                                              *
; ***********************************************************/
; 
; /********************
; * 头 文 件 配 置 区 *
; ********************/
; # include "PF_Config.h"
; # include "EX_Support.h"
; # include "LIB_Config.h"
; # include "PROC_Communication.h"
; 
; /********************
; *   系 统 宏 定 义  *
; ********************/
; 
; /*------------------*
; *   常 数 宏 定 义  *
; *------------------*/
; #ifndef MM_K
;     # define MM_K       (3840.0 / (PI * 61))
; #endif
; 
; /*------------------*
; *   动 作 宏 定 义  *
; *------------------*/
; 
; /********************
; *  模块结构体定义区 *
; ********************/
; 
; /********************
; *   函 数 声 明 区  *
; ********************/
; void Delay_MS(uint16 wTime);
; void Insert_Timer0_OVF_ISR_Code(void);
; void Driver_INIT(void);
; 
; /********************
; *   模块函数声明区  *
; ********************/
; 
; 
; /********************
; *   模块变量声明区  *
; ********************/
; static uint16 s_wSystemDelayTimerCounter = 0;
; 
; /********************
; *   全局变量声明区  *
; ********************/
; uint16 g_wSystemTimer = 0;
; 
; uint32 g_dNowMotorPosition = 0x7fffffff;
; uint32 g_dAimMotorPosition = 0x7fffffff;
; uint32 g_dGoDistance = 0;
; BOOL   g_bIfMarkDistance = FALSE;
; 
; /***********************************************************
; *   函数说明:软件驱动初始化函数                           *
; *   输入:    无                                           *
; *   输出:    无                                           *
; *   调用函数:无                                           *
; ***********************************************************/
; void Driver_INIT(void)
; {
	.dbline 97
;     //*在这里插入你的各类软件驱动初始化代码*//
;     CMOS_INIT();
	rcall _CMOS_INIT
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Delay_MS _Delay_MS fV
;          wTime -> R16,R17
	.even
_Delay_MS::
	.dbline -1
	.dbline 108
; }
; 
; 
; /***********************************************************
; *   函数说明:系统毫秒延时函数                             *
; *   输入:    需要延时的时间长度                           *
; *   输出:    无                                           *
; *   调用函数:无                                           *
; ***********************************************************/
; void Delay_MS(uint16 wTime)
; {
	.dbline 109
;     s_wSystemDelayTimerCounter = wTime;
	sts _s_wSystemDelayTimerCounter+1,R17
	sts _s_wSystemDelayTimerCounter,R16
L3:
	.dbline 111
;     
;     while(s_wSystemDelayTimerCounter);
L4:
	.dbline 111
	lds R2,_s_wSystemDelayTimerCounter
	lds R3,_s_wSystemDelayTimerCounter+1
	tst R2
	brne L3
	tst R3
	brne L3
X0:
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbsym r wTime 16 i
	.dbend
	.area data(ram, con, rel)
	.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\EX_Support.c
L7:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\EX_Support.c
	.area text(rom, con, rel)
	.dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\EX_Support.c
	.dbfunc e Insert_Timer0_OVF_ISR_Code _Insert_Timer0_OVF_ISR_Code fV
	.dbsym s s_bIfSendSuccess L7 c
; nTempDistance1 -> R12,R13
	.even
_Insert_Timer0_OVF_ISR_Code::
	rcall push_xgsetF0FC
	.dbline -1
	.dbline 121
; }
; 
; /***********************************************************
; *   函数说明:定时器0中断处理程序代码插入函数              *
; *   输入:    无                                           *
; *   输出:    无                                           *
; *   调用函数:无                                           *
; ***********************************************************/
; void Insert_Timer0_OVF_ISR_Code(void)
; {
	.dbline 125
;     //uint8 Temp = 0;
;     //uint8 n = 0;
;     //uint8 Bytes[sizeof(CMD_FRAME)+1];
;     int16 nTempDistance = 0;
	.dbline 129
;     static BOOL s_bIfSendSuccess = FALSE;
;     //static uint8 Counter = 0;
;     
;     g_wSystemTimer++;
	lds R24,_g_wSystemTimer
	lds R25,_g_wSystemTimer+1
	adiw R24,1
	sts _g_wSystemTimer+1,R25
	sts _g_wSystemTimer,R24
	.dbline 131
; 
;     if (s_wSystemDelayTimerCounter)
	lds R2,_s_wSystemDelayTimerCounter
	lds R3,_s_wSystemDelayTimerCounter+1
	tst R2
	brne X1
	tst R3
	breq L8
X1:
	.dbline 132
;     {
	.dbline 133
;         s_wSystemDelayTimerCounter--;
	movw R24,R2
	sbiw R24,1
	sts _s_wSystemDelayTimerCounter+1,R25
	sts _s_wSystemDelayTimerCounter,R24
	.dbline 134
;     }
L8:
	.dbline 136
;     
;     if (!(g_wSystemTimer & 0x01ff))
	lds R24,_g_wSystemTimer
	lds R25,_g_wSystemTimer+1
	andi R25,1
	cpi R24,0
	cpc R24,R25
	brne L10
X2:
	.dbline 137
;     {
	.dbline 138
;         PORTC ^= BIT(PC0);
	ldi R24,1
	in R2,0x15
	eor R2,R24
	out 0x15,R2
	.dbline 155
;         /*
;         Bytes[0] = 0xAA;
;         Counter = MIN(Counter + 1,20);
;         TYPE_CONVERSION(&Bytes[1],CMD_FRAME).IfBrake = FALSE;
;         TYPE_CONVERSION(&Bytes[1],CMD_FRAME).Speed = Counter;
;         TYPE_CONVERSION(&Bytes[1],CMD_FRAME).Distance = 0;
;         
;         Temp = 0;
;         for (n = 0;n < UBOUND(Bytes);n++)
;         {
;             SERIAL_OUT(Bytes[n]);
;             Temp ^= Bytes[n];
;         }
;         
;         SERIAL_OUT(Temp);
;         */
;     }
L10:
	.dbline 172
;     /*
;     if (!(g_wSystemTimer & 0x0f))
;     {
;         REFRESH_SP027
;         g_dAimMotorPosition++;
;     }
;     Set_DISP_BUFF
;                 (
;                     SET_DWORD_DIV_8(g_dNowMotorPosition).BYTECL,
;                     SET_DWORD_DIV_8(g_dNowMotorPosition).BYTEBH,
;                     SET_DWORD_DIV_8(g_dNowMotorPosition).BYTEBL,
;                     SET_DWORD_DIV_8(g_dNowMotorPosition).BYTEAH,
;                     SET_DWORD_DIV_8(g_dNowMotorPosition).BYTEAL
;                 );
;     */
;     
;     if (!(g_wSystemTimer & 0x03))
	lds R24,_g_wSystemTimer
	lds R25,_g_wSystemTimer+1
	andi R24,3
	andi R25,0
	cpi R24,0
	cpc R24,R25
	brne L12
X3:
	.dbline 173
;     {
	.dbline 174
;         REFRESH_SP027
	rcall _LCDSP027_refresh_DISP_BUFF
	.dbline 175
;     }
L12:
	.dbline 177
;  
;     if (!(g_wSystemTimer & 0x0f))
	lds R24,_g_wSystemTimer
	lds R25,_g_wSystemTimer+1
	andi R24,15
	andi R25,0
	cpi R24,0
	cpc R24,R25
	breq X23
	rjmp L14
X23:
X4:
	.dbline 178
;     {
	.dbline 179
;         if ((g_bIfBrake) || (g_wDistance == 0))
	lds R2,_g_bIfBrake
	tst R2
	brne L18
X5:
	lds R2,_g_wDistance
	lds R3,_g_wDistance+1
	tst R2
	breq X24
	rjmp L16
X24:
	tst R3
	breq X25
	rjmp L16
X25:
X6:
L18:
	.dbline 180
;         {
	.dbline 181
;             if ((g_wDistance == 0) && (!g_bIfBrake))
	lds R2,_g_wDistance
	lds R3,_g_wDistance+1
	tst R2
	brne L19
	tst R3
	brne L19
X7:
	lds R2,_g_bIfBrake
	tst R2
	brne L19
X8:
	.dbline 182
;             {
	.dbline 183
;                 g_dAimMotorPosition += g_cSpeed;
	lds R2,_g_cSpeed
	clr R3
	sbrc R2,7
	com R3
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	lds R8,_g_dAimMotorPosition+2
	lds R9,_g_dAimMotorPosition+2+1
	lds R6,_g_dAimMotorPosition
	lds R7,_g_dAimMotorPosition+1
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	sts _g_dAimMotorPosition+1,R7
	sts _g_dAimMotorPosition,R6
	sts _g_dAimMotorPosition+2+1,R9
	sts _g_dAimMotorPosition+2,R8
	.dbline 184
;             }
	rjmp L20
L19:
	.dbline 186
;             else
;             {
	.dbline 187
;                 g_dAimMotorPosition = g_dNowMotorPosition;
	lds R4,_g_dNowMotorPosition+2
	lds R5,_g_dNowMotorPosition+2+1
	lds R2,_g_dNowMotorPosition
	lds R3,_g_dNowMotorPosition+1
	sts _g_dAimMotorPosition+1,R3
	sts _g_dAimMotorPosition,R2
	sts _g_dAimMotorPosition+2+1,R5
	sts _g_dAimMotorPosition+2,R4
	.dbline 188
;             }
L20:
	.dbline 189
;             g_dGoDistance = 0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _g_dGoDistance+1,R21
	sts _g_dGoDistance,R20
	sts _g_dGoDistance+2+1,R23
	sts _g_dGoDistance+2,R22
	.dbline 190
;             g_bIfMarkDistance = FALSE;
	clr R2

⌨️ 快捷键说明

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