?? ex_support.s
字號(hào):
.module EX_Support.c
.area text(rom, con, rel)
.dbfile O:\2007全國(guó)電子設(shè)計(jì)大賽\鍵盤顯示模塊\EX_Support.c
.area data(ram, con, rel)
.dbfile O:\2007全國(guó)電子設(shè)計(jì)大賽\鍵盤顯示模塊\EX_Support.c
_s_wSystemDelayTimerCounter:
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile O:\2007全國(guó)電子設(shè)計(jì)大賽\鍵盤顯示模塊\EX_Support.c
_g_wSystemTimer::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile O:\2007全國(guó)電子設(shè)計(jì)大賽\鍵盤顯示模塊\EX_Support.c
_g_wCommunicationTimer::
.blkb 2
.area idata
.word 0
.area data(ram, con, rel)
.dbfile O:\2007全國(guó)電子設(shè)計(jì)大賽\鍵盤顯示模塊\EX_Support.c
.area text(rom, con, rel)
.dbfile O:\2007全國(guó)電子設(shè)計(jì)大賽\鍵盤顯示模塊\EX_Support.c
.dbfunc e Driver_INIT _Driver_INIT fV
.even
_Driver_INIT::
.dbline -1
.dbline 88
; /***********************************************************
; * 函數(shù)庫(kù)說明:底層硬件初始化驅(qū)動(dòng)函數(shù)庫(kù) *
; * 版本: *
; * 作者: *
; * 創(chuàng)建日期: *
; * -------------------------------------------------------- *
; * [硬件說明] *
; * 處理器: *
; * 系統(tǒng)時(shí)鐘: *
; * -------------------------------------------------------- *
; * [支 持 庫(kù)] *
; * 支持庫(kù)名稱:PF_Config.h *
; * 需要版本: ----- *
; * 聲明庫(kù)說明:硬件平臺(tái)配置聲明庫(kù) *
; * *
; * 支持庫(kù)名稱:HD_Support.h *
; * 需要版本: ----- *
; * 聲明庫(kù)說明:底層硬件初始化聲明庫(kù) *
; * *
; * 支持庫(kù)名稱:EX_Support.h *
; * 需要版本: ----- *
; * 聲明庫(kù)說明:底層硬件初始化驅(qū)動(dòng)聲明庫(kù) *
; * -------------------------------------------------------- *
; * [版本更新] *
; * 修改: *
; * 修改日期: *
; * 版本: *
; * -------------------------------------------------------- *
; * [版本歷史] *
; * -------------------------------------------------------- *
; * [使用說明] *
; ***********************************************************/
;
; /********************
; * 頭 文 件 配 置 區(qū) *
; ********************/
; # include "PF_Config.h"
; # include "EX_Support.h"
; # include "LIB_Config.h"
;
; /********************
; * 系 統(tǒng) 宏 定 義 *
; ********************/
;
; /*------------------*
; * 常 數(shù) 宏 定 義 *
; *------------------*/
;
; /*------------------*
; * 動(dòng) 作 宏 定 義 *
; *------------------*/
;
; /********************
; * 模塊結(jié)構(gòu)體定義區(qū) *
; ********************/
;
; /********************
; * 函 數(shù) 聲 明 區(qū) *
; ********************/
; void Delay_MS(uint16 wTime);
; void Insert_Timer0_OVF_ISR_Code(void);
; void Driver_INIT(void);
; uint8 Key_Press_Scan(void);
;
; /********************
; * 模塊函數(shù)聲明區(qū) *
; ********************/
;
;
; /********************
; * 模塊變量聲明區(qū) *
; ********************/
; static uint16 s_wSystemDelayTimerCounter = 0;
;
; /********************
; * 全局變量聲明區(qū) *
; ********************/
; uint16 g_wSystemTimer = 0;
; uint16 g_wCommunicationTimer = 0;
;
; /***********************************************************
; * 函數(shù)說明:軟件驅(qū)動(dòng)初始化函數(shù) *
; * 輸入: 無(wú) *
; * 輸出: 無(wú) *
; * 調(diào)用函數(shù):無(wú) *
; ***********************************************************/
; void Driver_INIT(void)
; {
.dbline 89
; CMOS_INIT();
xcall _CMOS_INIT
.dbline 90
; LCDInit();
xcall _LCDInit
.dbline 91
; LED_Flash_Control_INIT();
xcall _LED_Flash_Control_INIT
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Delay_MS _Delay_MS fV
; wTime -> R16,R17
.even
_Delay_MS::
.dbline -1
.dbline 102
; }
;
;
; /***********************************************************
; * 函數(shù)說明:系統(tǒng)毫秒延時(shí)函數(shù) *
; * 輸入: 需要延時(shí)的時(shí)間長(zhǎng)度 *
; * 輸出: 無(wú) *
; * 調(diào)用函數(shù):無(wú) *
; ***********************************************************/
; void Delay_MS(uint16 wTime)
; {
.dbline 103
; s_wSystemDelayTimerCounter = wTime;
sts _s_wSystemDelayTimerCounter+1,R17
sts _s_wSystemDelayTimerCounter,R16
L3:
.dbline 105
;
; while(s_wSystemDelayTimerCounter);
L4:
.dbline 105
lds R2,_s_wSystemDelayTimerCounter
lds R3,_s_wSystemDelayTimerCounter+1
tst R2
brne L3
tst R3
brne L3
X0:
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbsym r wTime 16 i
.dbend
.dbfunc e Insert_Timer0_OVF_ISR_Code _Insert_Timer0_OVF_ISR_Code fV
.even
_Insert_Timer0_OVF_ISR_Code::
.dbline -1
.dbline 115
; }
;
; /***********************************************************
; * 函數(shù)說明:定時(shí)器0中斷處理程序代碼插入函數(shù) *
; * 輸入: 無(wú) *
; * 輸出: 無(wú) *
; * 調(diào)用函數(shù):無(wú) *
; ***********************************************************/
; void Insert_Timer0_OVF_ISR_Code(void)
; {
.dbline 116
; g_wSystemTimer++;
lds R24,_g_wSystemTimer
lds R25,_g_wSystemTimer+1
adiw R24,1
sts _g_wSystemTimer+1,R25
sts _g_wSystemTimer,R24
.dbline 118
;
; if (s_wSystemDelayTimerCounter)
lds R2,_s_wSystemDelayTimerCounter
lds R3,_s_wSystemDelayTimerCounter+1
tst R2
brne X1
tst R3
breq L7
X1:
.dbline 119
; {
.dbline 120
; s_wSystemDelayTimerCounter--;
movw R24,R2
sbiw R24,1
sts _s_wSystemDelayTimerCounter+1,R25
sts _s_wSystemDelayTimerCounter,R24
.dbline 121
; }
L7:
.dbline 125
;
; //USEKEY_INSERT_MS_TIMER_OVF_ISR_CODE
;
; if (g_wCommunicationTimer)
lds R2,_g_wCommunicationTimer
lds R3,_g_wCommunicationTimer+1
tst R2
brne X2
tst R3
breq L9
X2:
.dbline 126
; {
.dbline 127
; g_wCommunicationTimer--;
movw R24,R2
sbiw R24,1
sts _g_wCommunicationTimer+1,R25
sts _g_wCommunicationTimer,R24
.dbline 128
; LED_DATA = LED_FLASH_VERY_FAST;
ldi R24,6
sts _g_cLEDs+1,R24
.dbline 129
; }
xjmp L10
L9:
.dbline 131
; else
; {
.dbline 132
; LED_DATA = LED_ON;
ldi R24,1
sts _g_cLEDs+1,R24
.dbline 133
; }
L10:
.dbline 143
; /*
; if (!(g_wSystemTimer & 0x0f))
; {
; LCDSP027_refresh_DISP_BUFF();
; }
; */
; //PROC_Serial_Transmitter();
; //Serial_Frame_Process_Refresh();
;
; PROC_LED_FLASH.IfProcAlive = TRUE;
ldi R24,1
sts _ProcPCB+3+2,R24
.dbline -2
L6:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Key_Press_Scan _Key_Press_Scan fc
; cKeyScanValue0 -> R16
.even
_Key_Press_Scan::
.dbline -1
.dbline 153
; }
;
; /***********************************************************
; * 函數(shù)說明:鍵盤掃描函數(shù)(不去抖) *
; * 輸入: 無(wú) *
; * 輸出: 無(wú) *
; * 調(diào)用函數(shù):無(wú) *
; ***********************************************************/
; uint8 Key_Press_Scan(void)
; {
.dbline 154
; uint8 cKeyScanValue = KEY_NULL;
ldi R16,255
.dbline 157
;
; //掃描第一行
; SET_KEY_OUT_ALL_PORT_HIGH
in R24,0x12
ori R24,124
out 0x12,R24
.dbline 158
; KEY_OUT_Y_P1 = LOW;
in R24,0x12
andi R24,251
out 0x12,R24
.dbline 159
; NOP();
nop
.dbline 160
; if (!KEY_IN_X_P1)
in R24,0x13
lsr R24
lsr R24
andi R24,1
brne L16
X3:
.dbline 161
; {
.dbline 162
; cKeyScanValue = 0x00;
clr R16
.dbline 163
; }
L16:
.dbline 164
; if (!KEY_IN_X_P2)
in R24,0x13
lsr R24
lsr R24
lsr R24
andi R24,1
brne L18
X4:
.dbline 165
; {
.dbline 166
; cKeyScanValue = 0x01;
ldi R16,1
.dbline 167
; }
L18:
.dbline 168
; if (!KEY_IN_X_P3)
in R24,0x13
swap R24
andi R24,#0x0F
andi R24,1
brne L20
X5:
.dbline 169
; {
.dbline 170
; cKeyScanValue = 0x02;
ldi R16,2
.dbline 171
; }
L20:
.dbline 172
; if (!KEY_IN_X_P4)
in R24,0x13
lsr R24
lsr R24
lsr R24
lsr R24
lsr R24
andi R24,1
brne L22
X6:
.dbline 173
; {
.dbline 174
; cKeyScanValue = 0x03;
ldi R16,3
.dbline 175
; }
L22:
.dbline 178
;
; //掃描第二行
; SET_KEY_OUT_ALL_PORT_HIGH
in R24,0x12
ori R24,124
out 0x12,R24
.dbline 179
; KEY_OUT_Y_P2 = LOW;
in R24,0x12
andi R24,247
out 0x12,R24
.dbline 180
; NOP();
nop
.dbline 181
; if (!KEY_IN_X_P1)
in R24,0x13
lsr R24
lsr R24
andi R24,1
brne L24
X7:
.dbline 182
; {
.dbline 183
; cKeyScanValue = 0x04;
ldi R16,4
.dbline 184
; }
L24:
.dbline 185
; if (!KEY_IN_X_P2)
in R24,0x13
lsr R24
lsr R24
lsr R24
andi R24,1
brne L26
X8:
.dbline 186
; {
.dbline 187
; cKeyScanValue = 0x05;
ldi R16,5
.dbline 188
; }
L26:
.dbline 189
; if (!KEY_IN_X_P3)
in R24,0x13
swap R24
andi R24,#0x0F
andi R24,1
brne L28
X9:
.dbline 190
; {
.dbline 191
; cKeyScanValue = 0x06;
ldi R16,6
.dbline 192
; }
L28:
.dbline 193
; if (!KEY_IN_X_P4)
in R24,0x13
lsr R24
lsr R24
lsr R24
lsr R24
lsr R24
andi R24,1
brne L30
X10:
.dbline 194
; {
.dbline 195
; cKeyScanValue = 0x07;
ldi R16,7
.dbline 196
; }
L30:
.dbline 199
;
; //掃描第三行
; SET_KEY_OUT_ALL_PORT_HIGH
in R24,0x12
ori R24,124
out 0x12,R24
.dbline 200
; KEY_OUT_Y_P3 = LOW;
in R24,0x12
andi R24,239
out 0x12,R24
.dbline 201
; NOP();
nop
.dbline 202
; if (!KEY_IN_X_P1)
in R24,0x13
lsr R24
lsr R24
andi R24,1
brne L32
X11:
.dbline 203
; {
.dbline 204
; cKeyScanValue = 0x08;
ldi R16,8
.dbline 205
; }
L32:
.dbline 206
; if (!KEY_IN_X_P2)
in R24,0x13
lsr R24
lsr R24
lsr R24
andi R24,1
brne L34
X12:
.dbline 207
; {
.dbline 208
; cKeyScanValue = 0x09;
ldi R16,9
.dbline 209
; }
L34:
.dbline 210
; if (!KEY_IN_X_P3)
in R24,0x13
swap R24
andi R24,#0x0F
andi R24,1
brne L36
X13:
.dbline 211
; {
.dbline 212
; cKeyScanValue = 0x0a;
ldi R16,10
.dbline 213
; }
L36:
.dbline 214
; if (!KEY_IN_X_P4)
in R24,0x13
lsr R24
lsr R24
lsr R24
lsr R24
lsr R24
andi R24,1
brne L38
X14:
.dbline 215
; {
.dbline 216
; cKeyScanValue = 0x0b;
ldi R16,11
.dbline 217
; }
L38:
.dbline 220
;
; //掃描第四行
; SET_KEY_OUT_ALL_PORT_HIGH
in R24,0x12
ori R24,124
out 0x12,R24
.dbline 221
; KEY_OUT_Y_P4 = LOW;
in R24,0x12
andi R24,223
out 0x12,R24
.dbline 222
; NOP();
nop
.dbline 223
; if (!KEY_IN_X_P1)
in R24,0x13
lsr R24
lsr R24
andi R24,1
brne L40
X15:
.dbline 224
; {
.dbline 225
; cKeyScanValue = 0x0c;
ldi R16,12
.dbline 226
; }
L40:
.dbline 227
; if (!KEY_IN_X_P2)
in R24,0x13
lsr R24
lsr R24
lsr R24
andi R24,1
brne L42
X16:
.dbline 228
; {
.dbline 229
; cKeyScanValue = 0x0d;
ldi R16,13
.dbline 230
; }
L42:
.dbline 231
; if (!KEY_IN_X_P3)
in R24,0x13
swap R24
andi R24,#0x0F
andi R24,1
brne L44
X17:
.dbline 232
; {
.dbline 233
; cKeyScanValue = 0x0e;
ldi R16,14
.dbline 234
; }
L44:
.dbline 235
; if (!KEY_IN_X_P4)
in R24,0x13
lsr R24
lsr R24
lsr R24
lsr R24
lsr R24
andi R24,1
brne L46
X18:
.dbline 236
; {
.dbline 237
; cKeyScanValue = 0x0f;
ldi R16,15
.dbline 238
; }
L46:
.dbline 241
;
; //掃描第五行
; SET_KEY_OUT_ALL_PORT_HIGH
in R24,0x12
ori R24,124
out 0x12,R24
.dbline 242
; KEY_OUT_Y_P5 = LOW;
in R24,0x12
andi R24,191
out 0x12,R24
.dbline 243
; NOP();
nop
.dbline 244
; if (!KEY_IN_X_P1)
in R24,0x13
lsr R24
lsr R24
andi R24,1
brne L48
X19:
.dbline 245
; {
.dbline 246
; cKeyScanValue = 0x10;
ldi R16,16
.dbline 247
; }
L48:
.dbline 248
; if (!KEY_IN_X_P2)
in R24,0x13
lsr R24
lsr R24
lsr R24
andi R24,1
brne L50
X20:
.dbline 249
; {
.dbline 250
; cKeyScanValue = 0x11;
ldi R16,17
.dbline 251
; }
L50:
.dbline 252
; if (!KEY_IN_X_P3)
in R24,0x13
swap R24
andi R24,#0x0F
andi R24,1
brne L52
X21:
.dbline 253
; {
.dbline 254
; cKeyScanValue = 0x12;
ldi R16,18
.dbline 255
; }
L52:
.dbline 256
; if (!KEY_IN_X_P4)
in R24,0x13
lsr R24
lsr R24
lsr R24
lsr R24
lsr R24
andi R24,1
brne L54
X22:
.dbline 257
; {
.dbline 258
; cKeyScanValue = 0x13;
ldi R16,19
.dbline 259
; }
L54:
.dbline 261
;
; return cKeyScanValue;
.dbline -2
L15:
.dbline 0 ; func end
ret
.dbsym r cKeyScanValue0 16 c
.dbend
;
; }
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -