?? rd_adt_msgmap.lis
字號:
.module RD_ADT_MSGMap.c
.area text(rom, con, rel)
0000 .dbfile O:\2007全國電子設(shè)計(jì)大賽\鍵盤顯示模塊\RD_ADT_MSGMap.c
0000 .dbfunc e MsgMapProcess _MsgMapProcess fc
0000 .dbstruct 0 3 MsgMapItem
0000 .dbfield 0 cCMD c
0000 .dbfield 1 pMsgFunc pfc
0000 .dbend
0000 .dbstruct 0 3 MsgMap
0000 .dbfield 0 cItemCount c
0000 .dbfield 1 pMsgItems pS[MsgMapItem]
0000 .dbend
0000 .dbstruct 0 4 MsgItem
0000 .dbfield 0 cCMD c
0000 .dbfield 1 cDataLength c
0000 .dbfield 2 pData pc
0000 .dbend
0000 ; pMsgMapItem -> R20,R21
0000 ; Reg2 -> R22,R23
0000 ; Reg3 -> R22,R23
0000 ; n1 -> R10
0000 ; cMsgItemCount0 -> R14
0000 ; pMsgItem -> R12,R13
0000 ; pMsgMap -> R22,R23
.even
0000 _MsgMapProcess::
0000 0E940000 xcall push_xgsetF0FC
0004 6901 movw R12,R18
0006 B801 movw R22,R16
0008 .dbline -1
0008 .dbline 78
0008 ; /***********************************************************
0008 ; * 函數(shù)庫說明:抽象數(shù)據(jù)類型(ADT)消息地圖函數(shù)庫 *
0008 ; * 版本: v1.00 *
0008 ; * 作者: 王卓然 *
0008 ; * 創(chuàng)建日期:2007年4月6日 *
0008 ; * -------------------------------------------------------- *
0008 ; * [支 持 庫] *
0008 ; * 支持庫名稱:RD_MacroAndConst.h *
0008 ; * 需要版本: v0.01 &abv *
0008 ; * 支持庫說明:系統(tǒng)常用宏定義庫 *
0008 ; * *
0008 ; * 支持庫名稱:RD_ADT_MSGMAP.c *
0008 ; * 需要版本: ----- *
0008 ; * 支持庫名稱:抽象數(shù)據(jù)類型(ADT)消息地圖聲明庫 *
0008 ; * -------------------------------------------------------- *
0008 ; * [版本更新] *
0008 ; * 修改: *
0008 ; * 修改日期: *
0008 ; * 版本: *
0008 ; * -------------------------------------------------------- *
0008 ; * [版本歷史] *
0008 ; * -------------------------------------------------------- *
0008 ; * [使用說明] *
0008 ; ***********************************************************/
0008 ;
0008 ; /********************
0008 ; * 頭 文 件 配 置 區(qū) *
0008 ; ********************/
0008 ; # include "RD_MacroAndConst.h"
0008 ; # include "RD_ADT_MSGMap.h"
0008 ;
0008 ; /********************
0008 ; * 系 統(tǒng) 宏 定 義 *
0008 ; ********************/
0008 ;
0008 ; /*------------------*
0008 ; * 常 數(shù) 宏 定 義 *
0008 ; *------------------*/
0008 ;
0008 ; /*------------------*
0008 ; * 動 作 宏 定 義 *
0008 ; *------------------*/
0008 ;
0008 ; /********************
0008 ; * 用戶變量類型定義 *
0008 ; ********************/
0008 ;
0008 ; /********************
0008 ; * 結(jié)構(gòu)體定義區(qū) *
0008 ; ********************/
0008 ;
0008 ; /********************
0008 ; * 模塊函數(shù)聲明區(qū) *
0008 ; ********************/
0008 ;
0008 ; /********************
0008 ; * 全局函數(shù)聲明區(qū) *
0008 ; ********************/
0008 ; BOOL MsgMapProcess(MSG_MAP *pMsgMap,MSG_ITEM *pMsgItem);
0008 ;
0008 ; /********************
0008 ; * 模塊變量聲明區(qū) *
0008 ; ********************/
0008 ;
0008 ; /********************
0008 ; * 全局變量聲明區(qū) *
0008 ; ********************/
0008 ;
0008 ; # include "PF_Config.h"
0008 ;
0008 ; /***********************************************************
0008 ; * 函數(shù)說明:消息地圖處理函數(shù) *
0008 ; * 輸入: 消息地圖,要處理的消息 *
0008 ; * 輸出: 消息是否得到處理 *
0008 ; * 調(diào)用函數(shù):無 *
0008 ; ***********************************************************/
0008 ; BOOL MsgMapProcess(MSG_MAP *pMsgMap,MSG_ITEM *pMsgItem)
0008 ; {
0008 .dbline 79
0008 ; uint8 n = 0;
0008 .dbline 80
0008 ; uint8 cMsgItemCount = pMsgMap->cItemCount;
0008 FB01 movw R30,R22
000A E080 ldd R14,z+0
000C .dbline 81
000C ; MSG_MAP_ITEM *pMsgMapItem = pMsgMap->pMsgItems;
000C 4181 ldd R20,z+1
000E 5281 ldd R21,z+2
0010 .dbline 83
0010 ;
0010 ; if ((pMsgMap == NULL) || (pMsgItem == NULL)) //強(qiáng)壯性檢測
0010 E030 cpi R30,0
0012 EF07 cpc R30,R31
0014 21F0 breq L4
0016 X0:
0016 CC20 tst R12
0018 21F4 brne L2
001A DD20 tst R13
001C 11F4 brne L2
001E X1:
001E L4:
001E .dbline 84
001E ; {
001E .dbline 85
001E ; return FALSE;
001E 0027 clr R16
0020 18C0 xjmp L1
0022 L2:
0022 .dbline 88
0022 ; }
0022 ;
0022 ; for (n = 0;n < cMsgItemCount;n++)
0022 AA24 clr R10
0024 13C0 xjmp L8
0026 L5:
0026 .dbline 89
0026 ; {
0026 .dbline 90
0026 ; if (pMsgMapItem[n].cCMD == pMsgItem->cCMD)
0026 83E0 ldi R24,3
0028 8A9D mul R24,R10
002A B001 movw R22,R0
002C 640F add R22,R20
002E 751F adc R23,R21
0030 F601 movw R30,R12
0032 2080 ldd R2,z+0
0034 FB01 movw R30,R22
0036 3080 ldd R3,z+0
0038 3214 cp R3,R2
003A 39F4 brne L9
003C X2:
003C .dbline 91
003C ; {
003C .dbline 92
003C ; return ((*pMsgMapItem[n].pMsgFunc)(pMsgItem));
003C 8601 movw R16,R12
003E A181 ldd R26,z+1
0040 B281 ldd R27,z+2
0042 FD01 movw R30,R26
0044 0E940000 xcall xicallx
0048 04C0 xjmp L1
004A L9:
004A .dbline 94
004A ; }
004A ; }
004A L6:
004A .dbline 88
004A A394 inc R10
004C L8:
004C .dbline 88
004C AE14 cp R10,R14
004E 58F3 brlo L5
0050 X3:
0050 .dbline 96
0050 ;
0050 ; return FALSE;
0050 0027 clr R16
0052 .dbline -2
0052 L1:
0052 .dbline 0 ; func end
0052 0C940000 xjmp pop_xgsetF0FC
0056 .dbsym r pMsgMapItem 20 pS[MsgMapItem]
0056 .dbsym r Reg2 22 S
0056 .dbsym r Reg3 22 pV
0056 .dbsym r n1 10 c
0056 .dbsym r cMsgItemCount0 14 c
0056 .dbsym r pMsgItem 12 pS[MsgItem]
0056 .dbsym r pMsgMap 22 pS[MsgMap]
0056 .dbend
0056 .dbfunc e MSG_NULL_PROC _MSG_NULL_PROC fc
0056 ; p -> R10,R11
0056 ; pMsgItem -> R16,R17
.even
0056 _MSG_NULL_PROC::
0056 AA92 st -y,R10
0058 BA92 st -y,R11
005A .dbline -1
005A .dbline 106
005A ; }
005A ;
005A ; /***********************************************************
005A ; * 函數(shù)說明:消息處理空函數(shù) *
005A ; * 輸入: 要處理的消息 *
005A ; * 輸出: 恒為FALSE *
005A ; * 調(diào)用函數(shù):無 *
005A ; ***********************************************************/
005A ; BOOL MSG_NULL_PROC(MSG_ITEM *pMsgItem)
005A ; {
005A .dbline 107
005A ; MSG_ITEM *p = pMsgItem;
005A 5801 movw R10,R16
005C .dbline 109
005C ;
005C ; return FALSE;
005C 0027 clr R16
005E .dbline -2
005E L11:
005E .dbline 0 ; func end
005E B990 ld R11,y+
0060 A990 ld R10,y+
0062 0895 ret
0064 .dbsym r p 10 pS[MsgItem]
0064 .dbsym r pMsgItem 16 pS[MsgItem]
0064 .dbend
0064 ; }
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -