ht1380_time3.lst
来自「自己的平时一些制作 现在整理一下 与大家一起分享」· LST 代码 · 共 430 行 · 第 1/2 页
LST
430 行
200 //第一个按键用于调整到较时状态并且可以切换要修改的位,第二个按键用于加1..
201 //..第三个按键用于减,第四个按键用于确认回到正常显示状态。
202 //这里就不调整年月日了.大家可以考虑一下如何调整
203
204 void main (void)
205 {
206 1 unsigned char keyboard,keyboard1; //键值变量
207 1 unsigned char state=0,b; //状态指示 =1较时状态 =0正常显示状态
208 1 unsigned char i,distem,w=3; //变量
209 1 year=07;month=03;day=0x05;hour=0x07;minute=0x16;second=13; //软件预设时间参数
210 1 callhour=27,callminute=0,callsecond=0;
211 1 beep=1;
212 1 ht1380_rest=0;ht1380_sclk=0; //选中时钟芯片
213 1 read_time(); //设置时间
214 1 Init_Timer(); //初始化定时器及全局变量
215 1 number=0;
216 1 distime=1; //冒号显示
217 1 while(1)
218 1 {
219 2 distime=~distime; // 闪动冒号
220 2 read_time(); //读时间
221 2 if(state==0) //state=0 正常显示状态
222 2 {
223 3 read_time();
224 3 d[0]=hour/16;
225 3 d[1]=hour %16;
226 3 d[2]=minute/16;
227 3 d[3]=minute %16;
228 3 }
229 2 else //较时状态。让需要较时的位闪动
230 2 { set_time();
231 3 distem=d[w];
232 3 d[w]=10;
233 3 for(i=0;i<250;i++)
234 3 delay(250);
235 3 d[w]=distem;
236 3 for(i=0;i<250;i++)
237 3 delay(250);
238 3 }
239 2 keyboard=getkey(); //读按键;
240 2
C51 COMPILER V7.01 HT1380_TIME3 07/14/2007 22:40:48 PAGE 5
241 2 while(flag==1)
242 2
243 2 {
244 3
245 3 distime=1;
246 3 state=1;
247 3 /* set_time();*/
248 3 distem=d[w];
249 3 d[w]=10;
250 3 for(i=0;i<250;i++)
251 3 delay(250);
252 3 d[w]=distem;
253 3 for(i=0;i<250;i++)
254 3 delay(250);
255 3
256 3 keyboard1=getkey();
257 3
258 3
259 3 if(keyboard1==1)
260 3 { state=1; // ..按键后会同时向后退到下一位
261 4 w++;
262 4 if(w>3) w=0;
263 4 }
264 3 else if(keyboard1==2)
265 3 { d[w]++;
266 4 if(d[0]>2) d[0]=0;
267 4 if(d[0]==2&&d[1]>3) d[1]=0;
268 4 if(d[2]>5) d[2]=0;
269 4 else if(w>=1&&d[w]>9) d[w]=0;
270 4 }
271 3 else if(keyboard1==3)
272 3 { if(d[w]>0) d[w]--; }
273 3 else if(keyboard1==4)
274 3 { callhour=d[0]*16+d[1];
275 4 callminute=d[2]*16+d[3];
276 4 callsecond=0;
277 4 read_time();
278 4 d[0]=hour/16;
279 4 d[1]=hour %16;
280 4 d[2]=minute/16;
281 4 d[3]=minute %16;
282 4 state=0;
283 4 flag=0
284 4
285 4 ;
286 4
287 4 }
288 3
289 3
290 3 }
291 2
292 2
293 2
294 2
295 2
296 2
297 2
298 2
299 2
300 2
301 2 while(flag2==1)
302 2
C51 COMPILER V7.01 HT1380_TIME3 07/14/2007 22:40:48 PAGE 6
303 2 {
304 3
305 3 distime=1;
306 3 state=1;
307 3 /* set_time();*/
308 3 distem=d[w];
309 3 d[w]=10;
310 3 for(i=0;i<250;i++)
311 3 delay(250);
312 3 d[w]=distem;
313 3 for(i=0;i<250;i++)
314 3 delay(250);
315 3
316 3 keyboard1=getkey();
317 3
318 3
319 3 if(keyboard1==1)
320 3 { state=1; // ..按键后会同时向后退到下一位
321 4 w++;
322 4 if(w>3) w=0;
323 4 }
324 3 else if(keyboard1==2)
325 3 { d[w]++;
326 4 if(d[0]>2) d[0]=0;
327 4 if(d[0]==2&&d[1]>3) d[1]=0;
328 4 if(d[2]>5) d[2]=0;
329 4 else if(w>=1&&d[w]>9) d[w]=0;
330 4 }
331 3 else if(keyboard1==3)
332 3 { if(d[w]>0) d[w]--; }
333 3 else if(keyboard1==4)
334 3 { callhour2=d[0]*16+d[1];
335 4 callminute2=d[2]*16+d[3];
336 4 callsecond2=0;
337 4 read_time();
338 4 d[0]=hour/16;
339 4 d[1]=hour %16;
340 4 d[2]=minute/16;
341 4 d[3]=minute %16;
342 4 state=0;
343 4 flag2=0
344 4
345 4 ;
346 4
347 4 }
348 3
349 3
350 3 }
351 2
352 2
353 2
354 2
355 2
356 2
357 2
358 2 if(keyboard==1) // keyboard=1时,切换转态到较时并且多次..
359 2 { state=1; // ..按键后会同时向后退到下一位
360 3 w++;
361 3 if(w>3) w=0;
362 3 }
363 2 else if(keyboard==2)
364 2 { d[w]++;
C51 COMPILER V7.01 HT1380_TIME3 07/14/2007 22:40:48 PAGE 7
365 3 if(d[0]>2) d[0]=0;
366 3 if(d[0]==2&&d[1]>3) d[1]=0;
367 3 if(d[2]>5) d[2]=0;
368 3 else if(w>=1&&d[w]>9) d[w]=0;
369 3 }
370 2 else if(keyboard==3)
371 2 { if(d[w]>0) d[w]--; }
372 2 else if(keyboard==4)
373 2 { hour=d[0]*16+d[1];
374 3 minute=d[2]*16+d[3];
375 3 //second=0;
376 3 set_time();
377 3 state=0;
378 3 }
379 2
380 2 if(hour==callhour&&minute==callminute&&(second>=0&&second<=9))
381 2 {for(b=0;b<25;b++)
382 3 beep=0;
383 3 beep=1;
384 3 }
385 2 else beep=1;
386 2 if(hour==callhour2&&minute==callminute2&&(second>=0&&second<=9))
387 2 beep=0;
388 2 else beep=1;
389 2
390 2 }
391 1
392 1 }
393
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1237 ----
CONSTANT SIZE = 15 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 20 5
IDATA SIZE = ---- ----
BIT SIZE = 3 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?