标题: 求助大神STC89C52单片机,用数码管显示时间,请看程序 [打印本页]

作者: helloccz    时间: 2015-8-27 15:55
标题: 求助大神STC89C52单片机,用数码管显示时间,请看程序
STC89C52单片机,用数码管显示时间,请看程序:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar num,a,a1,b,b1,c,c1;
uchar shi,fen,miao;
sbit fm=P3^4;

void delay(uchar time)
{
  uchar i,j;
  for(i=time;i>0;i--)
    for(j=110;j>0;j--);
}

void init()
{
  TMOD=0x01;
  TH0=(65536-45872)/256;
  TL0=(65536-45872)%256;
  EA=1;
  ET0=1;
  TR0=1;
}

void display(char a,a1,b,b1,c,c1)
{
  P1=0x00;
  P2=table[a];
  delay(5);
  P1=0x01;
  P2=table[a1];
  delay(5);
  P1=0x02;
  P2=0x40;
  delay(5);

  P1=0x03;
  P2=table;
  delay(5);
  P1=0x04;
  P2=table[b1];
  delay(5);
  P1=0x05;
  P2=0x40;
  delay(5);

  P1=0x06;
  P2=table[c];
  delay(5);
  P1=0x07;
  P2=table[c1];
  delay(5);
}

void t0_time() interrupt 1
{
  TH0=(65536-45872)/256;
  TL0=(65536-45872)%256;
  num++;
}

void main()
{
  init();
  shi=15;
  fen=31;
  miao=00;
  while(1)
  {
    if(num==20)
        {
          num=0;
          if(miao==59)   //问题一:为什么miao==59而不等于60
          {
            miao=-1;     //问题二:为什么不是miao=0
            if(fen==59)
            {
                  fen=-1;
              if(shi==24)
                   shi=-1;
                  shi++;
                 }
                 fen++;
                 if(fen==50){fm=0;delay(80);fm=1;}
           }
           miao++;
         }
   a=shi/10;
   a1=shi%10;
   b=fen/10;
   b1=fen%10;
   c=miao/10;
   c1=miao%10;
   display(a,a1,b,b1,c,c1);
  }
}
          


作者: 电子爱好者life    时间: 2015-8-27 22:05
时间是0到59,并没有60啊,-1+1 =0
作者: 更ty6    时间: 2015-8-27 22:24
其实这个问题不是很复杂,具体的可见郭天祥老师的51单片机视频教程
作者: liaolinhui    时间: 2015-8-28 00:03
这个有点小错误,shi,fen,miao是uchar类型,范围只能是0-255,不能是负数,所以miao=-1是错误的,需要改类型为signed char有符号的,至于为什么是-1问题就在于miao++在后面,-1+1=0,如果把miao++放前面的话就可以使用0和60
作者: helloccz    时间: 2015-8-28 13:02
liaolinhui 发表于 2015-8-28 00:03
这个有点小错误,shi,fen,miao是uchar类型,范围只能是0-255,不能是负数,所以miao=-1是错误的,需要改 ...

谢谢,你纠正了我的错误
作者: 6467778399    时间: 2015-11-29 18:33
受用了  谢谢 了
作者: 人丑就要多读书    时间: 2017-9-22 17:43
fm=0代表的什么意思
作者: tjh19960528    时间: 2017-9-22 19:51
这个不懂啊
作者: 00灬00    时间: 2017-9-22 21:59
uchar没有负数吧





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1