为什么我写的电子时钟程序烧进去后就只是很快的乱码显示一下就不显示了呢

2019-03-24 17:43发布



本人菜鸟一只,前一段时间突然想起用6位数码管做一个显示秒、分、钟的一个简单的电子时钟,结果弄了很久也没弄出来。现在是程序烧进去后就只是很快的乱码显示一下就不显示了。查了很久也没查出原因。
麻烦各位大侠帮我看看我的是程序哪里出了问题:

#include<reg52.h>
#define uchar unsigned char
sbit duan=P2^6;
sbit wei=P2^7;

uchar miao, feng, zhong, i ,zg,zs,fg,fs,mg,ms;

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,};

void delay(uchar j,uchar k)
{
for(j=100;j>0;j--)
        for(k=125;k>0;k--);
}
        
void display(uchar zg,uchar zs,uchar fg,uchar fs,uchar mg,uchar ms)         

        {
   duan=1;
         P0=table[zg];   //钟个位显示
         duan=0;
         
         wei=1;
         P0=0xfd;       //第一个数码管亮
         wei=0;
         delay();
               
         duan=1;
         P0=table[zs];  //钟十位显示
         duan=0;
         
         wei=1;
         P0=0xfe;   //第二个数码管亮
         wei=0;
         delay();
        
        //
         duan=1;
         P0=table[fg];   //分个位显示
         duan=0;
         
         wei=1;
         P0=0xf7;      //第三个数码管亮
         wei=0;
         delay();
               
         duan=1;
         P0=table[fs];  //分十位显示
         duan=0;
         
         wei=1;
         P0=0xfb;      //第四个数码管亮
         wei=0;
         delay();
               
        
        //
         duan=1;
         P0=table[mg];   //秒个位显示
         duan=0;
         
         wei=1;
         P0=0xdf;     //第五个数码管亮
         wei=0;
         delay();


         duan=1;
         P0=table[ms];  //秒十位显示
         duan=0;
         
         wei=1;
         P0=0xef;   //第六个数码管亮
         wei=0;
         delay();
}

        void zhongduan()interrupt 1
{
  TH0=(65536-46080)/256;
        TL0=(65536-46080)%256;
        i++;
        if(i==20)
{miao++;
        i=0;
        }
}


void mian()

{
  miao=6;
        feng=7;
        zhong=12;

        TMOD=0x01;
        TH0=(65536-46080)/256;//设50毫秒一次
        TL0=(65536-46080)%256;
        
        EA=1;
        ET0=1;
        TR0=1;
               
                while(1)
        {        
        if(miao==60)   //秒逢60进1
        {miao=0;        feng++;
        if(feng==60)
                {feng=0; zhong++;
        if(zhong==24)
        {zhong=0;}
}
                }
        
        mg=miao%10;   //秒个位
        ms=miao/10;   //秒十位
        fg=feng%10;   //分个位
        fs=feng/10;   //分十位
        zg=zhong%10;  //钟个位
        zs=zhong/10;  //钟十位
        display(zg,zs,fg,fs,mg,ms);
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。