shannl 2016-05-26 10:02 采纳率: 0%
浏览 1824

51单片机利用串口改变时钟问题

下面是我用串口改变时间的代码,但是我只会改变时、分、秒中的一个,求大神帮我改一改能够分别改时、分、秒

 #include<reg51.h>
#define uint unsigned int
#define uchar unsigned char 
uchar hour,min,sec,temp;
uchar aa;
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};                             
void  delay(uint z);
void  display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f);
void  time_change();
void revdata(void) interrupt 4
{
        ES=0;
    if(RI==1){RI=0;aa=SBUF-48;
        hour=aa;
    ES=1;}

}
void main()
{
         hour=0;
         min=0;
         sec=0;
           SCON=0x50;
           PCON = 0x00;
         TMOD=0x21;
         TH0=(65536-50000)/256;
         TL0=(65536-50000)%256;
           TH1=0xfd;
           TL1=0xfd;
         EA=1;
           ES=1;
         ET0=1;
           ET1=0;
         TR0=1;
           TR1=1;
           delay(50);
    while(1)
    {   
time_change();
 display(table[hour/10],table[hour%10],table[min/10],table[min%10],table[sec/10],table[sec%10]);                    
    }
}
void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
{

    P1=0x01;P0=a;delay(2);
    P1=0x02;P0=b;delay(2);
    P1=0x08;P0=c;delay(2);
    P1=0x10;P0=d;delay(2);
    P1=0x40;P0=e;delay(2);
    P1=0x80;P0=f;delay(2);
    P1=0x04;P0=0xbf;delay(2);
    P1=0x20;P0=0xbf;delay(2);
}
void timer0() interrupt 1
{
         TH0=(65536-50000)/256;
         TL0=(65536-50000)%256;
         temp++;
}
void delay(uint z)
{
     uint j,k;
     for(j=z;j>0;j--)
     for(k=120;k>0;k--);
}
void time_change()
{
         if(temp>=20)
         {
          temp=0;
     sec++;
          if(sec>=60)
            {
                 sec=0;
                     min++;
                     if(min>=60)
                     {
                             min=0;
                        hour++;
                             if(hour>=24)
                             {
                                    hour=0;
                             }
                      }
             }
          }
}
  • 写回答

1条回答 默认 最新

  • bbc1243 2016-05-26 10:09
    关注

    单片机通过串口通信调整时间的程序
    http://www.eeworld.com.cn/mcu/2015/0429/article_19714.html

    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB动图的问题
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名