两位led显示可以显示00到99两个按键分别为启动停止键和清0键用c语言简介的再keil软件中实现
以下是在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的数字,所以在显示时需要将计数结果拆分成十位数和个位数进行分别显示
原文地址: https://www.cveoy.top/t/topic/fjxq 著作权归作者所有。请勿转载和采集!