以下是在Keil软件中,使用C语言实现的计数器程序:

#include<reg52.h>
#include<intrins.h>

#define uint unsigned int

sbit LED1=P2^0;
sbit LED2=P2^1;
sbit Key1=P3^4;
sbit Key2=P3^5;

uint cnt=0;

void Delay10ms(uint c)  //延时函数
{
    uint a,b;
    for(;c>0;c--)
    {
        for(b=199;b>0;b--)
        {
            for(a=1;a>0;a--);
        }
    }
}

void main()
{
    LED1=0;  //初始化
    LED2=0;
    Key1=1;
    Key2=1;
    while(1)
    {
        if(Key1==0)  //启动/停止
        {
            Delay10ms(20);  //消抖
            if(Key1==0)
            {
                while(!Key1);  //等待松手
                _nop_();  //空指令,用于消除按键抖动
                if(LED1==0)  //计数开始
                {
                    EA=1;  //中断允许
                    ET0=1;
                    TR0=1;  //启动定时器0
                }
                else  //计数停止
                {
                    TR0=0;  //关闭定时器0
                    cnt=0;  //计数清零
                    LED1=0;  //指示灯熄灭
                }
            }
        }
        if(Key2==0)  //清零
        {
            Delay10ms(20);  //消抖
            if(Key2==0)
            {
                while(!Key2);  //等待松手
                _nop_();  //空指令,用于消除按键抖动
                cnt=0;  //计数清零
                LED1=0;  //指示灯熄灭
                LED2=0;
            }
        }
    }
}

void Timer0() interrupt 1  //定时器0中断服务函数
{
    TH0=(65536-50000)/256;  //重新赋初值
    TL0=(65536-50000)%256;
    cnt++;  //计数加1
    if(cnt==100)  //计数到100时,显示器清零
    {
        cnt=0;
        LED1=0;
        LED2=0;
    }
    else
    {
        LED1=cnt/10+1;  //计算十位数
        LED2=cnt%10+1;  //计算个位数
    }
}

这个程序使用了一个定时器和两个按键,其中按键1用于启动/停止计数,按键2用于清零计数器。在计数过程中,程序会将计数结果通过两个LED灯显示出来。需要注意的是,由于每个LED灯只能显示0-9的数字,所以在显示时需要将计数结果拆分成十位数和个位数进行分别显示

两位led显示可以显示00到99两个按键分别为启动停止键和清0键用c语言简介的再keil软件中实现

原文地址: https://www.cveoy.top/t/topic/fjxq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录