时钟编程到二十点后就不动了,问原因

[复制链接]
 楼主| hwta 发表于 2011-5-26 19:02 | 显示全部楼层 |阅读模式
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar aa,num1,s,h2,h1,m1,m2;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void display(uchar ,uchar ,uchar,uchar);
     void delay(uint z)
{
uint t1,y;
for(t1=z;t1>0;t1--)
  for(y=110;y>0;y--);
}
void main()
{   
    m1=0;  
h2=0;
h1=0;
m2=0;
  P2=0x0f;
  s=0;
aa=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
     display ( h2,h1,m2, m1);
      
    }
           
}
      
  

void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;   
        if(aa==1)
   {
     
    aa=0;
    s=s+1;
   
      if(s==1)
      {  s=0;
         m1++;
    if(m1==10)
      { m1=0;
        m2=m2+1;
      if(m2==6)
       { m2=0;
       h1=h1+1;
      if(h1==10)
        {  h1=0;
        h2=h2+1;
        while(h2==2)
       {  h1=0;
         if(h1==5)
      
         {  m1=0;m2=0;h1=0;h2=0;
         
         }
      
      
       }
      
         
      
       }
      
       }
       }
          }
     
        
      
      
     
        }
   
   }
      void display(uchar num1,uchar m2,uchar h1,uchar h2)
   {
   
          P2=0xef;
   
         P0=table[num1];
    delay(2) ;
      P2=0xdf;
      P0=table[m2];
    delay(2) ;
      P2=0xbf;
      P0=table[h1];
    delay(2);
      P2=0x7f;
      P0=table[h2];
      delay(2);
    }
特别是下面写的程序好像不能运行,请帮忙
      while(h2==2)
       {  h1=0;
         if(h1==5)
      
         {  m1=0;m2=0;h1=0;h2=0;
NE5532 发表于 2011-5-26 22:17 | 显示全部楼层
程序要注释,自己都可以找到问题。
老鱼探戈 发表于 2011-5-27 08:44 | 显示全部楼层
这段太牛了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

0

主题

16

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

0

主题

16

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部