📄 key.lst
字号:
C51 COMPILER V7.50 KEY 04/17/2006 14:59:37 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key.c LARGE OPTIMIZE(5,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #define KEY_GLOBAL
3 #include "config.h"
4
5
6 #define REDIAL120 0x11
7 #define PRINT 0x12
8 #define PATIENT 0x13
9 #define DIALPHONE 0x15
10 #define CANCEL 0x16
11 #define CONFIRM 0x17
12
13 #define KEYBOARD1 0x00
14 #define KEYBOARD2 0x01
15 #define KEYBOARD3 0x02
16 #define KEYBOARD4 0x04
17 #define KEYBOARD5 0x05
18 #define KEYBOARD6 0x06
19 #define KEYBOARD7 0x08
20 #define KEYBOARD8 0x09
21 #define KEYBOARD9 0x0a
22 #define KEYBOARDX 0x0c
23 #define KEYBOARD0 0x0d
24 #define KEYBOARDJ 0x0e
25
26 #define KEYUP 0x03
27 #define KEYDOWN 0x0f
28 #define KEYLEFT 0x07
29 #define KEYRIGHT 0x0b
30 #define MAINNENU 0x10
31
32 INT8U KeyValueArray[23] = {REDIAL120, PRINT, PATIENT,DIALPHONE,CANCEL,CONFIRM,
33 KEYBOARD1,KEYBOARD2,KEYBOARD3,KEYBOARD4,KEYBOARD5,
34 KEYBOARD6,KEYBOARD7,KEYBOARD8,KEYBOARD9,KEYBOARDX,KEYBOARD0,KEYBOARDJ,
35 KEYUP,KEYDOWN,KEYLEFT,KEYRIGHT,MAINNENU};
36
37 INT8U HaveKey;
38 INT8U KeyValue;
39 extern PSD_REGS uPSD32;
40
41 void KeyWordInt(void) interrupt IE1_VECTOR using 2
42 {
43 1 KeyValue = XBYTE[MC4922_PORT];
44 1 KeyValue &= 0x0f;
45 1 if((uPSD32.DATAIN_A & 0x10) == 0x10) KeyValue |= 0x10;
46 1 else KeyValue &= 0xef;
47 1 HaveKey = 1;
48 1 }
49
50 /*******************************************************************************
51 程序名: SearchKey
52 说 明: 根据按键产生的键值确定按键代号
53 ********************************************************************************/
54 INT8U SearchKey(INT8U key_value)
55 {
C51 COMPILER V7.50 KEY 04/17/2006 14:59:37 PAGE 2
56 1 INT8U i;
57 1
58 1 for(i=0; i<23; i++)
59 1 {
60 2 if(KeyValueArray[i] == key_value) break;
61 2 }
62 1 return i;
63 1 }
64
65 /*******************************************************************************
66 程序名: PressHiLightKey
67 说 明: 按键后反显对应项,选择界面为3×3
68 反显 4 个汉字
69 ********************************************************************************/
70 void PressHiLightKey(INT8U key)
71 {
72 1 INT8U i, addrx, addry;
73 1 INT8U *p;
74 1 INT8U array[]=" CE PR PA PH CA EN 01 02 03 04 05 06 07 08 09
- * 00 # UP DN LF RT ME ";
75 1
76 1 addrx = key/5;
77 1 addry = key%5 * 6;
78 1
79 1 p = array;
80 1 p += addrx * 30 + addry;
81 1
82 1 GraphStr0816(0, 0, array, 1, 200);
83 1
84 1 for(i=0; i<4; i++)
85 1 {
86 2 GraphChar0816(addrx, addry+i, *p++, 0);
87 2 }
88 1 }
89
90 void vKEY_Check(void)
91 {
92 1 INT8U key;
93 1
94 1 if(HaveKey == 1)
95 1 {
96 2 HaveKey = 0;
97 2 key = SearchKey(KeyValue);
98 2
99 2 GraphChar0808(11, 6, key/10+0x30, 1);
100 2 GraphChar0808(11, 7, key%10+0x30, 1);
101 2 PressHiLightKey(key);
102 2 }
103 1 }
104
105 void vKEY_Init(void)
106 {
107 1 EA = 0;
108 1 IT1 = 1; //decline triggle
109 1 PX1 = 1;
110 1 EX1 = 1; //enable External Interrupt 0
111 1 EA = 1;
112 1 }
113
114
115
116
C51 COMPILER V7.50 KEY 04/17/2006 14:59:37 PAGE 3
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 337 ----
CONSTANT SIZE = 140 ----
XDATA SIZE = 25 148
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -