📄 dispkeyboard.lst
字号:
141 B385 IN R24,0x15
142 7F8D ANDI R24,0xFD
143 BB85 OUT 0x15,R24
(0214) if (Data<<n>>7)
144 2D0A MOV R16,R10
145 2F14 MOV R17,R20
146 940E 0EDE CALL lsl8
148 2E20 MOV R2,R16
149 9426 LSR R2
14A 9426 LSR R2
14B 9426 LSR R2
14C 9426 LSR R2
14D 9426 LSR R2
14E 9426 LSR R2
14F 9426 LSR R2
150 F021 BEQ 0x0155
(0215) {
(0216) SP027_DI = HIGH;
151 B385 IN R24,0x15
152 6081 ORI R24,1
153 BB85 OUT 0x15,R24
(0217) }
154 C003 RJMP 0x0158
(0218) else
(0219) {
(0220) SP027_DI = LOW;
155 B385 IN R24,0x15
156 7F8E ANDI R24,0xFE
157 BB85 OUT 0x15,R24
(0221) }
(0222) SP027_CLK = HIGH;
158 B385 IN R24,0x15
159 6082 ORI R24,2
15A BB85 OUT 0x15,R24
15B 9543 INC R20
15C 3048 CPI R20,0x8
15D F318 BCS 0x0141
15E 9149 LD R20,Y+
15F 90A9 LD R10,Y+
160 9508 RET
_MsgMapProcess:
pMsgMapItem --> R20
Reg2 --> R22
Reg3 --> R22
n1 --> R10
cMsgItemCount0 --> R14
pMsgItem --> R12
pMsgMap --> R22
161 940E 0E8A CALL push_xgsetF0FC
163 0169 MOVW R12,R18
164 01B8 MOVW R22,R16
FILE: O:\2007全国电子设计大赛\键盘显示模块\RD_ADT_MSGMap.c
(0001) /***********************************************************
(0002) * 函数库说明:抽象数据类型(ADT)消息地图函数库 *
(0003) * 版本: v1.00 *
(0004) * 作者: 王卓然 *
(0005) * 创建日期:2007年4月6日 *
(0006) * -------------------------------------------------------- *
(0007) * [支 持 库] *
(0008) * 支持库名称:RD_MacroAndConst.h *
(0009) * 需要版本: v0.01 &abv *
(0010) * 支持库说明:系统常用宏定义库 *
(0011) * *
(0012) * 支持库名称:RD_ADT_MSGMAP.c *
(0013) * 需要版本: ----- *
(0014) * 支持库名称:抽象数据类型(ADT)消息地图声明库 *
(0015) * -------------------------------------------------------- *
(0016) * [版本更新] *
(0017) * 修改: *
(0018) * 修改日期: *
(0019) * 版本: *
(0020) * -------------------------------------------------------- *
(0021) * [版本历史] *
(0022) * -------------------------------------------------------- *
(0023) * [使用说明] *
(0024) ***********************************************************/
(0025)
(0026) /********************
(0027) * 头 文 件 配 置 区 *
(0028) ********************/
(0029) # include "RD_MacroAndConst.h"
(0030) # include "RD_ADT_MSGMap.h"
(0031)
(0032) /********************
(0033) * 系 统 宏 定 义 *
(0034) ********************/
(0035)
(0036) /*------------------*
(0037) * 常 数 宏 定 义 *
(0038) *------------------*/
(0039)
(0040) /*------------------*
(0041) * 动 作 宏 定 义 *
(0042) *------------------*/
(0043)
(0044) /********************
(0045) * 用户变量类型定义 *
(0046) ********************/
(0047)
(0048) /********************
(0049) * 结构体定义区 *
(0050) ********************/
(0051)
(0052) /********************
(0053) * 模块函数声明区 *
(0054) ********************/
(0055)
(0056) /********************
(0057) * 全局函数声明区 *
(0058) ********************/
(0059) BOOL MsgMapProcess(MSG_MAP *pMsgMap,MSG_ITEM *pMsgItem);
(0060)
(0061) /********************
(0062) * 模块变量声明区 *
(0063) ********************/
(0064)
(0065) /********************
(0066) * 全局变量声明区 *
(0067) ********************/
(0068)
(0069) # include "PF_Config.h"
(0070)
(0071) /***********************************************************
(0072) * 函数说明:消息地图处理函数 *
(0073) * 输入: 消息地图,要处理的消息 *
(0074) * 输出: 消息是否得到处理 *
(0075) * 调用函数:无 *
(0076) ***********************************************************/
(0077) BOOL MsgMapProcess(MSG_MAP *pMsgMap,MSG_ITEM *pMsgItem)
(0078) {
(0079) uint8 n = 0;
(0080) uint8 cMsgItemCount = pMsgMap->cItemCount;
165 01FB MOVW R30,R22
166 80E0 LDD R14,Z+0
(0081) MSG_MAP_ITEM *pMsgMapItem = pMsgMap->pMsgItems;
167 8141 LDD R20,Z+1
168 8152 LDD R21,Z+2
(0082)
(0083) if ((pMsgMap == NULL) || (pMsgItem == NULL)) //强壮性检测
169 30E0 CPI R30,0
16A 07EF CPC R30,R31
16B F021 BEQ 0x0170
16C 20CC TST R12
16D F421 BNE 0x0172
16E 20DD TST R13
16F F411 BNE 0x0172
(0084) {
(0085) return FALSE;
170 2700 CLR R16
171 C018 RJMP 0x018A
(0086) }
(0087)
(0088) for (n = 0;n < cMsgItemCount;n++)
172 24AA CLR R10
173 C013 RJMP 0x0187
(0089) {
(0090) if (pMsgMapItem[n].cCMD == pMsgItem->cCMD)
174 E083 LDI R24,3
175 9D8A MUL R24,R10
176 01B0 MOVW R22,R0
177 0F64 ADD R22,R20
178 1F75 ADC R23,R21
179 01F6 MOVW R30,R12
17A 8020 LDD R2,Z+0
17B 01FB MOVW R30,R22
17C 8030 LDD R3,Z+0
17D 1432 CP R3,R2
17E F439 BNE 0x0186
(0091) {
(0092) return ((*pMsgMapItem[n].pMsgFunc)(pMsgItem));
17F 0186 MOVW R16,R12
180 81A1 LDD R26,Z+1
181 81B2 LDD R27,Z+2
182 01FD MOVW R30,R26
183 940E 0EC9 CALL xicallx
185 C004 RJMP 0x018A
186 94A3 INC R10
187 14AE CP R10,R14
188 F358 BCS 0x0174
(0093) }
(0094) }
(0095)
(0096) return FALSE;
189 2700 CLR R16
18A 940C 0E7F JMP pop_xgsetF0FC
_MSG_NULL_PROC:
p --> R10
pMsgItem --> R16
18C 92AA ST R10,-Y
18D 92BA ST R11,-Y
(0097) }
(0098)
(0099) /***********************************************************
(0100) * 函数说明:消息处理空函数 *
(0101) * 输入: 要处理的消息 *
(0102) * 输出: 恒为FALSE *
(0103) * 调用函数:无 *
(0104) ***********************************************************/
(0105) BOOL MSG_NULL_PROC(MSG_ITEM *pMsgItem)
(0106) {
(0107) MSG_ITEM *p = pMsgItem;
18E 0158 MOVW R10,R16
(0108)
(0109) return FALSE;
18F 2700 CLR R16
190 90B9 LD R11,Y+
191 90A9 LD R10,Y+
192 9508 RET
_ADT_Queue_Add_To_Buffer:
pBuffer --> R12
nCount0 --> R20
nHead0 --> R14
nTail0 --> R22
nSize0 --> R10
cData --> R18
pQueue --> R16
193 940E 0E8A CALL push_xgsetF0FC
FILE: O:\2007全国电子设计大赛\键盘显示模块\RD_ADT_QUEUE.c
(0001) /***********************************************************
(0002) * 函数库说明:抽象数据类型(ADT)队列函数库 *
(0003) * 版本: v1.01 *
(0004) * 作者: 王卓然 *
(0005) * 创建日期: 2007年3月23日 *
(0006) * -------------------------------------------------------- *
(0007) * [支 持 库] *
(0008) * 支持库名称:RD_MacroAndConst.h *
(0009) * 需要版本: v0.01 &abv *
(0010) * 支持库说明:系统常用宏定义库 *
(0011) * *
(0012) * 支持库名称:RD_ADT_QUEUE.h *
(0013) * 需要版本: ----- *
(0014) * 支持库说明:抽象数据类型(ADT)队列声明库 *
(0015) * -------------------------------------------------------- *
(0016) * [版本更新] *
(0017) * 修改: 王卓然 *
(0018) * 修改日期: 2007年4月17日 *
(0019) * 版本: v1.01 *
(0020) * -------------------------------------------------------- *
(0021) * [版本历史] *
(0022) * v1.00 该版本提供了基本的抽象数据类型队列的结构定 *
(0023) * 义,以及默认的环形队列处理函数。 *
(0024) * v1.01 增加了队列空判断函数,和队列首数据预览函数 *
(0025) * -------------------------------------------------------- *
(0026) * [使用说明] *
(0027) ***********************************************************/
(0028)
(0029) /********************
(0030) * 头 文 件 配 置 区 *
(0031) ********************/
(0032) # include "RD_MacroAndConst.h"
(0033) # include "RD_ADT_QUEUE.h"
(0034)
(0035) /********************
(0036) * 系 统 宏 定 义 *
(0037) ********************/
(0038)
(0039) /*------------------*
(0040) * 常 数 宏 定 义 *
(0041) *------------------*/
(0042)
(0043) /*------------------*
(0044) * 动 作 宏 定 义 *
(0045) *------------------*/
(0046)
(0047) /********************
(0048) * 结构体定义区 *
(0049) ********************/
(0050)
(0051) /********************
(0052) * 模块函数声明区 *
(0053) ********************/
(0054)
(0055) /********************
(0056) * 全局函数声明区 *
(0057) ********************/
(0058) BOOL ADT_Queue_Add_To_Buffer(ADT_QUEUE *pQueue,uint8 cData);
(0059) BOOL ADT_Queue_Get_From_Buffer(ADT_QUEUE *pQueue,uint8 *pData);
(0060) BOOL ADT_Queue_Check_Empty(ADT_QUEUE *pQueue);
(0061) BOOL ADT_Queue_Peek_From_Buffer(ADT_QUEUE *pQueue,uint8 *pData);
(0062)
(0063) /********************
(0064) * 模块变量声明区 *
(0065) ********************/
(0066)
(0067) /********************
(0068) * 全局变量声明区 *
(0069) ********************/
(0070)
(0071) /***********************************************************
(0072) * 函数说明:抽象数据类型队列,系统默认队列缓冲添加函数 *
(0073) * 输入: 要添加到缓冲区的数据 *
(0074) * 输出: 添加是否成功 *
(0075) * 调用函数:无 *
(0076) ***********************************************************/
(0077) BOOL ADT_Queue_Add_To_Buffer(ADT_QUEUE *pQueue,uint8 cData)
(0078) {
(0079) uint8 *pBuffer;
(0080) uint nSize;
(0081) uint nTail;
(0082) uint nHead;
(0083) uint nCount;
(0084)
(0085) SAFE_CODE_PERFORMANCE //原子操作
195 94F8 BCLR 7
196 01F8 MOVW R30,R16
197 80C0 LDD R12,Z+0
198 80D1 LDD R13,Z+1
199 80A2 LDD R10,Z+2
19A 80B3 LDD R11,Z+3
19B 20CC TST R12
19C F411 BNE 0x019F
19D 20DD TST R13
19E F021 BEQ 0x01A3
19F 20AA TST R10
1A0 F429 BNE 0x01A6
1A1 20BB TST R11
1A2 F419 BNE 0x01A6
1A3 9478 BSET 7
1A4 2700 CLR R16
1A5 C024 RJMP 0x01CA
1A6 01F8 MOVW R30,R16
1A7 8166 LDD R22,Z+6
1A8 8177 LDD R23,Z+7
1A9 80E4 LDD R14,Z+4
1AA 80F5 LDD R15,Z+5
1AB 8540 LDD R20,Z+8
1AC 8551 LDD R21,Z+9
1AD 156E CP R22,R14
1AE 057F CPC R23,R15
1AF F431 BNE 0x01B6
1B0 154A CP R20,R10
1B1 055B CPC R21,R11
1B2 F419 BNE 0x01B6
1B3 9478 BSET 7
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -