📄 keys.lst
字号:
C51 COMPILER V7.06 KEYS 05/07/2009 08:52:36 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KEYS
OBJECT MODULE PLACED IN Keys.OBJ
COMPILER INVOKED BY: E:\k51\C51\BIN\C51.EXE Keys.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /**********************************************
2 * File: Keys.C
3 * Description: Tri-Angle
4 * Created Date: 2007-10-01
5 * Last Modified: 2007-10-01
6 * Author: Jeffrey - Schicksal@126.com
7 * Notes: None
8 **********************************************/
9 #include "Atmel/AT89X51.h"
10 #include "INTRINS.H"
11 #include "Keys.h"
12
13
14
15
16 /**********************************************
17 * Function: void DelayMs(unsigned int i)
18 * Input Variables: unsigned int i
19 * Return Variables: void
20 * Usage: Delay Function
21 **********************************************/
22 void DelayMs(unsigned int i) // Delay Function 1
23 {
24 1 unsigned char j;
25 1 for (; i!=0; i--)
26 1 for (j=2000; j!=0; j--) {;}
27 1 }
28
29 /**********************************************
30 * Function: void SetBuzzer(unsigned char B)
31 * Input Variables: unsigned char B
32 * Return Variables: void
33 * Usage: Buzzer Driver
34 **********************************************/
35 void SetBuzzer(unsigned char B)
36 {
37 1 if(B>0x01)
38 1 return; // 输入值超限
39 1 Buzzer = B; // 改变Buzzer状态
40 1 }
41
42 /**********************************************
43 * Function: unsigned char read_keys(void)
44 * Input Variables: void
45 * Return Variables: None
46 * Usage: Read keys
47 **********************************************/
48 unsigned char read_keys()
49 {
50 1 unsigned char keys; // 返回键值变量
51 1 P1 = 0xff; // 置高P1,准备读取
52 1 keys = P1; // 读取键值
53 1 return keys; // 返回键值
54 1 }
55
C51 COMPILER V7.06 KEYS 05/07/2009 08:52:36 PAGE 2
56 extern volatile unsigned char time[4];
57 extern volatile unsigned char alarm[2];
58 volatile unsigned char flag=0;
59 volatile unsigned char alarm_flag=1;
60 volatile unsigned char change_timeflag=0;
61 volatile unsigned char change_adjustflag=0;
62
63 /**********************************************
64 * Function:void KeyProcess()
65 * Input Variables: void
66 * Return Variables: None
67 * Usage: key process
68 **********************************************/
69 void KeyProcess()
70 {
71 1
72 1 unsigned char Key, keyMODE, keySET, keyUP, keyDOWN;
73 1 Key = read_keys();
74 1 if (Key != 0x0f)
75 1 {
76 2 DelayMs(180);
77 2 Key = read_keys();
78 2 if (Key != 0x0f)
79 2 {
80 3 keyMODE = Key & 0x01;
81 3 keySET = Key & 0x08;
82 3 keyUP = Key & 0x04;
83 3 keyDOWN = Key & 0x02;
84 3
85 3 SetBuzzer(Buzzer_OFF); //闹表不响
86 3 alarm_flag=0; // 取消闹表标示
87 3
88 3 if (keyMODE==0) // MODE键被按下
89 3 {
90 4 if (change_adjustflag==0) // 当前是时钟模式
91 4 change_adjustflag=1; // 改变为闹表模式
92 4 else
93 4 change_adjustflag=0; // 改变为时钟模式
94 4 change_timeflag=0;
95 4 }
96 3
97 3 if (keySET==0) // SET键被按下
98 3 {
99 4 if (change_adjustflag==0) // 时钟模式
100 4 {
101 5 change_timeflag++;
102 5 if (change_timeflag>=3)
103 5 change_timeflag=0;
104 5 }
105 4 else // 闹表模式
106 4 {
107 5 if (alarm_flag==0)
108 5 {
109 6 alarm_flag=1;
110 6 change_timeflag=0;
111 6 flag=1;
112 6 }
113 5 else
114 5 {
115 6 if (change_timeflag==0)
116 6 {
117 7 if (flag==1) // 进入修改闹钟程序
C51 COMPILER V7.06 KEYS 05/07/2009 08:52:36 PAGE 3
118 7 {
119 8 change_timeflag++;
120 8 flag=0;
121 8 }
122 7 else // 退出闹钟修改程序
123 7 {
124 8 change_timeflag=0;
125 8 alarm_flag=0;
126 8 }
127 7 }
128 6 else
129 6 {
130 7 change_timeflag++;
131 7 if (change_timeflag>=3)
132 7 change_timeflag=0;
133 7 }
134 6 }
135 5 }
136 4 }
137 3
138 3 if (keyUP==0) // UP键被按下
139 3 {
140 4 if (change_adjustflag == 0)
141 4 {
142 5 // 调整时钟
143 5 time[change_timeflag-1]++;
144 5 if (time[1]==0xff)
145 5 {
146 6 time[1]=59;
147 6 }
148 5
149 5 if (time[0]==0xff)
150 5 {
151 6 time[0]=23;
152 6 }
153 5
154 5 if (time[3]>1)
155 5 {
156 6 time[3]=0;
157 6 time[2]++;
158 6 }
159 5
160 5 if (time[2]>=60)
161 5 {
162 6 time[2]-=60;
163 6 }
164 5 if (time[1]>=60)
165 5 {
166 6 time[1]-=60;
167 6 }
168 5 if (time[0]>=24)
169 5 time[0]-=24;
170 5
171 5 }
172 4 else
173 4 {
174 5 // 调整闹表
175 5 alarm[change_timeflag-1]++;
176 5 if (time[1]==0xff)
177 5 {
178 6 time[1]=59;
179 6 }
C51 COMPILER V7.06 KEYS 05/07/2009 08:52:36 PAGE 4
180 5
181 5 if (time[0]==0xff)
182 5 {
183 6 time[0]=23;
184 6 }
185 5
186 5 if (time[3]>1)
187 5 {
188 6 time[3]=0;
189 6 time[2]++;
190 6 }
191 5
192 5 if (time[2]>=60)
193 5 {
194 6 time[2]-=60;
195 6 }
196 5 if (time[1]>=60)
197 5 {
198 6 time[1]-=60;
199 6 }
200 5 if (time[0]>=24)
201 5 time[0]-=24;
202 5 }
203 4 }
204 3
205 3 if (keyDOWN==0) // DOWN键被按下
206 3 {
207 4 if (change_adjustflag == 0)
208 4 {
209 5 // 调整时钟
210 5 time[change_timeflag-1]--;
211 5 if (time[1]==0xff)
212 5 {
213 6 time[1]=59;
214 6 }
215 5
216 5 if (time[0]==0xff)
217 5 {
218 6 time[0]=23;
219 6 }
220 5
221 5 if (time[3]>1)
222 5 {
223 6 time[3]=0;
224 6 time[2]++;
225 6 }
226 5
227 5 if (time[2]>=60)
228 5 {
229 6 time[2]-=60;
230 6 }
231 5 if (time[1]>=60)
232 5 {
233 6 time[1]-=60;
234 6 }
235 5 if (time[0]>=24)
236 5 time[0]-=24;
237 5 }
238 4 else
239 4 {
240 5 // 调整闹表
241 5 alarm[change_timeflag-1]--;
C51 COMPILER V7.06 KEYS 05/07/2009 08:52:36 PAGE 5
242 5 if (alarm[1]==0xff)
243 5 alarm[1]=59;
244 5 if (alarm[0]==0xff)
245 5 alarm[0]=23;
246 5
247 5 if (alarm[1]>=60)
248 5 {
249 6 alarm[1]-=60;
250 6 }
251 5 if (alarm[0]>=24)
252 5 alarm[0]-=24;
253 5
254 5 }
255 4 }
256 3 }
257 2 }
258 1 }
259
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 461 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
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 + -