找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2915|回复: 0
打印 上一主题 下一主题
收起左侧

单片机可调电子时钟表程序;修正bug

[复制链接]
跳转到指定楼层
楼主
ID:70976 发表于 2014-12-25 13:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<reg51.h>
  2. unsigned int tt;
  3. sbit qd=P3^3;
  4. sbit zy=P2^1;
  5. sbit yy=P2^2;
  6. sbit ja=P2^3;
  7. sbit jn=P2^0;
  8. unsigned char code tab[]={0x88,0Xbe,0Xc4,0X94,0Xb2,0X91,0X81,0Xbc,0X80,0X90,0xff};


  9. void delay(unsigned char z)
  10. {
  11. unsigned char x,y;
  12. for(x=z;x>0;x--)
  13. for(y=110;y>0;y--);
  14.   
  15. }

  16. void main()
  17. {
  18. unsigned char zhi[6];
  19. unsigned char i,b,k;
  20. SCON=0;
  21. TMOD=0x02;
  22. EA=1;
  23. TR0=1;
  24. ET0=1;
  25. TH0=18;
  26. TL0=18;
  27. while(1)
  28. {
  29. if(qd==0)
  30. {
  31. delay(5);

  32.       if(qd==0)
  33. {
  34.     while(qd==0);

  35.    TR0=0;k=1;b=0;while(k)
  36.   {
  37.    if(zy==0){delay(5);if(zy==0){while(zy==0);if(b==0)b=6;b--;}}

  38.    if(yy==0){delay(5);if(yy==0){while(yy==0);b++;if(b==6)b=0;}}
  39.    
  40.    if(ja==0){delay(5);if(ja==0){while(ja==0);zhi[b]++;

  41.     if(b==0&&zhi[b]==3)             zhi[b]=0;
  42.    
  43.     if(b==1&&zhi[b]==10)  zhi[b]=0;
  44.    
  45.     if(b==2&&zhi[b]==6)        zhi[b]=0;

  46.     if(b==3&&zhi[b]==10)  zhi[b]=0;
  47.    
  48.     if(b==4&&zhi[b]==6)        zhi[b]=0;

  49.     if(b==5&&zhi[b]==10)  zhi[b]=0;   }}




  50.    if(jn==0){delay(5);if(jn==0){while(jn==0);
  51.    
  52.     if(b==0&&zhi[b]==0)             zhi[b]=3;
  53.    
  54.     if(b==1&&zhi[b]==0)    zhi[b]=10;
  55.    
  56.     if(b==2&&zhi[b]==0)         zhi[b]=6;

  57.     if(b==3&&zhi[b]==0)    zhi[b]=10;
  58.    
  59.     if(b==4&&zhi[b]==0)         zhi[b]=6;

  60.     if(b==5&&zhi[b]==0)    zhi[b]=10;   
  61.    
  62.                  zhi[b]--;}}
  63.        if(zhi[0]==2&&zhi[1]==4) zhi[1]=0;
  64.        if(zhi[0]==2&&zhi[1]==9) zhi[1]=3;
  65.       

  66.    if(qd==0){delay(5);if(qd==0){while(qd==0);k=0; }}

  67.     for(i=0;i<6;i++)
  68. {

  69. if(b==i){ SBUF=tab[10];while(!TI);TI=0;}
  70. else
  71. {
  72.   SBUF=tab[zhi[ i]];
  73.   while(!TI);
  74.   TI=0;
  75. } }
  76.    delay(100);

  77. for(i=0;i<6;i++)


  78. {
  79. SBUF=tab[zhi[ i]];
  80. while(!TI);
  81. TI=0;
  82. }
  83.    delay(100);



  84.   }
  85. }
  86. }
  87.         




  88. TR0=1;



  89. if(tt==4000)
  90. {
  91.   tt=0;

  92. for(i=0;i<6;i++)
  93. {
  94.   SBUF=tab[zhi[ i]];
  95.   while(!TI);
  96.   TI=0;
  97. }
  98.    zhi[5]++;

  99.    if(zhi[5]==10){zhi[5]=0;zhi[4]++;

  100.    if(zhi[4]==6){zhi[4]=0;zhi[3]++;

  101.    if(zhi[3]==10){zhi[3]=0;zhi[2]++;

  102.    if(zhi[2]==6){zhi[2]=0;zhi[1]++;

  103.    if(zhi[1]==10){zhi[1]=0;zhi[0]++;}}}}}

  104.           if(zhi[0]==2&&zhi[1]==4)

  105.    {zhi[0]=0;zhi[1]=0;zhi[2]=0;zhi[3]=0;zhi[4]=0;zhi[5]=0;}

  106.   
  107.   }
  108.   }
  109.   }
  110.   


  111. void timer0(void) interrupt 1         //定时器0中断服务函数
  112. {

  113.   TH0=18;
  114.         TL0=18;             //重赋定时初值
  115.         tt++;            //用于记中断次数
  116.       
  117. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表