普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 7198|回复: 1

[已解决] 纯小白 求助大神

[复制链接]

2

主题

2

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2020-4-16 20:39:59 | 显示全部楼层 |阅读模式
5金钱
51单片机做一个定时器0~99999999用上%程序纯小白求大神帮忙

最佳答案

本帖最后由 HC6800-ES-V2.0 于 2020-4-18 10:11 编辑 我来做作业 #include <STC90C5xAD.H> #define GPIO_DIG P0 sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; unsigned char code DIG_ ...

回复

使用道具 举报

20

主题

1344

帖子

8387

积分

论坛元老

Rank: 8Rank: 8

积分
8387
发表于 2020-4-17 13:45:37 | 显示全部楼层
本帖最后由 HC6800-ES-V2.0 于 2020-4-18 10:11 编辑

我来做作业

#include <STC90C5xAD.H>

#define GPIO_DIG P0

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

unsigned char code DIG_CODE[16]={0x3f,0x06,
0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,
0x7c,0x39,0x5e,0x79,0x71};
unsigned char DisplayData[8];
unsigned int SS=0,TT=0,i=0;

void DigDisplay()
{
        unsigned char i,j;
        for(i=0;i<8;i++)
        {
                switch(i)
                {
                        case(0):
                                LSA=0;LSB=0;LSC=0; break;
                        case(1):
                                LSA=1;LSB=0;LSC=0; break;
                        case(2):
                                LSA=0;LSB=1;LSC=0; break;
                        case(3):
                                LSA=1;LSB=1;LSC=0; break;
                        case(4):
                                LSA=0;LSB=0;LSC=1; break;
                        case(5):
                                LSA=1;LSB=0;LSC=1; break;
                        case(6):
                                LSA=0;LSB=1;LSC=1; break;
                        case(7):
                                LSA=1;LSB=1;LSC=1; break;
                }
                GPIO_DIG=DisplayData;
                j=30;
                while(j--);        
                GPIO_DIG=0x00;
        }
}

void TimerConfiguration()
{
    TMOD = 0x01;
    TH0 = 0x3c;
    TL0 = 0xB0;
        PT0=1;
    EA = 1;
    ET0 = 1;
        TR0=1;
}

void XS(void)
{
                DisplayData[7]=DIG_CODE[(SS/10000000)];
                DisplayData[6]=DIG_CODE[(SS%10000000)/1000000];
                DisplayData[5]=DIG_CODE[(SS%1000000)/100000];
                DisplayData[4]=DIG_CODE[(SS%100000)/10000];
                DisplayData[3]=DIG_CODE[(SS%10000)/1000];               
                DisplayData[2]=DIG_CODE[(SS%1000)/100];
                DisplayData[1]=DIG_CODE[(SS%100)/10];
                DisplayData[0]=DIG_CODE[(SS%10)/1];
}

void main ()
{
        TimerConfiguration();
        while(1)
        {
                XS();
                DigDisplay();
        }
}

void Timer0() interrupt 1
{
        TH0 = 0x3c;
    TL0 = 0xb0;
        TT++;
        if (TT>=20)
        {
                TT=0;
                SS++;
        }
        TF0=0;
}

我的程序适用于这样的电路(图片上传不了):HC6800-ES-V2.0板子
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-5-2 22:23 , Processed in 0.083845 second(s), 31 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表