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

📄 motorctr.lst

📁 一个直流电机的闭环控制源代码程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
__start:
__text_start:
      3E E5CF      LDI	R28,0x5F
      3F E0D4      LDI	R29,4
      40 BFCD      OUT	0x3D,R28
      41 BFDE      OUT	0x3E,R29
      42 54C0      SUBI	R28,0x40
      43 40D0      SBCI	R29,0
      44 EA0A      LDI	R16,0xAA
      45 8308      STD	Y+0,R16
      46 2400      CLR	R0
      47 EAE9      LDI	R30,0xA9
      48 E0F0      LDI	R31,0
      49 E011      LDI	R17,1
      4A 3BE5      CPI	R30,0xB5
      4B 07F1      CPC	R31,R17
      4C F011      BEQ	0x004F
      4D 9201      ST	R0,Z+
      4E CFFB      RJMP	0x004A
      4F 8300      STD	Z+0,R16
      50 E3E2      LDI	R30,0x32
      51 E0F0      LDI	R31,0
      52 E6A0      LDI	R26,0x60
      53 E0B0      LDI	R27,0
      54 E010      LDI	R17,0
      55 E000      LDI	R16,0
      56 BF0B      OUT	0x3B,R16
      57 37EB      CPI	R30,0x7B
      58 07F1      CPC	R31,R17
      59 F021      BEQ	0x005E
      5A 95C8      LPM
      5B 9631      ADIW	R30,1
      5C 920D      ST	R0,X+
      5D CFF9      RJMP	0x0057
      5E D7A9      RCALL	_main
_exit:
      5F CFFF      RJMP	_exit
FILE: H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\RD_UseLCDSP027.c
(0001) /***********************************************************
(0002) *   函数库说明:SP-027液晶段码显示器驱动函数库             *
(0003) *   版本:      v1.00                                      *
(0004) *   作者:      王卓然                                     *
(0005) *   创建日期:  2006年5月11日                              *
(0006) * -------------------------------------------------------- *
(0007) *  [支 持 库]                                              *
(0008) *   支持库名称:RD_UseLCDPS027.h                           *
(0009) *   需要版本:  v1.00                                      *
(0010) *   支持库说明:SP-027液晶段码显示器驱动函数库             *
(0011) * -------------------------------------------------------- *
(0012) *  [版本更新]                                              *
(0013) *   修改:                                                 *
(0014) *   修改日期:                                             *
(0015) *   版本:                                                 *
(0016) * -------------------------------------------------------- *
(0017) *  [版本历史]                                              *
(0018) * -------------------------------------------------------- *
(0019) *  [说    明]                                              *
(0020) ***********************************************************/
(0021) 
(0022) /********************
(0023) * 头 文 件 配 置 区 *
(0024) ********************/
(0025) # include "RD_UseLCDSP027.h"
(0026) 
(0027) /********************
(0028) *   系 统 宏 定 义  *
(0029) ********************/
(0030) 
(0031) /*------------------*
(0032) * 硬 件 连 接 定 义 *
(0033) *------------------*/
(0034) #ifndef SP027_DI
(0035)     #error None defined SP027 PIN: DI
(0036) #endif
(0037) #ifndef SP027_CLK
(0038)     #error None defined SP027 PIN: CLK  
(0039) #endif
(0040) 
(0041) /********************
(0042) *   模块变量声明区  *
(0043) ********************/
(0044) static unsigned char LCDSP027_DispBuff[5] = {0,0,0,0,0};
(0045) static unsigned char LCDSP027_DISPCODE[] = {0x09,0xcf,0x91,0x85,0x47,0x25,0x21,0x8f,0x01,0x05,
(0046)                             0x03,0x61,0x39,0xc1,0x31,0x33,0x29,0x43,0x7b,0xc9};
(0047) 
(0048) /********************
(0049) *   函 数 声 明 区  *
(0050) ********************/                            
(0051) void Set_DISP_BUFF(char a,char b,char c,char d,char e);
(0052) void LCDSP027_Clear(void);
(0053) void LCDSP027_refresh_DISP_BUFF(void);                            
(0054) /********************
(0055) *   模块函数声明区  *
(0056) ********************/
(0057) 
(0058) static void LCDSP027_Send_Data(char Data);
(0059) 
(0060) /***********************************************************
(0061) *   函数说明:显示缓冲区设置函数                           *
(0062) *   输入:    要显示的5个数字量(BCD)                       *
(0063) *   输出:    无                                           *
(0064) *   调用函数:LCDSP027_refresh_DISP_BUFF()                 *
(0065) ***********************************************************/
(0066) void Set_DISP_BUFF(char a,char b,char c,char d,char e)
(0067) {
(0068)     LCDSP027_DispBuff[0] = a;
_Set_DISP_BUFF:
  e                    --> Y,+4
  d                    --> Y,+2
  c                    --> Y,+0
  b                    --> R18
  a                    --> R16
      60 9300 0060 STS	0x0060,R16
(0069)     LCDSP027_DispBuff[1] = b;
      62 9320 0061 STS	0x0061,R18
(0070)     LCDSP027_DispBuff[2] = c;
      64 8008      LDD	R0,Y+0
      65 9200 0062 STS	0x0062,R0
(0071)     LCDSP027_DispBuff[3] = d;
      67 800A      LDD	R0,Y+2
      68 9200 0063 STS	0x0063,R0
(0072)     LCDSP027_DispBuff[4] = e;
      6A 800C      LDD	R0,Y+4
      6B 9200 0064 STS	0x0064,R0
      6D 9508      RET
_LCDSP027_refresh_DISP_BUFF:
  n1                   --> R20
      6E 934A      ST	R20,-Y
(0073) }
(0074) 
(0075) /***********************************************************
(0076) *   函数说明:刷新显示缓冲区函数                           *
(0077) *   输入:    无                                           *
(0078) *   输出:    无                                           *
(0079) *   调用函数:LCDSP027_Send_Data()                         *
(0080) ***********************************************************/
(0081) void LCDSP027_refresh_DISP_BUFF(void)
(0082) {
(0083)     char n = 0;
(0084)     LCDSP027_Clear();
      6F D01B      RCALL	_LCDSP027_Clear
(0085)     for (n = 0;n<5;n++)
      70 2744      CLR	R20
      71 C00F      RJMP	0x0081
(0086)     {
(0087)         LCDSP027_Send_Data(LCDSP027_DISPCODE[LCDSP027_DispBuff[n]]);
      72 E680      LDI	R24,0x60
      73 E090      LDI	R25,0
      74 2FE4      MOV	R30,R20
      75 27FF      CLR	R31
      76 0FE8      ADD	R30,R24
      77 1FF9      ADC	R31,R25
      78 81E0      LDD	R30,Z+0
      79 27FF      CLR	R31
      7A E685      LDI	R24,0x65
      7B E090      LDI	R25,0
      7C 0FE8      ADD	R30,R24
      7D 1FF9      ADC	R31,R25
      7E 8100      LDD	R16,Z+0
      7F D01A      RCALL	RD_UseLCDSP027.c:LCDSP027_Send_Data
      80 9543      INC	R20
      81 3045      CPI	R20,5
      82 F378      BCS	0x0072
(0088)     }
(0089)     SP027_CLK = LOW;
      83 B385      IN	R24,0x15
      84 7D8F      ANDI	R24,0xDF
      85 BB85      OUT	0x15,R24
(0090)     SP027_CLK = HIGH;
      86 B385      IN	R24,0x15
      87 6280      ORI	R24,0x20
      88 BB85      OUT	0x15,R24
      89 9149      LD	R20,Y+
      8A 9508      RET
(0091) }
(0092) 
(0093) /***********************************************************
(0094) *   函数说明:清屏函数                                     *
(0095) *   输入:    无                                           *
(0096) *   输出:    无                                           *
(0097) *   调用函数:无                                           *
(0098) ***********************************************************/
(0099) void LCDSP027_Clear(void)
(0100) {
(0101)     char n = 0;
(0102)     for (n = 0;n<40;n++)
_LCDSP027_Clear:
  n1                   --> R16
      8B 2700      CLR	R16
      8C C00A      RJMP	0x0097
(0103)     {
(0104)         SP027_CLK = LOW;
      8D B385      IN	R24,0x15
      8E 7D8F      ANDI	R24,0xDF
      8F BB85      OUT	0x15,R24
(0105)         SP027_DI = HIGH;
      90 B385      IN	R24,0x15
      91 6180      ORI	R24,0x10
      92 BB85      OUT	0x15,R24
(0106)         SP027_CLK = HIGH;
      93 B385      IN	R24,0x15
      94 6280      ORI	R24,0x20
      95 BB85      OUT	0x15,R24
      96 9503      INC	R16
      97 3208      CPI	R16,0x28
      98 F3A0      BCS	0x008D
      99 9508      RET
RD_UseLCDSP027.c:LCDSP027_Send_Data:
_LCDSP027_Send_Data:
  n1                   --> R20
  Data                 --> R10
      9A 92AA      ST	R10,-Y
      9B 934A      ST	R20,-Y
      9C 2EA0      MOV	R10,R16
(0107)     }
(0108) }
(0109) 
(0110) /***********************************************************
(0111) *   函数说明:发送数据函数                                 *
(0112) *   输入:    无                                           *
(0113) *   输出:    无                                           *
(0114) *   调用函数:无                                           *
(0115) ***********************************************************/
(0116) static void LCDSP027_Send_Data(char Data)
(0117) {
(0118)     char n = 0;
(0119)     for (n = 0;n<8;n++)
      9D 2744      CLR	R20
      9E C01A      RJMP	0x00B9
(0120)     {
(0121)         SP027_CLK = LOW;
      9F B385      IN	R24,0x15
      A0 7D8F      ANDI	R24,0xDF
      A1 BB85      OUT	0x15,R24
(0122)         if (Data<<n>>7)
      A2 2D0A      MOV	R16,R10
      A3 2F14      MOV	R17,R20
      A4 D815      RCALL	lsl8
      A5 2E20      MOV	R2,R16
      A6 9426      LSR	R2
      A7 9426      LSR	R2
      A8 9426      LSR	R2
      A9 9426      LSR	R2
      AA 9426      LSR	R2
      AB 9426      LSR	R2
      AC 9426      LSR	R2
      AD F021      BEQ	0x00B2
(0123)         {
(0124)             SP027_DI = HIGH;
      AE B385      IN	R24,0x15
      AF 6180      ORI	R24,0x10
      B0 BB85      OUT	0x15,R24
(0125)         }
      B1 C003      RJMP	0x00B5
(0126)         else
(0127)         {
(0128)             SP027_DI = LOW;
      B2 B385      IN	R24,0x15
      B3 7E8F      ANDI	R24,0xEF
      B4 BB85      OUT	0x15,R24
(0129)         }
(0130)         SP027_CLK = HIGH;
      B5 B385      IN	R24,0x15
      B6 6280      ORI	R24,0x20
      B7 BB85      OUT	0x15,R24
      B8 9543      INC	R20
      B9 3048      CPI	R20,0x8
      BA F320      BCS	0x009F
      BB 9149      LD	R20,Y+
      BC 90A9      LD	R10,Y+
      BD 9508      RET
FILE: H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\RD_UseCooperatingMiniOs.c
(0001) /***********************************************************
(0002) *   函数库说明:合作调度器基本函数库                       *
(0003) *   版本:      v1.00                                      *
(0004) *   作者:      王卓然                                     *
(0005) *   创建日期:  2006年8月28日                              *
(0006) * -------------------------------------------------------- *
(0007) *  [支 持 库]                                              *
(0008) *   支持库名称:RD_UseCooperatingMiniOs.h                  *
(0009) *   需要版本:  -----                                      *
(0010) *   支持库说明:合作调度器基本声明库                       *
(0011) *                                                          *
(0012) *   支持库名称:RD_MacroAndConst.h                         *
(0013) *   需要版本:  v0.04 &abv                                 *
(0014) *   支持库说明:系统常用宏定义库                           *
(0015) * -------------------------------------------------------- *
(0016) *  [版本更新]                                              *
(0017) * -------------------------------------------------------- *
(0018) *  [版本历史]                                              *
(0019) * -------------------------------------------------------- *
(0020) *  [使用说明]                                              *
(0021) *           1、在系统初始化的时候调用函数CmOSInit()来初始  *
(0022) *              化消息对系统;同时通过定义宏                *
(0023) *              COS_REGISTER_PROC_FUNCTION来说明静态进程函  *
(0024) *              数的消息处理函数和动作函数(使用函数指针)。  *
(0025) *              每增加一个静态进程,要更新一次进程计数器    *
(0026) *              COS_Proc_Counter,保证每一个进程都能被有效  *
(0027) *              的寻址。                                    *
(0028) *           7、用户可以通过宏COS_PROCESS_COUNT来定义最大的 *
(0029) *              进程PCB数量。这个数值直接影响系统允许的静态 *
(0030) *              进程的数量,并要占用一定的空间。这个数目的  *
(0031) *              最小值是1,因为默认有一个系统默认消息处理   *
(0032) *              进程。                                      *
(0033) *           8、用户需要COS_REGISTER_MSG_FUNCTION宏来说明   *
(0034) *              系统进程的初始化函数,通过这个初始化函数告  *
(0035) *              诉消息系统,一共有多少静态进程,并且说明这  *
(0036) *              些静态进程的相关函数指针是什么。            *
(0037) ***********************************************************/
(0038) 
(0039) /********************
(0040) * 头 文 件 配 置 区 *
(0041) ********************/
(0042) # include "RD_MacroAndConst.h"
(0043) # include "RD_UseCooperatingMiniOs.h"
(0044) 
(0045) /********************
(0046) *   系 统 宏 定 义  *
(0047) ********************/
(0048) 
(0049) /*------------------*
(0050) *   常 数 宏 定 义  *
(0051) *------------------*/
(0052) #ifndef COS_PROCESS_COUNT
(0053)     //# define COS_PROCESS_COUNT 8
(0054)     #error Need for COS_PROCESS_COUNT!      
(0055) #endif
(0056) 
(0057) /*------------------*
(0058) *   动 作 宏 定 义  *
(0059) *------------------*/
(0060) #ifndef COS_REGISTER_PROC_FUNCTION
(0061)     # define COS_REGISTER_PROC_FUNCTION
(0062) #endif
(0063) 
(0064) /********************
(0065) *    结构体宏定义   *
(0066) ********************/
(0067) 
(0068) /********************
(0069) *   函 数 声 明 区  *
(0070) ********************/

⌨️ 快捷键说明

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