找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1652|回复: 3
收起左侧

51单片机实现0-9.9秒的秒表程序,这样有问题嘛?

[复制链接]
ID:782139 发表于 2020-6-18 12:59 | 显示全部楼层 |阅读模式
在学单片机,用51单片机实现0-9.9秒的秒表,有一个暂停键,一个开始键,按开始键开始计数,最小精度为0.1,按暂停键暂停,此时秒数不变化,按开始键可继续计数。
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define LED P0
#define PSCAN P1
uchar scan=0x01;
uint count_T1=0;
uchar number[2]={0,0};
uchar table[10]={0xc0,0xf9,0xa4,0x60,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管
sbit button_start=P2^0;
sbit button_stop=P2^1;
uchar sec=0;
void delay(uchar x)
{
        uchar a;
        while(x--)
        {
                for(a=0;a<250;a++);
        }
}

void Init(void)
{
        IE=0X86;
        TMOM=0X21;
        TH0=0X3C;TL0=0X60;//T0 50ms定时
        TL0=0X06;TH1=TL1;//T1 250微秒定时
        TR0=1;TR1=0;
}

//T0定时扫描,在数码管显示,每0.05秒扫描一次
void Inter_T0(void) interrupt 1
{
        TH0=0X3C;TL0=0X60;
        if(scan==0x03) scan=0x01;
        PSCAN=scan;
        LED=table[number[scan-1]];
        scan++;
}

void Inter_T1(void) interrupt 3
{
        if(++count==400)//到达0.1秒
        {
                count_T1=0;
                sec++;
                if(sec==100) sec=0;
                number[0]=sec/10;
                number[1]=sec%10;
        }
}

void main(void)
{
        Init();
        while(1)
        {
                if(!button_start)
                {
                        delay(20);//延时20ms
                        if(!button_start)
                        {
                                delay(20);
                                while(!button_start);
                                TR1=1;
                        }
                }
                else if(!button_stop)
                {
                        delay(20);//延时20ms
                        if(!button_stop)
                        {
                                delay(20);
                                while(!button_stop);
                                TR1=0;
                        }
                }
        }
}

仿真图类似于这个,网上找的,把它的reset改成了stop功能。
有大神帮忙看看对不对嘛。


回复

使用道具 举报

ID:332444 发表于 2020-6-18 16:24 | 显示全部楼层
回复

使用道具 举报

ID:782139 发表于 2020-6-18 22:34 来自手机 | 显示全部楼层
xianfajushi 发表于 2020-6-18 16:24
可参https://blog.csdn.net/xianfajushi/article/details/89448933

啊这,想问头文件reg52.h和reg51.h有啥区别啊。我用的两个数码管,感觉挺简单的,他那个好复杂哦。
回复

使用道具 举报

ID:332444 发表于 2020-6-19 09:32 | 显示全部楼层
按你自己的理解去写,不用管别人如何写,看看别人的思路是可行的。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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