📄 kbd_drv.lst
字号:
C51 COMPILER V7.06 KBD_DRV 05/05/2005 12:12:02 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KBD_DRV
OBJECT MODULE PLACED IN kbd_drv.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lib_mcu\kbd\kbd_drv.c OPTIMIZE(7,SPEED) BROWSE INCDIR(.\modules\system;.\;.
-\;.\lib_refd) DEFINE(KEIL) DEBUG OBJECTEXTEND PRINT(.\kbd_drv.lst) OBJECT(kbd_drv.obj)
stmt level source
1 /*C**************************************************************************
2 * NAME: kbd_drv.c
3 *----------------------------------------------------------------------------
4 * Copyright (c) 2003 Atmel.
5 *----------------------------------------------------------------------------
6 * RELEASE: snd1c-refd-nf-4_0_3
7 * REVISION: 1.10
8 *----------------------------------------------------------------------------
9 * PURPOSE:
10 * This file contains the keypad driver routines
11 *
12 * NOTES:
13 * Driver Configuration:
14 * - KBD_EXIT_PD in config.h define as:
15 * TRUE: to allow exit of power down by keyboard
16 * FALSE: to disallow exit of power down by keyboard
17 * - LOCK_ROW in config.h
18 * - KEY_LOCK in config.h
19 * Global Variables:
20 * - gl_kbd_lock in bdata space
21 *****************************************************************************/
22
23 /*_____ I N C L U D E S ____________________________________________________*/
24
25 #include "config.h" /* lib configuration header */
26 #include "kbd_drv.h" /* Keyboard driver definition */
27
28
29 /*_____ M A C R O S ________________________________________________________*/
30
31
32 /*_____ D E F I N I T I O N ________________________________________________*/
33
34 static bdata bit gl_kbd_lock;
35
36 /*_____ D E C L A R A T I O N ______________________________________________*/
37
38 static void kbd_set_prio (Byte);
39 static void kbd_install (void);
40
41
42 /*F**************************************************************************
43 * NAME: kbd_init
44 *----------------------------------------------------------------------------
45 * PARAMS:
46 *
47 * return:
48 *----------------------------------------------------------------------------
49 * PURPOSE:
50 * Keyboard initialisation function
51 *----------------------------------------------------------------------------
52 * EXAMPLE:
53 *----------------------------------------------------------------------------
54 * NOTE:
C51 COMPILER V7.06 KBD_DRV 05/05/2005 12:12:02 PAGE 2
55 *----------------------------------------------------------------------------
56 * REQUIREMENTS:
57 * ram/xram:
58 * cycle:
59 * stack:
60 * code:
61 *****************************************************************************/
62 void kbd_init (void)
63 {
64 1 gl_kbd_lock = (!LOCK_ROW); /* Lock Key decoding */
65 1 kbd_install();
66 1 }
67
68
69 /*F**************************************************************************
70 * NAME: kbd_install
71 *----------------------------------------------------------------------------
72 * PARAMS:
73 *
74 * return:
75 *----------------------------------------------------------------------------
76 * PURPOSE:
77 * Keyboard IT and columns mask init
78 *----------------------------------------------------------------------------
79 * EXAMPLE:
80 *----------------------------------------------------------------------------
81 * NOTE:
82 *----------------------------------------------------------------------------
83 * REQUIREMENTS:
84 * ram/xram:
85 * cycle:
86 * stack:
87 * code:
88 *****************************************************************************/
89 void kbd_install (void)
90 {
91 1 if (gl_kbd_lock)
92 1 {
93 2 KBCON = KB_LCK;
94 2 P_KBD = MSK_LCK;
95 2 }
96 1 else
97 1 {
98 2 KBCON = KB_STD;
99 2 P_KBD = MSK_LCK;
100 2 }
101 1 KBSTA = KBSTA; /* dummy read for clearing pending interrupt */
102 1 }
103
104
105
106 /*F**************************************************************************
107 * NAME: kbd_decode
108 *----------------------------------------------------------------------------
109 * PARAMS:
110 *
111 * return:
112 * Decoded key pressed
113 *----------------------------------------------------------------------------
114 * PURPOSE:
115 * Decode the key that generated an IT
116 *----------------------------------------------------------------------------
C51 COMPILER V7.06 KBD_DRV 05/05/2005 12:12:02 PAGE 3
117 * EXAMPLE:
118 *----------------------------------------------------------------------------
119 * NOTE:
120 *----------------------------------------------------------------------------
121 * REQUIREMENTS:
122 * ram/xram:
123 * cycle:
124 * stack:
125 * code:
126 *****************************************************************************/
127 Byte kbd_decode (void)
128 {
129 1 Byte key;
130 1
131 1 if (gl_kbd_lock)
132 1 {
133 2 gl_kbd_lock = FALSE;
134 2 kbd_install();
135 2 return (KEY_LOCK);
136 2 }
137 1 else
138 1 {
139 2 key = P_KBD;
140 2 kbd_install();
141 2 return (key);
142 2 }
143 1 }
144
145
146 /*F**************************************************************************
147 * NAME: kbd_int
148 *----------------------------------------------------------------------------
149 * PARAMS:
150 *
151 * return:
152 *----------------------------------------------------------------------------
153 * PURPOSE:
154 * Keyboard interrupt function
155 *----------------------------------------------------------------------------
156 * EXAMPLE:
157 *----------------------------------------------------------------------------
158 * NOTE:
159 * This isr is called when a key is pressed to get out power-down Interrupt
160 * is re-enable in the install routine
161 *----------------------------------------------------------------------------
162 * REQUIREMENTS:
163 * ram/xram:
164 * cycle:
165 * stack:
166 * code:
167 *****************************************************************************/
168 #if KBD_EXIT_PD
Interrupt(kbd_int (void), IRQ_KBD)
{
Kbd_disable_int(); /* disable interrupt */
}
#endif
174
175
176
C51 COMPILER V7.06 KBD_DRV 05/05/2005 12:12:02 PAGE 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 44 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -