📄 keyboard.lst
字号:
C51 COMPILER V6.14 KEYBOARD 07/15/2005 09:38:50 PAGE 1
C51 COMPILER V6.14, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN .\Keyboard.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\Keyboard.C DEBUG OBJECTEXTEND
stmt level source
1 /*********************************************************************************
2 * *
3 * FileName: Keyboard.c *
4 * Function: keyboard scaner *
5 * SystemName: NDS18000-BSC *
6 * CPU: ATMEL AT89C52 *
7 * Startup: 14/Oct/2002 *
8 * Author: XuYiBo *
9 * *
10 *********************************************************************************/
11 #include <AT89X52.H>
12 #include <intrins.h>
13
14 #include "NDSBSCUI.H"
15 #include "Keyboard.h"
16 #include "General.h"
17
18 unsigned char data ucKeyHold; //
19 unsigned char data ucKeyBuffer[KEYBUFFER_LEN];
20 unsigned char data *ucKeyHead;
21 unsigned char data *ucKeyTail;
22
23
24 ///////////////////////////////////////////////////////////////////////////////
25 ///////////////////////////////////////////////////////////////////////////////
26
27 /******************************************************************************
28 * *
29 * Initialize Keyboard scan function *
30 * *
31 ******************************************************************************/
32 void InitKeyboard(void)
33 {
34 1 ucKeyHold = HOLD_VALUE;
35 1 ucKeyHead = ucKeyBuffer;
36 1 ucKeyTail = ucKeyBuffer;
37 1 }
38
39 /******************************************************************************
40 * *
41 * If KeyBuffer is empty,retnrn 0 *
42 * else return 1 *
43 * *
44 ******************************************************************************/
45
46 unsigned char IsKeyBUfEmpty(void)
47 {
48 1 if( ucKeyHead != ucKeyTail)
49 1 return 1;
50 1 else
51 1 return 0;
52 1 }
53
54 /******************************************************************************
55 * *
C51 COMPILER V6.14 KEYBOARD 07/15/2005 09:38:50 PAGE 2
56 * Get a key from KeyBuffer *
57 * *
58 ******************************************************************************/
59 unsigned char GetKey(void)
60 {
61 1 unsigned char ucTmpKey;
62 1 ucTmpKey = *(ucKeyHead++);
63 1 if( ucKeyHead == ucKeyBuffer+KEYBUFFER_LEN )
64 1 {
65 2 ucKeyHead = ucKeyBuffer;
66 2 }
67 1 return ucTmpKey;
68 1 }
69
70 /******************************************************************************
71 * *
72 * Timer0,Keyboard scan *
73 * *
74 ******************************************************************************/
75 void timer0 ( ) interrupt TIMER0INT using 1
76 {
77 1 unsigned char ucTmpKey1;
78 1 unsigned char ucTmpKey2;
79 1 if( --ucKeyHold == 0 )
80 1 {
81 2 KEYBOARDPORT=0xf0;
82 2 DelayCycle(0x08);
83 2 ucTmpKey1 = KEYBOARDPORT; //high 4Bit
84 2 if( ucTmpKey1 != 0xf0)
85 2 {//Key down
86 3 KEYBOARDPORT=0x0f;
87 3 DelayCycle(0x08);
88 3 ucTmpKey2 = KEYBOARDPORT; //low 4Bit
89 3 if( ucTmpKey2 != 0x0f)
90 3 {//Key Down
91 4 switch(ucTmpKey1)
92 4 {
93 5 case 0xe0: //Key4
94 5 switch(ucTmpKey2)
95 5 {
96 6 case 0x0e: //Key0
97 6 *(ucKeyTail++) = Key_1;
98 6 break;
99 6 case 0x0d: //Key1
100 6 *(ucKeyTail++) = Key_5;
101 6 break;
102 6 case 0x0b: //Key2
103 6 *(ucKeyTail++) = Key_9;
104 6 break;
105 6 case 0x07: //Key3
106 6 *(ucKeyTail++) = Key_F3;
107 6 break;
108 6 default:
109 6 break;
110 6 }
111 5 break;
112 5 case 0xd0: //Key5
113 5 switch(ucTmpKey2)
114 5 {
115 6 case 0x0e:
116 6 *(ucKeyTail++) = Key_2;
117 6 break;
C51 COMPILER V6.14 KEYBOARD 07/15/2005 09:38:50 PAGE 3
118 6 case 0x0d:
119 6 *(ucKeyTail++) = Key_6;
120 6 break;
121 6 case 0x0b:
122 6 *(ucKeyTail++) = Key_0;
123 6 break;
124 6 case 0x07:
125 6 *(ucKeyTail++) = Key_F4;
126 6 break;
127 6 default:
128 6 break;
129 6 }
130 5 break;
131 5 case 0xb0: //Key6
132 5 switch(ucTmpKey2)
133 5 {
134 6 case 0x0e:
135 6 *(ucKeyTail++) = Key_3;
136 6 break;
137 6 case 0x0d:
138 6 *(ucKeyTail++) = Key_7;
139 6 break;
140 6 case 0x0b:
141 6 *(ucKeyTail++) = Key_F1;
142 6 break;
143 6 case 0x07:
144 6 *(ucKeyTail++) = Key_F5;
145 6 break;
146 6 default:
147 6 break;
148 6 }
149 5 break;
150 5 case 0x70: //Key7
151 5 switch(ucTmpKey2)
152 5 {
153 6 case 0x0e:
154 6 *(ucKeyTail++) = Key_4;
155 6 break;
156 6 case 0x0d:
157 6 *(ucKeyTail++) = Key_8;
158 6 break;
159 6 case 0x0b:
160 6 *(ucKeyTail++) = Key_F2;
161 6 break;
162 6 case 0x07:
163 6 *(ucKeyTail++) = Key_Enter;
164 6 break;
165 6 default:
166 6 break;
167 6 }
168 5 break;
169 5 default:
170 5 break;
171 5 }
172 4 if( ucKeyTail == ucKeyBuffer+KEYBUFFER_LEN )
173 4 {
174 5 ucKeyTail = ucKeyBuffer;
175 5 }
176 4 ucKeyHold = HOLD_VALUE;
177 4 }
178 3 else
179 3 {
C51 COMPILER V6.14 KEYBOARD 07/15/2005 09:38:50 PAGE 4
180 4 ucKeyHold = 1;
181 4 }
182 3 }
183 2 else
184 2 {//
185 3 ucKeyHold = 1;
186 3 }
187 2 }
188 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 392 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 19 1
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -