📄 keyboard.lst
字号:
C51 COMPILER V8.02 KEYBOARD 10/16/2006 17:42:27 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN keyboard.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE keyboard.c OMF2 BROWSE DEBUG
line level source
1 /**********************************************************************
2 *File Name :
3 *Creat Time :
4 *Program Author :
5 *File Discreption :
6 ************************************************************************/
7
8 #include "common.h"
9 #include "main.h"
10 #include "key.h"
11 #include "Var.h"
12 #include "keyboard.h"
13
14 /*************************************************************
15 Title: Parse_Input_Key_Timer
16
17 1.The timer is increased by hardware TIMER2 with an unit about 20ms.
18 2.Once MCU check some key is pressed ,it the start.
19 3.After MCU do not check any key for 150ms ,the timer is reseted.
20
21 ***************************************************************/
22 EX_DATA U8 FP_Key_Hold_Enable_Table[]=
23 {
24 0, // KEY_FP_0=0x40,
25 0, // KEY_FP_NEXT =0x41,
26 0, // KEY_FP_SEEK_DOWN = 0x42,
27 0, // KEY_FP_STEREO =0x43,
28 0, // KEY_FP_RDS_DISPALY = 0x44,
29 0, // KEY_FP_PREVIOUS = 0x45,
30 0, // KEY_FP_TRACK_DOWN = 0x46,
31 0, // KEY_FP_AUTO_ALL = 0x47,
32 0, // KEY_FP_RDS_PTY = 0x48,
33 0, // KEY_FP_NOP1= 0x49,
34 0, // KEY_FP_SEEK_UP = 0x4A,
35 0, // KEY_FP_MUTE = 0x4B,
36 1, // KEY_FP_TUNER_AREA = 0x4C,
37 0, // KEY_FP_NOP= 0x4D,
38 0, // KEY_FP_TRACK_UP = 0x4E,
39 1 // KEY_FP_PROGRAM =0x4F,
40
41 };
42 #define HIGH_OUT_LOW_INPUT
43 #ifdef HIGH_OUT_LOW_INPUT
44 #define SET_KEY_OUT0_LOW P2=0xEF //KEY_OUT0=0;// KEY_OUT1=1;KEY_OUT2=1;KEY_OUT3=1;
45 #define SET_KEY_OUT1_LOW P2=0xDF //KEY_OUT0=1; KEY_OUT1=0;KEY_OUT2=1;KEY_OUT3=1;
46 #define SET_KEY_OUT2_LOW P2=0xBF //KEY_OUT0=1; KEY_OUT1=1;KEY_OUT2=0;KEY_OUT3=1;
47 #define SET_KEY_OUT3_LOW P2=0x7F //KEY_OUT0=1; KEY_OUT1=1;KEY_OUT2=1;KEY_OUT3=0;
48 #define SET_KEY_OUT_CANCEL P2=0xFF //KEY_OUT0=1; KEY_OUT1=1;KEY_OUT2=1;KEY_OUT3=1;
49 #define KEY_INPUT_REGISTER P2
50 #define GET_SIGNLE_KEY_TIMER 0x80
51
52 void Get_Panel_Click_key()
53 {
54 1 U8 get_key_flag, temp_key_code;
55 1
C51 COMPILER V8.02 KEYBOARD 10/16/2006 17:42:27 PAGE 2
56 1 get_key_flag=0;
57 1 temp_key_code=0xff;
58 1 //check the first line input
59 1 switch(Key_Scan_Buffer0)
60 1 {
61 2 case 0x7: //key4 presss
62 2 Key_Code=0x44; // 0b 0100 0100
63 2 //Tuner.FMFreq=4+9000; System_Flag_DispEvent=1;
64 2 break;
65 2 case 0xB: //key3 press
66 2 Key_Code=0x43; // 0b 0100 0011
67 2 // Tuner.FMFreq=3+9000; System_Flag_DispEvent=1;
68 2 break;
69 2 case 0xD: //key2 presss
70 2 Key_Code=0x42; // 0b 0100 0010
71 2 // Tuner.FMFreq=2+9000; System_Flag_DispEvent=1;
72 2 break;
73 2 case 0xE: //key1 presss
74 2 Key_Code=0x41; // 0b 0100 0001
75 2 //Tuner.FMFreq=1+9000; System_Flag_DispEvent=1;
76 2
77 2 break;
78 2 default:
79 2 break;
80 2 }
81 1
82 1 switch(Key_Scan_Buffer1)
83 1 {
84 2 case 0x7: //key4 presss
85 2 Key_Code=0x48; // 0b 0100 0100
86 2 break;
87 2 case 0xB: //key3 press
88 2 Key_Code=0x47; // 0b 0100 0011
89 2 break;
90 2 case 0xD: //key2 presss
91 2 Key_Code=0x46; // 0b 0100 0010
92 2 break;
93 2 case 0xE: //key1 presss
94 2 Key_Code=0x45; // 0b 0100 0001
95 2 break;
96 2 default:
97 2 break;
98 2 }
99 1 switch(Key_Scan_Buffer2)
100 1 {
101 2 case 0x7: //key4 presss
102 2 Key_Code=0x4C; // 0b 0100 0100
103 2 break;
104 2 case 0xB: //key3 press
105 2 Key_Code=0x4B; // 0b 0100 0011
106 2 break;
107 2 case 0xD: //key2 presss
108 2 Key_Code=0x4A; // 0b 0100 0010
109 2 break;
110 2 case 0xE: //key1 presss
111 2 Key_Code=0x49; // 0b 0100 0001
112 2 break;
113 2 default:
114 2 break;
115 2 }
116 1 switch(Key_Scan_Buffer3)
117 1 {
C51 COMPILER V8.02 KEYBOARD 10/16/2006 17:42:27 PAGE 3
118 2 case 0x7: //key4 presss
119 2 Key_Code=0x50; // 0b 0100 0100
120 2 break;
121 2 case 0xB: //key3 press
122 2 Key_Code=0x4F; // 0b 0100 0011
123 2 break;
124 2 case 0xD: //key2 presss
125 2 Key_Code=0x4E; // 0b 0100 0010
126 2 break;
127 2 case 0xE: //key1 presss
128 2 Key_Code=0x4D; // 0b 0100 0001
129 2 break;
130 2 default:
131 2 break;
132 2 }
133 1
134 1
135 1
136 1
137 1 }
138
139
140 void Get_Keyboard_Key()
141 {
142 1
143 1 U8 temp_input;
144 1 BOOL has_key_flag;
145 1
146 1 has_key_flag=0;
147 1
148 1
149 1
150 1 //scan the line0
151 1 SET_KEY_OUT0_LOW;
152 1
153 1 Delay_xuS(1);
154 1 temp_input=KEY_INPUT_REGISTER&0x0F;
155 1
156 1 if(temp_input!=0x0F)
157 1 {
158 2 Key_Scan_Buffer0=temp_input;
159 2 has_key_flag=1;
160 2 // Tuner.FMFreq=Key_Scan_Buffer0+1000; System_Flag_DispEvent=1;
161 2 }
162 1
163 1 //scan the line1
164 1 SET_KEY_OUT1_LOW;
165 1
166 1 Delay_xuS(1);
167 1 temp_input=KEY_INPUT_REGISTER&0x0F;
168 1 if(temp_input!=0x0F)
169 1 {
170 2 Key_Scan_Buffer1=temp_input;
171 2 has_key_flag=1;
172 2 // Tuner.FMFreq=Key_Scan_Buffer1+2000; System_Flag_DispEvent=1;
173 2 }
174 1 //scan the line2
175 1 SET_KEY_OUT2_LOW;
176 1
177 1 Delay_xuS(1);
178 1 temp_input=KEY_INPUT_REGISTER&0x0F;
179 1 if(temp_input!=0x0F)
C51 COMPILER V8.02 KEYBOARD 10/16/2006 17:42:27 PAGE 4
180 1 {
181 2 Key_Scan_Buffer2=temp_input;
182 2 has_key_flag=1;
183 2 // Tuner.FMFreq=Key_Scan_Buffer2+3000; System_Flag_DispEvent=1;
184 2 }
185 1 //scan he line3
186 1 SET_KEY_OUT3_LOW;
187 1 Delay_xuS(1);
188 1 temp_input=KEY_INPUT_REGISTER&0x0F;
189 1 if(temp_input!=0x0F)
190 1 {
191 2 Key_Scan_Buffer3=temp_input;
192 2 has_key_flag=1;
193 2 // Tuner.FMFreq=Key_Scan_Buffer3+4000; System_Flag_DispEvent=1;
194 2 }
195 1
196 1 SET_KEY_OUT_CANCEL;
197 1
198 1
199 1
200 1
201 1 if(has_key_flag==1)
202 1 {
203 2 Get_Key_Counter++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -