📄 motorctr.lst
字号:
__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 + -