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

📄 motorctr.lst

📁 一个直流电机的闭环控制源代码程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0273)          && (UARTTxBuffCounter == SERIAL_TX_BUFF_SIZE))
(0274)         {
(0275)             SEI();
(0276)             return FALSE;
(0277)         }
(0278)         UARTTxBuff[UARTTxBuffTail++] = Data;
(0279)     
(0280)         UARTTxBuffCounter ++;
(0281)     
(0282)         if (UARTTxBuffTail == SERIAL_TX_BUFF_SIZE)
(0283)         {
(0284)             UARTTxBuffTail = 0;
(0285)         }
(0286) 	)	
(0287)     return TRUE;
     25C E001      LDI	R16,1
     25D 9508      RET
_PROC_Serial_Transmitter:
  cTransmitByte        --> Y,+0
     25E 9721      SBIW	R28,1
(0288) } 
(0289) 
(0290) #ifdef _USE_SERIAL_TX_TRANSMITTER_PROC
(0291) /***********************************************************
(0292) *   函数说明:串行发送进程                                 *
(0293) *   输入:    无                                           *
(0294) *   输出:    是否继续执行                                 *
(0295) *   调用函数:UARTgetDataFromTxBuff()                      *
(0296) ***********************************************************/
(0297) BOOL PROC_Serial_Transmitter(void)
(0298) {
(0299)     uint8 cTransmitByte = 0;
     25F 2422      CLR	R2
     260 8228      STD	Y+0,R2
(0300)     
(0301)     SAFE_CODE_PERFORMANCE
     261 94F8      BCLR	7
     262 9020 0087 LDS	R2,g_bIfSerialTransmitCompleted
     264 2022      TST	R2
     265 F061      BEQ	0x0272
     266 018E      MOVW	R16,R28
     267 DF4D      RCALL	_UARTgetDataFromTxBuff
     268 2300      TST	R16
     269 F419      BNE	0x026D
     26A 9478      BSET	7
     26B E001      LDI	R16,1
     26C C007      RJMP	0x0274
     26D 2422      CLR	R2
     26E 9220 0087 STS	g_bIfSerialTransmitCompleted,R2
     270 8028      LDD	R2,Y+0
     271 B82C      OUT	0x0C,R2
     272 9478      BSET	7
(0302)     (
(0303)         if (g_bIfSerialTransmitCompleted)
(0304)         {
(0305)             if (!UARTgetDataFromTxBuff(&cTransmitByte))
(0306)             {
(0307)                 SEI();
(0308)                 SERIAL_DISABLE_WRITE
(0309)                 return TRUE;
(0310)             }
(0311)             else
(0312)             {
(0313)                 SERIAL_ENABLE_WRITE
(0314)             }
(0315)             g_bIfSerialTransmitCompleted = FALSE;
(0316)             UDR_PORT = cTransmitByte;
(0317)         }
(0318)     )
(0319)     return TRUE;
     273 E001      LDI	R16,1
     274 9621      ADIW	R28,1
     275 9508      RET
FILE: H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\HD_Support.c
(0001) /***********************************************************
(0002) *   函数库说明:底层硬件初始化函数库                       *
(0003) *   版本:                                                 *
(0004) *   作者:                                                 *
(0005) *   创建日期:                                             *
(0006) * -------------------------------------------------------- *
(0007) *  [硬件说明]                                              *
(0008) *   处理器:                                               *
(0009) *   系统时钟:                                             *
(0010) * -------------------------------------------------------- *
(0011) *  [支 持 库]                                              *
(0012) *   支持库名称:PF_Config.h                                *
(0013) *   需要版本:  -----                                      *
(0014) *   声明库说明:硬件平台配置声明库                         *
(0015) *                                                          *
(0016) *   支持库名称:HD_Support.h                               *
(0017) *   需要版本:  -----                                      *
(0018) *   声明库说明:底层硬件初始化声明库                       *
(0019) * -------------------------------------------------------- *
(0020) *  [版本更新]                                              *
(0021) *   修改:                                                 *
(0022) *   修改日期:                                             *
(0023) *   版本:                                                 *
(0024) * -------------------------------------------------------- *
(0025) *  [版本历史]                                              *
(0026) * -------------------------------------------------------- *
(0027) *  [使用说明]                                              *
(0028) ***********************************************************/
(0029) 
(0030) /********************
(0031) * 头 文 件 配 置 区 *
(0032) ********************/
(0033) # include "PF_Config.h"
(0034) # include "HD_Support.h"
(0035) # include "LIB_Config.h"
(0036) 
(0037) /********************
(0038) *   系 统 宏 定 义  *
(0039) ********************/
(0040) # pragma interrupt_handler Timer0_OVF_ISR:iv_TIMER0_OVF
(0041) # pragma interrupt_handler USART0_RX_ISR:iv_USART0_RXC
(0042) # pragma interrupt_handler USART0_TX_ISR:iv_USART0_TXC
(0043) # pragma interrupt_handler INT1_ISR:iv_INT1
(0044) # pragma interrupt_handler INT0_ISR:iv_INT0
(0045) 
(0046) /*------------------*
(0047) *   常 数 宏 定 义  *
(0048) *------------------*/
(0049) 
(0050) /*------------------*
(0051) *   动 作 宏 定 义  *
(0052) *------------------*/
(0053) #ifndef INSERT_TIMER0_OVF_ISR_CODE
(0054)     # define INSERT_TIMER0_OVF_ISR_CODE
(0055) #endif
(0056) 
(0057) #ifndef INSERT_USART0_RX_ISR_CODE
(0058)     # define INSERT_USART0_RX_ISR_CODE
(0059) #endif
(0060) 
(0061) #ifndef INSERT_USART0_TX_ISR_CODE
(0062)     # define INSERT_USART0_TX_ISR_CODE
(0063) #endif
(0064) 
(0065) #ifndef INSERT_INT0_ISR_CODE
(0066)     # define INSERT_INT0_ISR_CODE
(0067) #endif
(0068) 
(0069) #ifndef INSERT_INT1_ISR_CODE
(0070)     # define INSERT_INT1_ISR_CODE
(0071) #endif
(0072) /********************
(0073) *  模块结构体定义区 *
(0074) ********************/
(0075) 
(0076) /********************
(0077) *   函 数 声 明 区  *
(0078) ********************/
(0079) void Device_INIT(void);
(0080) 
(0081) /********************
(0082) *   模块函数声明区  *
(0083) ********************/
(0084) static void Port_INIT(void);
(0085) static void Timer0_INIT(void);
(0086) static void USART0_INIT(void);
(0087) static void Timer1_INIT(void);
(0088) static void Extend_INT_INIT(void);
(0089) 
(0090) /********************
(0091) *   模块变量声明区  *
(0092) ********************/
(0093) 
(0094) /********************
(0095) *   全局变量声明区  *
(0096) ********************/
(0097) 
(0098) 
(0099) /***********************************************************
(0100) *   函数说明:系统硬件初始化函数                           *
(0101) *   输入:    无                                           *
(0102) *   输出:    无                                           *
(0103) *   调用函数:Port_INIT()   Timer0_INIT()                  *
(0104) ***********************************************************/
(0105) void Device_INIT(void)
(0106) {
(0107)     Port_INIT();
_Device_INIT:
     276 D0F3      RCALL	HD_Support.c:Port_INIT
(0108)     Timer0_INIT();
     277 D14F      RCALL	HD_Support.c:Timer0_INIT
(0109)     USART0_INIT();
     278 D186      RCALL	HD_Support.c:USART0_INIT
(0110)     Timer1_INIT();
     279 D142      RCALL	HD_Support.c:Timer1_INIT
(0111)     Extend_INT_INIT();
     27A D003      RCALL	_Extend_INT_INIT
(0112)     
(0113)     TIMSK = BIT(TOIE0);                                     //启动定时期0溢出中断资源
     27B E081      LDI	R24,1
     27C BF89      OUT	0x39,R24
     27D 9508      RET
(0114) }
(0115) 
(0116) /***********************************************************
(0117) *   函数说明:外中断初始化函数                             *
(0118) *   输入:    无                                           *
(0119) *   输出:    无                                           *
(0120) *   调用函数:无                                           *
(0121) ***********************************************************/
(0122) static void Extend_INT_INIT(void)
(0123) {
(0124)    SET_INT0_RAISING_EDGE
_Extend_INT_INIT:
HD_Support.c:Extend_INT_INIT:
     27E B785      IN	R24,0x35
     27F 7F8C      ANDI	R24,0xFC
     280 BF85      OUT	0x35,R24
     281 B785      IN	R24,0x35
     282 6083      ORI	R24,3
     283 BF85      OUT	0x35,R24
(0125)    SET_INT1_FALLING_EDGE
     284 B785      IN	R24,0x35
     285 7F83      ANDI	R24,0xF3
     286 BF85      OUT	0x35,R24
     287 B785      IN	R24,0x35
     288 6088      ORI	R24,0x8
     289 BF85      OUT	0x35,R24
(0126)    GICR |= BIT(INT0)|BIT(INT1);
     28A B78B      IN	R24,0x3B
     28B 6C80      ORI	R24,0xC0
     28C BF8B      OUT	0x3B,R24
     28D 9508      RET
_INT0_ISR:
     28E 920A      ST	R0,-Y
     28F 921A      ST	R1,-Y
     290 922A      ST	R2,-Y
     291 923A      ST	R3,-Y
     292 924A      ST	R4,-Y
     293 925A      ST	R5,-Y
     294 930A      ST	R16,-Y
     295 931A      ST	R17,-Y
     296 932A      ST	R18,-Y
     297 933A      ST	R19,-Y
     298 938A      ST	R24,-Y
     299 939A      ST	R25,-Y
     29A 93AA      ST	R26,-Y
     29B 93BA      ST	R27,-Y
     29C B60F      IN	R0,0x3F
     29D 920A      ST	R0,-Y
(0127) }
(0128) 
(0129) /***********************************************************
(0130) *   函数说明:外中断0中断处理函数                          *
(0131) *   输入:    无                                           *
(0132) *   输出:    无                                           *
(0133) *   调用函数:INSERT_INT0_ISR_CODE                         *
(0134) ***********************************************************/
(0135) void INT0_ISR(void)
(0136) {
(0137)     INSERT_INT0_ISR_CODE
     29E B380      IN	R24,0x10
     29F 9586      LSR	R24
     2A0 9586      LSR	R24
     2A1 7081      ANDI	R24,1
     2A2 B390      IN	R25,0x10
     2A3 9596      LSR	R25
     2A4 9596      LSR	R25
     2A5 9596      LSR	R25
     2A6 7091      ANDI	R25,1
     2A7 1798      CP	R25,R24
     2A8 F4C9      BNE	0x02C2
     2A9 E081      LDI	R24,1
     2AA E090      LDI	R25,0
     2AB E0A0      LDI	R26,0
     2AC E0B0      LDI	R27,0
     2AD 9040 008E LDS	R4,g_dNowMotorPosition+2
     2AF 9050 008F LDS	R5,g_dNowMotorPosition+3
     2B1 9020 008C LDS	R2,g_dNowMotorPosition
     2B3 9030 008D LDS	R3,g_dNowMotorPosition+1
     2B5 1A28      SUB	R2,R24
     2B6 0A39      SBC	R3,R25
     2B7 0A4A      SBC	R4,R26
     2B8 0A5B      SBC	R5,R27
     2B9 9230 008D STS	g_dNowMotorPosition+1,R3
     2BB 9220 008C STS	g_dNowMotorPosition,R2
     2BD 9250 008F STS	g_dNowMotorPosition+3,R5
     2BF 9240 008E STS	g_dNowMotorPosition+2,R4
     2C1 C018      RJMP	0x02DA
     2C2 E081      LDI	R24,1
     2C3 E090      LDI	R25,0
     2C4 E0A0      LDI	R26,0
     2C5 E0B0      LDI	R27,0
     2C6 9040 008E LDS	R4,g_dNowMotorPosition+2
     2C8 9050 008F LDS	R5,g_dNowMotorPosition+3
     2CA 9020 008C LDS	R2,g_dNowMotorPosition
     2CC 9030 008D LDS	R3,g_dNowMotorPosition+1
     2CE 0E28      ADD	R2,R24
     2CF 1E39      ADC	R3,R25
     2D0 1E4A      ADC	R4,R26
     2D1 1E5B      ADC	R5,R27
     2D2 9230 008D STS	g_dNowMotorPosition+1,R3
     2D4 9220 008C STS	g_dNowMotorPosition,R2
     2D6 9250 008F STS	g_dNowMotorPosition+3,R5
     2D8 9240 008E STS	g_dNowMotorPosition+2,R4
     2DA B785      IN	R24,0x35
     2DB 7083      ANDI	R24,3
     2DC 3083      CPI	R24,3
     2DD F439      BNE	0x02E5
     2DE B785      IN	R24,0x35
     2DF 7F8C      ANDI	R24,0xFC
     2E0 BF85      OUT	0x35,R24
     2E1 B785      IN	R24,0x35
     2E2 6082      ORI	R24,2
     2E3 BF85      OUT	0x35,R24
     2E4 C006      RJMP	0x02EB
     2E5 B785      IN	R24,0x35
     2E6 7F8C      ANDI	R24,0xFC
     2E7 BF85      OUT	0x35,R24
     2E8 B785      IN	R24,0x35
     2E9 6083      ORI	R24,3
     2EA BF85      OUT	0x35,R24
     2EB 9009      LD	R0,Y+
     2EC BE0F      OUT	0x3F,R0
     2ED 91B9      LD	R27,Y+
     2EE 91A9      LD	R26,Y+
     2EF 9199      LD	R25,Y+
     2F0 9189      LD	R24,Y+
     2F1 9139      LD	R19,Y+
     2F2 9129      LD	R18,Y+
     2F3 9119      LD	R17,Y+
     2F4 9109      LD	R16,Y+
     2F5 9059      LD	R5,Y+
     2F6 9049      LD	R4,Y+
     2F7 9039      LD	R3,Y+
     2F8 9029      LD	R2,Y+
     2F9 9019      LD	R1,Y+
     2FA 9009      LD	R0,Y+
     2FB 9518      RETI
_INT1_ISR:
     2FC 920A      ST	R0,-Y
     2FD 921A      ST	R1,-Y
     2FE 922A      ST	R2,-Y
     2FF 923A      ST	R3,-Y
     300 924A      ST	R4,-Y
     301 925A      ST	R5,-Y
     302 930A      ST	R16,-Y
     303 931A      ST	R17,-Y

⌨️ 快捷键说明

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