📄 key.lst
字号:
C51 COMPILER V9.00 KEY 07/01/2013 12:13:30 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN ..\output\key.obj
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE ..\c_file\key.c BROWSE INCDIR(..\c_file;..\h_file;..\output;..\project) DEB
-UG OBJECTEXTEND PRINT(.\key.lst) OBJECT(..\output\key.obj)
line level source
1 /**************************************************************************************
2 * 子程序:底层程序 *
3 * 功能:按键处理,键值显示; *
4 * *
5 * *
6 ***************************************************************************************/
7 # include "main.h"
8 # include "ds1302.h"
9 # include "nokia5110.h"
10 # include "delay.h"
11 # include "printf.h"
12 # include "eeprom.h"
13 uchar set=0; //按键选择标志位;
14 char key_flag=0;//按键加减标志位;
15 uchar menue=0; //菜单选择标志位;
16 uchar ok=0; //确认标志位;
17 char miao,fen,shi,ri,yue,zhou,nian;/*时间日期数值标志位;*/
18
19 uchar clocktable[5]; //分,时,星期;
20 char hour=7;
21 char minute=30;
22 char week2=1;
23
24
25 void Delay10ms() //@11.0592MHz
26 {
27 1 unsigned char i, j;
28 1
29 1 i = 108;
30 1 j = 145;
31 1 do
32 1 {
33 2 while (--j);
34 2 } while (--i);
35 1 }
36
37
38
39 void key()
40 {
41 1 EA=0;
42 1 /*判断选择按键是否按下;如果按下了当松开的时候让背光打开;set++;*/
43 1 if(keyswitch==0)
44 1 {
45 2 Delay10ms();
46 2 if(keyswitch==0)
47 2 {
48 3 Delay10ms();
49 3 while(keyswitch==0);
50 3 LCD_BLA=1;
51 3 if(set>8)set=0;
52 3 set++;
53 3 }
54 2 }
C51 COMPILER V9.00 KEY 07/01/2013 12:13:30 PAGE 2
55 1
56 1
57 1
58 1 /*up和down按键的检测;加减标志位*/
59 1 if(keyup==0)
60 1 { Delay10ms();
61 2 if(keyup==0)
62 2 {
63 3 LCD_BLA=1;
64 3 Delay10ms();
65 3 while(keyup==0);
66 3
67 3 key_flag++;
68 3 }
69 2 }
70 1
71 1 if(keydown==0)
72 1 { Delay10ms();
73 2 if(keydown==0)
74 2 {
75 3 LCD_BLA=1;
76 3 Delay10ms();
77 3 while(keydown==0);
78 3
79 3 key_flag--;
80 3 }
81 2 }
82 1 if(keymenue==0)
83 1 {
84 2 Delay10ms();
85 2 if(keymenue==0) //菜单选择标志位;
86 2 {
87 3 Delay10ms();
88 3 while(keymenue==0);
89 3 LCD_BLA=1;
90 3 menue++;
91 3 if(menue>3)menue=0;
92 3
93 3 }
94 2 } if(keyok==0)
95 1 {
96 2 Delay10ms();
97 2 if(keyok==0) //确认标志位;
98 2 { Delay10ms();
99 3 while(keyok==0);
100 3 ok++;
101 3 if(ok>1)ok=0;
102 3 set=0;LCD_BLA=0;TR0 = 0;
103 3 }
104 2 }
105 1 if(set>=2)TR0 = 0;
106 1 EA=1;
107 1 }
108
109 void set_date_time()
110
111 {
112 1 if(set==2)
113 1 {
114 2
115 2 // while(keyup==0|keydown==0);
116 2 {
C51 COMPILER V9.00 KEY 07/01/2013 12:13:30 PAGE 3
117 3
118 3 miao=l_tmpdisplay[10]*10+l_tmpdisplay[11];
119 3 miao=miao+key_flag;
120 3 if((key_flag<0)&(miao==0))miao=59;
121 3 if(miao>59)miao=0;
122 3 miao=miao%10+(miao/10)*16;
123 3
124 3 Write_Ds1302(0x8E,0x00);
125 3 Write_Ds1302(0x80,miao);
126 3 Write_Ds1302(0x8E,0x80);
127 3
128 3 }
129 2
130 2
131 2 }
132 1
133 1 if(set==3)
134 1 {
135 2 // while(keyup==0||keydown==0);
136 2 {
137 3
138 3 fen=l_tmpdisplay[8]*10+l_tmpdisplay[9];
139 3 fen=fen+key_flag;
140 3 if(fen>59)
141 3 {
142 4 fen=0;
143 4 }
144 3
145 3 if((key_flag<0)&&(fen<0))
146 3 {
147 4 fen=59;
148 4 }
149 3
150 3
151 3 fen=fen%10+(fen/10)*16;
152 3
153 3 Write_Ds1302(0x8E,0x00);
154 3 Write_Ds1302(0x82,fen);
155 3 Write_Ds1302(0x8E,0x80);
156 3 }
157 2
158 2 }
159 1 if(set==4)
160 1 {
161 2 // while(keyup==0||keydown==0);
162 2
163 2 {
164 3 shi=l_tmpdisplay[6]*10+l_tmpdisplay[7];
165 3 shi=shi+key_flag;
166 3 if(shi>23)shi=0;
167 3 if((key_flag<0)&&(shi<0))shi=23;
168 3 shi=shi%10+(shi/10)*16;
169 3
170 3 Write_Ds1302(0x8E,0x00);
171 3 Write_Ds1302(0x84,shi);
172 3 Write_Ds1302(0x8E,0x80);
173 3 }
174 2 }
175 1
176 1 if(set==5)
177 1 {
178 2 // while(keyup==0||keydown==0);
C51 COMPILER V9.00 KEY 07/01/2013 12:13:30 PAGE 4
179 2 {
180 3 ri=l_tmpdisplay[4]*10+l_tmpdisplay[5];
181 3 ri=ri+key_flag;
182 3 if(ri>31)ri=1;
183 3 if((key_flag<0)&&(ri<1))ri=31;
184 3 ri=ri%10+(ri/10)*16;
185 3
186 3 Write_Ds1302(0x8E,0x00);
187 3 Write_Ds1302(0x86,ri);
188 3 Write_Ds1302(0x8E,0x80);
189 3 }
190 2 }
191 1 if(set==6)
192 1 {
193 2 //while(keyup==0||keydown==0);
194 2 {
195 3 yue=l_tmpdisplay[2]*10+l_tmpdisplay[3];
196 3 yue=yue+key_flag;
197 3 if(yue>12)yue=1;
198 3 if((key_flag<0)&&(yue<1))yue=12;
199 3 yue=yue%10+(yue/10)*16;
200 3
201 3 Write_Ds1302(0x8E,0x00);
202 3 Write_Ds1302(0x88,yue);
203 3 Write_Ds1302(0x8E,0x80);
204 3 }
205 2 }
206 1 if(set==7)
207 1 {
208 2 //while(keyup==0||keydown==0);
209 2
210 2 {
211 3 zhou=l_tmpdisplay[12];
212 3 zhou=zhou+key_flag;
213 3 if(zhou>7)zhou=1;
214 3 if((key_flag<0)&&(zhou<1))zhou=7;
215 3 zhou=zhou%10+(zhou/10)*16;
216 3
217 3 Write_Ds1302(0x8E,0x00);
218 3 Write_Ds1302(0x8A,zhou);
219 3 Write_Ds1302(0x8E,0x80);
220 3 }
221 2 }
222 1 if(set==8)
223 1 {
224 2 // while(keyup==0||keydown==0);
225 2 {
226 3 nian=l_tmpdisplay[0]*10+l_tmpdisplay[1]+key_flag;;
227 3 if(nian>79)nian=0;
228 3 if((key_flag<0)&&(nian<0))nian=79;
229 3
230 3 nian=nian%10+(nian/10)*16;
231 3
232 3 Write_Ds1302(0x8E,0x00);
233 3 Write_Ds1302(0x8C,nian);
234 3 Write_Ds1302(0x8E,0x80);
235 3
236 3 }
237 2
238 2 }
239 1 key_flag=0;
240 1
C51 COMPILER V9.00 KEY 07/01/2013 12:13:30 PAGE 5
241 1
242 1 }
243
244 void caidan()
245 {
246 1 uchar counter;
247 1 uchar function;
248 1 /*光标显示位置控制*/
249 1 if(menue==0)
250 1 {
251 2 LCD_write_hanzi(0,4,10);Delay1ms(120);LCD_write_hanzi(0,0,3);Delay1ms(120);LCD_write_hanzi(0,2,10);LCD_w
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -