📄 key.lst
字号:
C51 COMPILER V7.06 KEY 03/16/2009 19:12:49 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: G:\Keil\C51\BIN\C51.EXE key.c OPTIMIZE(9,SIZE) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "global.h"
2 #include "key.h"
3 //获取键值程序
4 unsigned char Key_Process(void)
5 {
6 1 Up_Key=1; Down_Key=1; //初始值
7 1 _nop_();_nop_();
8 1 if(!Up_Key) //如果上键按下了
9 1 {
10 2 if(Down_Key) //第一种情况
11 2 {
12 3 Delay_ms(20);//去抖动
13 3 if(!Up_Key)//现在键值还是一样的话
14 3 {
15 4 Key_Down=1;//按下了
16 4 Data_Change=0;//表示关键数据无改变了
17 4 Count_5s=0;//用于计数5秒时间的,5秒到后才存数据
18 4 Auto_Search_Flag=0;
19 4 Count_500ms=0;
20 4 Add_Process(); //加键处理程序
21 4 if(Mode==0) //在频率设置模式下时
22 4 VolSet(Volume/2+19);//不要太大声了
23 4 // if(Mode==0) //在频率设置模式下时
24 4 // {
25 4
26 4 // Tuner_Preset (False,True,Low,gdwPresetVCO);
27 4 // }
28 4 while(!Up_Key)//判断是否有松键
29 4 {
30 5 if(Long_Click==1)//长按成功了,用于手动设置频率的
31 5 {
32 6 if(Auto_Search_Flag==0)//如果不在自动搜频模式时
33 6 {
34 7 if(CountTime_Key>40)
35 7 {
36 8 CountTime_Key=0;
37 8 Add_Process(); //加键处理程序
38 8 // if(Mode==0) //在频率设置模式下时
39 8 // Tuner_Preset(False,True,High,gdwPresetVCO);
40 8 WatchDog;//喂狗
41 8 }
42 7 }
43 6 else //在自动搜索状态了,计时成功了
44 6 {
45 7 Autosearch_Up();
46 7
47 7 while(!Up_Key)//判断是否有松键
48 7 {
49 8 WatchDog;//喂狗
50 8 }
51 7 break;
52 7 }
53 6
54 6 }
55 5 WatchDog;//喂狗
C51 COMPILER V7.06 KEY 03/16/2009 19:12:49 PAGE 2
56 5 }
57 4 Key_Down=0;//没按下
58 4 Long_Click=0;//清长按
59 4 //Count_500ms=0;
60 4 CountTime_Key=0;//清长按时间的
61 4 Count_Auto_Search=0;//清自动搜索的计时
62 4 //Auto_Search_Flag=0;
63 4 Data_Change=1;//表示关键数据有改变了
64 4 if(Mode==0)
65 4 {
66 5 Delay_ms(200);//稍作延时
67 5 VolSet(Volume+19);//还原应有的声音
68 5 }
69 4 return 0;
70 4 }
71 3
72 3 }
73 2 }
74 1 else
75 1 {
76 2 if(!Down_Key) //如果下键按下了 //第二种情况
77 2 {
78 3 Delay_ms(20);//去抖动
79 3 if(!Down_Key)//现在键值还是一样的话
80 3 {
81 4 Key_Down=1;//按下了
82 4 Count_5s=0;//用于计数5秒时间的,5秒到后才存数据
83 4 Data_Change=0;//表示关键数据无改变了
84 4 Auto_Search_Flag=0;
85 4 Count_500ms=0;
86 4 Dec_Process(); //减键处理程序
87 4 if(Mode==0) //在频率设置模式下时
88 4 VolSet(Volume/2+19);//不要太大声了
89 4 // if(Mode==0) //在频率设置模式下时
90 4 // {
91 4
92 4 // Tuner_Preset (False,True,Low,gdwPresetVCO); // Preset to searched station 0301 mao
93 4 // }
94 4 while(!Down_Key)//判断是否有松键
95 4 {
96 5 if(Long_Click==1)//长按成功了
97 5 {
98 6 if(Auto_Search_Flag==0)//如果不在自动搜频模式时
99 6 {
100 7 if(CountTime_Key>30)
101 7 {
102 8 CountTime_Key=0;
103 8 Dec_Process(); //减键处理程序
104 8 // Tuner_Preset(False,True,High,gdwPresetVCO);
105 8 WatchDog;//喂狗
106 8 }
107 7 }
108 6 else //在自动搜索状态了,计时成功了
109 6 {
110 7 Autosearch_Down();
111 7 WatchDog;//喂狗
112 7 while(!Down_Key)//判断是否有松键
113 7 {
114 8 WatchDog;//喂狗
115 8 }
116 7 break;
117 7
C51 COMPILER V7.06 KEY 03/16/2009 19:12:49 PAGE 3
118 7 }
119 6 }
120 5 WatchDog;//喂狗
121 5
122 5 }
123 4 Key_Down=0;//没按下
124 4 //Count_500ms=0;
125 4 Long_Click=0;//清长按
126 4 CountTime_Key=0;//清长按时间的
127 4 Count_Auto_Search=0;//清自动搜索的计时
128 4 Data_Change=1;//表示关键数据有改变了
129 4 if(Mode<2)//在频率与音量模式 下时,在音量执行减少音量时,会有噪音,这是为了去噪音的
130 4 {
131 5 Delay_ms(200);//稍作延时
132 5 VolSet(Volume+19);//还原应有的声音
133 5 }
134 4 return 0;
135 4 }
136 3 }
137 2 else
138 2 {
139 3 Up_Key=0;
140 3 if(!Down_Key)//下键按下了//第三种情况功能切换键
141 3 {
142 4 Up_Key=1; Down_Key=0;
143 4 if(!Up_Key)
144 4 {
145 5 Delay_ms(20);//去抖动
146 5 if(!Up_Key)//现在键值还是一样的话
147 5 {
148 6 Mode++; //显示状态的切换
149 6 if(Mode>4) Mode=0;
150 6 }
151 5 }
152 4 while(!Up_Key&&!Down_Key)//判断是否有松键
153 4 {
154 5 WatchDog; //喂狗
155 5 }
156 4 // AutoS_LongClick=0;//清自动搜频长按开始计数标志
157 4 // Count_Auto_Search=0;// 清自动搜频长按计数标志
158 4 Data_Change=1;//有关键数据改变标志
159 4 return 0;
160 4
161 4 }
162 3 }
163 2 }
164 1 //第三种情况*********************
165 1 Band=1;
166 1 _nop_();_nop_();
167 1 if(Band==0)
168 1 {
169 2 Delay_ms(20);//去抖动
170 2 if(Band==0) //还有键按下
171 2 {
172 3 Band_Data++;
173 3 Count_5s=0;//用于计数5秒时间的,5秒到后才存数据
174 3 Data_Change=0;//表示关键数据无改变了
175 3 if(Auto_Search_Flag==1)
176 3 Auto_Search_Flag=0;
177 3 if(Band_Data>1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -