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

📄 dispkeyboard.lst

📁 液晶模块LCD1602配合键盘显示的一个实例
💻 LST
📖 第 1 页 / 共 5 页
字号:
     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 + -