【51单片机调用__TIME__无法实时时间】2023-7-10

缘由关于#51单片机#的问题:为什么这样不能在数码管上显示现在的时间-嵌入式-CSDN问答

为什么这样不能在数码管上显示现在的时间?

部分代码如下:

复制代码
#include <REGX52.H>
#include<intrins.h>
sbit u5A = P2^2;
sbit u5B = P2^3;
sbit u5C = P2^4;

unsigned char  Nixie[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                    0x7f,0x6f};//数码管0~9

void Delay400us()        //@12.000MHz
{
    unsigned char i, j;

    i = 5;
    j = 168;
    do
    {
        while (--j);
    } while (--i);
}

void ShowTime()//显示时间
{
    unsigned char SystemTime[9]=__TIME__;
    unsigned char j;
    for(j=0;j<8;j++)
    {
        switch(j)
        {
            case 0:u5A=1;u5B=1;u5C=1;break;
            case 1:u5A=0;u5B=1;u5C=1;break;
            case 2:u5A=1;u5B=0;u5C=1;break;
            case 3:u5A=0;u5B=0;u5C=1;break;
            case 4:u5A=1;u5B=1;u5C=0;break;
            case 5:u5A=0;u5B=1;u5C=0;break;
            case 6:u5A=1;u5B=0;u5C=0;break;
            case 7:u5A=0;u5B=0;u5C=0;break;
        }
        if(j==2 || j==5)
        {
            P0=0x40;
        }
        else
        {
            P0=Nixie[SystemTime[j]+'0'];
        }
        Delay400us();
    }
}

void main()
{
    while(1)
    {
        ShowTime();
    }
}

那就说明无法实时获取时间信息,况且如果程序下载到单片机中又何处去读取?只能验证数码管驱动是否正确,另外修改P0=NixieSystemTime\[j-'0'];

cpp 复制代码
#include <REGX52.H>
#include<intrins.h>
sbit u5A = P2^2;
sbit u5B = P2^3;
sbit u5C = P2^4;
unsigned char  Nixie[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管0~9
unsigned char SystemTime[8]=__TIME__;
void Delay400us()        //@12.000MHz
{//缘由https://ask.csdn.net/questions/7976046
    unsigned char i, j;
    i = 5;
    j = 168;
    do
    {
        while (--j);
    } while (--i);
}
void ShowTime()//显示时间static 
{
    unsigned char j;
    for(j=0;j<8;j++)
    {
        switch(j)
        {
            case 0:u5A=1;u5B=1;u5C=1;break;
            case 1:u5A=0;u5B=1;u5C=1;break;
            case 2:u5A=1;u5B=0;u5C=1;break;
            case 3:u5A=0;u5B=0;u5C=1;break;
            case 4:u5A=1;u5B=1;u5C=0;break;
            case 5:u5A=0;u5B=1;u5C=0;break;
            case 6:u5A=1;u5B=0;u5C=0;break;
            case 7:u5A=0;u5B=0;u5C=0;break;
        }
				P0=0;
        if(j==2 || j==5)
        {
            P0=0x40;
        }
        else
        {
            P0=Nixie[SystemTime[j]-'0'];
        }
        Delay400us();
    }
}
void main()
{
	unsigned char ys=0;
    while(1)
    {
        ShowTime();
			if(++ys==47)
			{ys=0;
						if(++SystemTime[7]>'9'){++SystemTime[6];SystemTime[7]='0';}
		if(SystemTime[6]>'5'){++SystemTime[4];SystemTime[6]='0';}
		if(SystemTime[4]>'9'){++SystemTime[3];SystemTime[4]='0';}
		if(SystemTime[3]>'5'){++SystemTime[1];SystemTime[3]='0';}
		if(SystemTime[1]>'9'){++SystemTime[0];SystemTime[1]='0';}
		if(SystemTime[0]=='2'&&SystemTime[1]=='4'){SystemTime[0]='0';SystemTime[1]='0';}
			}
    }
}
相关推荐
乐观勇敢坚强的老彭8 分钟前
信奥C++一维数组笔记
开发语言·c++·笔记
码上有光10 分钟前
异常和智能指针
java·大数据·c++·servlet·异常·智能指针
变量未定义~13 分钟前
最小生成树1(Prim模板)、最小生成树2(kruskal模板)、最近公共祖先(模板)
算法
这就是佬们吗16 分钟前
Python入门⑤-异常处理、文件操作与实战项目
开发语言·数据库·python·算法·pycharm
王维同学22 分钟前
[原创][Windows C++]Explorer Shell 扩展、图标覆盖与 COM 服务器定位
c++·windows·注册表
LONGZETECH24 分钟前
新能源汽车充电设备装配与调试仿真教学软件 技术架构与核心实现解析
大数据·算法·3d·unity·架构·汽车
昕光xg25 分钟前
Istio笔记04-基于Jaeger的分布式链路追踪
笔记·分布式·istio
code_pgf25 分钟前
C++ 工程架构设计规范
c++·机器人
自学小白菜26 分钟前
关于提升机器学习算法做预测回归任务精度的方法分享
算法·机器学习·回归·提升精度
C++ 老炮儿的技术栈32 分钟前
基于MFC+原生GDI手动自绘仪表盘控件
c语言·c++·visual studio·控件·工业控制·gdi·自绘