📄 kbd_task.lst
字号:
22 =1 void I2c_WriteByte (Byte address, Byte bByte);
23 =1 int dts_scanByte(void);
24 =1 void dts_IntToByte (Byte address,int bByte);
25 =1 void dts_MemInit (void);
26 =1 void dts_DispMem (void);
27 =1
28 =1 void HT1621_getdata(Byte address,Byte bByte);
29 =1 extern Byte code ht1621disp_Map[];
30 =1 //extern idata char ht1621disp_Buffer[9];
31 =1
32 =1 extern idata char DTS_buffer[6];
33 =1 extern idata int dts_frequency;
C51 COMPILER V8.01 KBD_TASK 08/07/2006 11:16:10 PAGE 9
34 =1 extern idata int Mem_frequency;
35 =1 extern data Byte Mem_add;
36 =1 extern bdata bit DtsMen_flag ;
18
19
20 static Byte kbd_state; /* keyboard task state */
21 /*F**************************************************************************
22 * NAME: kbd_task_init
23 *----------------------------------------------------------------------------
24 * PARAMS:
25 *
26 * return:
27 *----------------------------------------------------------------------------
28 * PURPOSE:
29 * Keyboard task initialisation
30 *----------------------------------------------------------------------------
31 * EXAMPLE:
32 *----------------------------------------------------------------------------
33 * NOTE:
34 *----------------------------------------------------------------------------
35 * REQUIREMENTS:
36 *****************************************************************************/
37 void kbd_task_init (void)
38 {
39 1 //kbd_state = KBD_IDLE; /*按键任务状态(BYTE)*/
40 1 //gl_key_press = FALSE; /* 按键是否压住标志?,no key pressed */
41 1 //gl_key = NO_KEY; /*按键值,初使状态为空*/
42 1 kbd_init(); /* keyboard initialization */
43 1 }
44
45 /*F**************************************************************************
46 * NAME: ref_mode_task
47 *----------------------------------------------------------------------------
48 * PARAMS:
49 *
50 * return:
51 *----------------------------------------------------------------------------
52 * PURPOSE:
53 * Mode task
54 *----------------------------------------------------------------------------
55 * EXAMPLE:
56 *----------------------------------------------------------------------------
57 * NOTE:
58 * STATES:
59 * MODE_BOOT boot state
60 * MODE_DOWNLOAD file download mode
61 * MODE_SONG song playing mode
62 * MODE_VOICE voice playing & recording mode
63 * MODE_TOOL tool mode
64 * MODE_IDLE idle mode (switch back to first task)
65 *----------------------------------------------------------------------------
66 * REQUIREMENTS:
67 *****************************************************************************/
68 void ref_mode_task (void)
69 {
70 1 kbd_process();
71 1 //if((!MPOWER)&&(gl_key != KEY_MainPower)){
72 1 // ;
73 1 // }
74 1 //else {
75 1 switch(gl_key)
76 1 {
C51 COMPILER V8.01 KBD_TASK 08/07/2006 11:16:10 PAGE 10
77 2 case KEY_BAND:
78 2 if(kbd_process()){
79 3 //P1_5 = ~P1_5;
80 3 if(vol_flag == High) break;
81 3 dts_AutoScan();
82 3 gl_key_repeat = TRUE;
83 3 gl_key = NO_KEY;
84 3 }
85 2 break;
86 2
87 2 case KEY_FF:
88 2 if(kbd_process()){
89 3 if(vol_flag == High) break;
90 3 if(CDPOWER){
91 4 if(!DtsMen_flag){ /* if the state is setp ,dec and inc */
92 5 dts_FerInc();
93 5 dts_GetFer();
94 5 disp_state = DISP_INIT;
95 5 gl_key_repeat = TRUE;
96 5 gl_key = NO_KEY;
97 5 }
98 4 else {
99 5 //Mem_add += 0x02;
100 5 dts_MemWriteFer();
101 5 }
102 4 }
103 3 }
104 2 break;
105 2
106 2 case KEY_FR:
107 2 if(kbd_process()){
108 3 //P1_5 = ~P1_5;
109 3 if(vol_flag == High) break;
110 3 dts_FerDec();
111 3 dts_GetFer();
112 3 disp_state = DISP_INIT;
113 3 gl_key_repeat = TRUE;
114 3 gl_key = NO_KEY;
115 3 }
116 2 break;
117 2
118 2 case KEY_MainPower:
119 2 if(kbd_process()){
120 3 MPOWER = ~MPOWER;
121 3 if(MPOWER) sch_scheduler_init();
122 3 vol_flag = Low;
123 3 disp_state = DISP_INIT;
124 3 gl_key_repeat = TRUE;
125 3 gl_key = NO_KEY;
126 3 }
127 2 break;
128 2
129 2 case KEY_VOL_INC:
130 2 if(gl_kbd_tick>KEY_LOOP){
131 3 if(vol_value<32){
132 4 vol_value++;
133 4 I2c_WriteByte (SC7313_ADD, VOL_Step_Map[vol_value]);
134 4 gl_kbd_tick = 0;
135 4 vol_tick = 0;
136 4 disp_state = DISP_INIT;
137 4 vol_flag = High;
138 4 }
C51 COMPILER V8.01 KBD_TASK 08/07/2006 11:16:10 PAGE 11
139 3 }
140 2 if((vol_value == 32)&&(vol_flag == 0)){
141 3 vol_flag = High;
142 3 disp_state = DISP_INIT;
143 3 }
144 2 gl_key = NO_KEY;
145 2 break;
146 2
147 2 case KEY_VOL_DEC:
148 2 if(gl_kbd_tick>KEY_LOOP){
149 3 if(vol_value>0){
150 4 vol_value--;
151 4 I2c_WriteByte (SC7313_ADD, VOL_Step_Map[vol_value]);
152 4 gl_kbd_tick = 0;
153 4 vol_tick = 0;
154 4 disp_state = DISP_INIT;
155 4 vol_flag = High;
156 4 }
157 3 }
158 2 if((vol_value == 0)&&(vol_flag == 0)){
159 3 vol_flag = High;
160 3 disp_state = DISP_INIT;
161 3 }
162 2 gl_key = NO_KEY;
163 2 break;
164 2
165 2 case KEY_EQ_PROG:
166 2 if(kbd_process()){
167 3 if(vol_flag == High) break;
168 3 if(CDPOWER){
169 4 dts_MemReadFer();
170 4 }
171 3 gl_key_repeat = TRUE;
172 3 gl_key = NO_KEY;
173 3 }
174 2 break;
175 2
176 2 case KEY_ALBUM:
177 2 if(kbd_process()){
178 3 //P1_5 = ~P1_5;
179 3 if(vol_flag == High) break;
180 3 if(CDPOWER){
181 4 //dts_MemReadFer();
182 4 DtsMen_flag = ~DtsMen_flag;
183 4 disp_state = DISP_INIT;
184 4 }
185 3 gl_key_repeat = TRUE;
186 3 gl_key = NO_KEY;
187 3 }
188 2 break;
189 2
190 2 case KEY_CD:
191 2 if(kbd_process()){
192 3 CDPOWER = Low;
193 3 gl_key_repeat = TRUE;
194 3 gl_key = NO_KEY;
195 3 }
196 2 break;
197 2
198 2 case KEY_RADIO:
199 2 if(kbd_process()){
200 3 CDPOWER = High;
C51 COMPILER V8.01 KBD_TASK 08/07/2006 11:16:10 PAGE 12
201 3 gl_key_repeat = TRUE;
202 3 gl_key = NO_KEY;
203 3 }
204 2 break;
205 2
206 2 case KEY_TAPE:
207 2 if(kbd_process()){
208 3 TAPE_POWER = ~TAPE_POWER;
209 3 gl_key_repeat = TRUE;
210 3 gl_key = NO_KEY;
211 3 }
212 2 break;
213 2
214 2 default : ;
215 2 }
216 1 //}
217 1 }
218
219 /*F**************************************************************************
220 * NAME: kbd_task
221 *----------------------------------------------------------------------------
222 * PARAMS:
223 *
224 * return:
225 *----------------------------------------------------------------------------
226 * PURPOSE:
227 * Keyboard task
228 *----------------------------------------------------------------------------
229 * EXAMPLE:
230 *----------------------------------------------------------------------------
231 * NOTE:
232 *----------------------------------------------------------------------------
233 * REQUIREMENTS:
234 *****************************************************************************/
235 void kbd_task (void) /*键盘时间间隔状态判断子程序*/
236 {
237 1 kbd_task_init();
238 1 //gl_key = kbd_decode(); /* 读键盘键值,程序段在kbd_drv.c文件,read key pressed */
239 1 //if(gl_key != NO_KEY) {
240 1 if(kbd_decode()) {
241 2 DelayX1ms(8); /* 防抖动8mS */
242 2 }
243 1 if( kbd_decode()){
244 2 gl_key = kbd_decode(); /* Key value detect,return the key operation value */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -