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