keyproc.lst
来自「一个带收音的功放程序, VFD显示驱动用一个非常实用的方法, 稍加修改即可换成不」· LST 代码 · 共 804 行 · 第 1/5 页
LST
804 行
C51 COMPILER V7.20 KEYPROC 06/30/2005 14:02:57 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE KEYPROC
OBJECT MODULE PLACED IN keyproc.OBJ
COMPILER INVOKED BY: C:\Keil51\C51\BIN\c51.exe keyproc.c DB OE SMALL ROM(LARGE)
line level source
1 #include "reg52.h"
2 #include "intrins.h"
3 #include "..\..\inc\globedef.h"
4 #include "..\..\inc\keyproc.h"
5 #include "..\..\inc\vfddef.h"
6 #include "..\..\inc\delay.h"
7 #include "..\..\inc\m61538.h"
8 #include "..\..\inc\keydef.h"
9 #include "..\..\inc\tuner.h"
10 #include "..\..\inc\i2c.h"
11 code BYTE IR_KEY_TBL[] =
12 {
13 NO_KEY, //0
14 KEY_1, //1
15 VOLUME_UP_KEY, //2
16 KEY_3, //3
17 KEY_4, //4
18 KEY_0, //5
19 KEY_5PLUS, //6
20 CHANNEL_STEPR_KEY, //7
21 CHANNEL_STEPF_KEY, //8
22 MEMORY_KEY, //9
23 CHANNEL_PREV_KEY, //10
24 CHANNEL_NEXT_KEY, //11
25 KEY_MINUS, //12
26 FUNCTION_KEY, //13
27 KEY_PLUS, //14
28 NO_KEY, //15
29 NO_KEY, //16
30 NO_KEY, //17
31 FMAM_KEY, //18
32 VOLUME_DOWN_KEY, //19
33 CHANNEL_FB_KEY, //20
34 CHANNEL_FF_KEY, //21
35 MUTE_KEY, //22
36 NO_KEY, //23
37 KEY_PLUS, //24
38 FUNCTION_KEY, //25
39 POWER_KEY, //26
40 MEMORY_KEY, //27
41 AUTO_SCAN_KEY, //28
42 NO_KEY, //29
43 KEY_2, //30
44 SOURCE_KEY, //31
45 NO_KEY //32
46 };
47
48 /*=======================================================
49 设置输入源选择
50 =======================================================*/
51 void Source_Set()
52 {
53 1 VFD_ICON_Display(0);
54 1 switch(Current_State)
55 1 {
C51 COMPILER V7.20 KEYPROC 06/30/2005 14:02:57 PAGE 2
56 2
57 2 case TUNER:
58 2 CD4053_SELECT = 0;
59 2 Pin_4052B = 1;
60 2 Pin_4052A = 1;
61 2 VFD_DisplayString("TUNER", 5);
62 2 Change_Tuner_Mode();
63 2 //Tuner();
64 2 break;
65 2 case AUX1:
66 2 CD4053_SELECT = 0;
67 2 Pin_4052B = 0;
68 2 Pin_4052A = 1;
69 2 VFD_DisplayString("AUX 1", 5);
70 2
71 2 break;
72 2 case AUX2:
73 2 CD4053_SELECT = 0;
74 2 Pin_4052B = 0;
75 2 Pin_4052A = 0;
76 2 VFD_DisplayString("AUX 2", 5);
77 2 break;
78 2 case CH5:
79 2 CD4053_SELECT = 1;
80 2 VFD_DisplayString("6CH ", 5);
81 2
82 2 break;
83 2 }
84 1
85 1 }
86
87
88
89 /*=====================================================================
90 按键处理函数
91 POWER_KEY具有最高优先级别
92 在MUTE状态下,只有POWER_KEY和VOLUME_KEY有作用
93 有三种按键输入,VFD面板按键,遥控输入按键,飞梭滚轮输入按键
94 =====================================================================*/
95 void KEY_Proc()
96 {
97 1 static BYTE KEY_TEMP[3];
98 1
99 1 if((1 == Panel_KeyAct) || (1 == IR_KeyAct) || (1 == Jog_KeyAct))
100 1 {
101 2 //遥控按键有效
102 2 if(1 == IR_KeyAct)
103 2 {
104 3 if(Remote_value < 64)
105 3 Current_Key = IR_KEY_TBL[Remote_value];
106 3 else
107 3 Current_Key = NO_KEY;
108 3
109 3 IR_KeyAct = 0;
110 3
111 3 //恢复出厂默认值, 方便开机时频率设置成默认值
112 3 if(POWER_Status == 0)//power_off状态
113 3 {
114 4 KEY_TEMP[2] = KEY_TEMP[1];
115 4 KEY_TEMP[1] = KEY_TEMP[0];
116 4 KEY_TEMP[0] = Current_Key;
117 4 if((KEY_TEMP[2] == FUNCTION_KEY) && (KEY_TEMP[1] == KEY_0)
C51 COMPILER V7.20 KEYPROC 06/30/2005 14:02:57 PAGE 3
118 4 && (KEY_TEMP[0] == KEY_5PLUS))
119 4 {
120 5 I2C_PutByte(A24C02, Channel_Test, 0xFF);
121 5 }
122 4 }
123 3
124 3 }
125 2 //飞梭旋钮按键有效
126 2 else if(1 == Jog_KeyAct)
127 2 {
128 3 if(1 == Jog_Key)
129 3 Current_Key = VOLUME_UP_KEY;
130 3 else if(2 == Jog_Key)
131 3 Current_Key = VOLUME_DOWN_KEY;
132 3 Jog_KeyAct = 0;
133 3 Jog_Key = 0;
134 3 }
135 2 //面板按键有效
136 2 else if(1 == Panel_KeyAct)
137 2 {
138 3 if(8 == Panel_Key)
139 3 Current_Key = POWER_KEY;
140 3 else if(4 == Panel_Key)
141 3 Current_Key = SOURCE_KEY;
142 3 else
143 3 Current_Key = NO_KEY;
144 3 Panel_KeyAct = 0;
145 3 Panel_Key = 0;
146 3 }
147 2 if(Current_Key == POWER_KEY)
148 2 {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?