ht1380_time3.lst
来自「自己的平时一些制作 现在整理一下 与大家一起分享」· LST 代码 · 共 562 行 · 第 1/2 页
LST
562 行
264 2 j++;
265 2 if(j>=57) j=0;
266 2 }
267 1
268 1 do
269 1 {
270 2 if(i>=57) i=0;
271 2 if(j>=57) j=0;
272 2 SoundLong=SOUNDLONG[i];
273 2 SoundTone=SOUNDTONE[j];
274 2 i++;
275 2 j++;
276 2
277 2 for(n=0;n<SoundLong;n++)
278 2 {
279 3 for(k=0;k<12;k++)
280 3 {
281 4 beep=0;
282 4 for(m=0;m<SoundTone/2;m++)
283 4 ;
284 4 beep=1;
285 4 for(m=0;m<SoundTone/2;m++)
286 4 ;
287 4 }
288 3 }
289 2 delay50us(6);
290 2 }while((SOUNDLONG[i] !=0) || (SOUNDTONE[j] !=0));
291 1 }
292
293
294
295
296
297
298
299
300
301
302
C51 COMPILER V7.01 HT1380_TIME3 07/14/2007 22:45:25 PAGE 6
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323 /*******主函数***********/
324 //效果:
325 //显示时分
326 //可用按键调整时间-时分
327 //在较时状态时,相应的数字闪烁
328 //第一个按键用于调整到较时状态并且可以切换要修改的位,第二个按键用于加1..
329 //..第三个按键用于减,第四个按键用于确认回到正常显示状态。
330 //这里就不调整年月日了.大家可以考虑一下如何调整
331
332 void main (void)
333 {
334 1 unsigned char keyboard,keyboard1; //键值变量
335 1 unsigned char state=0; //状态指示 =1较时状态 =0正常显示状态
336 1 unsigned char i,distem,w=3; //变量
337 1 year=07;month=03;day=0x05;hour=0x07;minute=0x16;second=13; //软件预设时间参数
338 1 callhour=27,callminute=0,callsecond=0;
339 1 beep=1;
340 1 ht1380_rest=0;ht1380_sclk=0; //选中时钟芯片
341 1 read_time(); //设置时间
342 1 Init_Timer(); //初始化定时器及全局变量
343 1 number=0;
344 1 distime=1; //冒号显示
345 1 while(1)
346 1 {
347 2 distime=~distime; // 闪动冒号
348 2 read_time(); //读时间
349 2 if(state==0) //state=0 正常显示状态
350 2 {
351 3 read_time();
352 3 d[0]=hour/16;
353 3 d[1]=hour %16;
354 3 d[2]=minute/16;
355 3 d[3]=minute %16;
356 3 }
357 2 else //较时状态。让需要较时的位闪动
358 2 { set_time();
359 3 distem=d[w];
360 3 d[w]=10;
361 3 for(i=0;i<250;i++)
362 3 delay(250);
363 3 d[w]=distem;
364 3 for(i=0;i<250;i++)
C51 COMPILER V7.01 HT1380_TIME3 07/14/2007 22:45:25 PAGE 7
365 3 delay(250);
366 3 }
367 2 keyboard=getkey(); //读按键;
368 2
369 2 while(flag==1)
370 2
371 2 {
372 3
373 3 distime=1;
374 3 state=1;
375 3 /* set_time();*/
376 3 distem=d[w];
377 3 d[w]=10;
378 3 for(i=0;i<250;i++)
379 3 delay(250);
380 3 d[w]=distem;
381 3 for(i=0;i<250;i++)
382 3 delay(250);
383 3
384 3 keyboard1=getkey();
385 3
386 3
387 3 if(keyboard1==1)
388 3 { state=1; // ..按键后会同时向后退到下一位
389 4 w++;
390 4 if(w>3) w=0;
391 4 }
392 3 else if(keyboard1==2)
393 3 { d[w]++;
394 4 if(d[0]>2) d[0]=0;
395 4 if(d[0]==2&&d[1]>3) d[1]=0;
396 4 if(d[2]>5) d[2]=0;
397 4 else if(w>=1&&d[w]>9) d[w]=0;
398 4 }
399 3 else if(keyboard1==3)
400 3 { if(d[w]>0) d[w]--; }
401 3 else if(keyboard1==4)
402 3 { callhour=d[0]*16+d[1];
403 4 callminute=d[2]*16+d[3];
404 4 callsecond=0;
405 4 read_time();
406 4 d[0]=hour/16;
407 4 d[1]=hour %16;
408 4 d[2]=minute/16;
409 4 d[3]=minute %16;
410 4 state=0;
411 4 flag=0
412 4
413 4 ;
414 4
415 4 }
416 3
417 3
418 3 }
419 2
420 2
421 2
422 2
423 2
424 2
425 2
426 2
C51 COMPILER V7.01 HT1380_TIME3 07/14/2007 22:45:25 PAGE 8
427 2
428 2
429 2 while(flag2==1)
430 2
431 2 {
432 3
433 3 distime=1;
434 3 state=1;
435 3 /* set_time();*/
436 3 distem=d[w];
437 3 d[w]=10;
438 3 for(i=0;i<250;i++)
439 3 delay(250);
440 3 d[w]=distem;
441 3 for(i=0;i<250;i++)
442 3 delay(250);
443 3
444 3 keyboard1=getkey();
445 3
446 3
447 3 if(keyboard1==1)
448 3 { state=1; // ..按键后会同时向后退到下一位
449 4 w++;
450 4 if(w>3) w=0;
451 4 }
452 3 else if(keyboard1==2)
453 3 { d[w]++;
454 4 if(d[0]>2) d[0]=0;
455 4 if(d[0]==2&&d[1]>3) d[1]=0;
456 4 if(d[2]>5) d[2]=0;
457 4 else if(w>=1&&d[w]>9) d[w]=0;
458 4 }
459 3 else if(keyboard1==3)
460 3 { if(d[w]>0) d[w]--; }
461 3 else if(keyboard1==4)
462 3 { callhour2=d[0]*16+d[1];
463 4 callminute2=d[2]*16+d[3];
464 4 callsecond2=0;
465 4 read_time();
466 4 d[0]=hour/16;
467 4 d[1]=hour %16;
468 4 d[2]=minute/16;
469 4 d[3]=minute %16;
470 4 state=0;
471 4 flag2=0
472 4
473 4 ;
474 4
475 4 }
476 3
477 3
478 3 }
479 2
480 2
481 2
482 2
483 2
484 2
485 2
486 2 if(keyboard==1) // keyboard=1时,切换转态到较时并且多次..
487 2 { state=1; // ..按键后会同时向后退到下一位
488 3 w++;
C51 COMPILER V7.01 HT1380_TIME3 07/14/2007 22:45:25 PAGE 9
489 3 if(w>3) w=0;
490 3 }
491 2 else if(keyboard==2)
492 2 { d[w]++;
493 3 if(d[0]>2) d[0]=0;
494 3 if(d[0]==2&&d[1]>3) d[1]=0;
495 3 if(d[2]>5) d[2]=0;
496 3 else if(w>=1&&d[w]>9) d[w]=0;
497 3 }
498 2 else if(keyboard==3)
499 2 { if(d[w]>0) d[w]--; }
500 2 else if(keyboard==4)
501 2 { hour=d[0]*16+d[1];
502 3 minute=d[2]*16+d[3];
503 3
504 3 set_time();
505 3 state=0;
506 3 }
507 2
508 2 if(hour==callhour&&minute==callminute&&second>=0&&second<=0x30)
509 2 {
510 3 Music(1);
511 3
512 3 }
513 2 if(hour==callhour2&&minute==callminute2&&second>=0&&second<=0x30)
514 2 Music(2);
515 2
516 2
517 2 }
518 1
519 1 }
520
521
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1595 ----
CONSTANT SIZE = 131 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 20 13
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 + -
显示快捷键?