昨天有回答你,没提交上去,你看下吧!或许能帮你,也有百度私信给你
需要开启定时器设定100MS开启一次,置标志位flag_t0=1;
定时器函数根据资料自己写吧!我很少用51的,对格式不太了解,你自己参照资料改下就好了
void main()
{
init();//单片机初始化部分,包括端口初始化,定时器初始化等
while(1)
{
if(flag_t0==1)//每100MS运行一次程序
{
flag_t0=0;
num_t0++;
if(num_t0>=1200)//每两分钟判断按键是否按下,改变数码管显示状态及LED显示状态
{
num_t0=0;
if(flag_k2==1)//按键标志=1说明两分钟内有按键按下,数码显示数字+1,LED绿亮红灭
{
flag_k2=0;
num_shuma++;
if(num_shuma=10)
num_shuma=0;
p1.1=1;p1.0=0;
}
else //按键标志!=1说明两分钟内没有按键按下,LED绿灭红亮
{
p1.1=0;p1.0=1;
}
P2=DSY_CODE[num_shuma];//给数码管输出
}
if(k2==0)//每100MS检测按键,有按下时flag_k2置为1
{
flag_k2=1;
}
}
}
}
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit P3^2=K1;
uchar code DSY_CODE[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x82,0xf8,0x80,0x90,0xff
};
void DelayMS(uint x)
{
uchar t;
while(x--)
for(t=120;t>0;t--);
}
void main()
{
uchar i=0;
P0=0x00;
while(1)
{
if(k==0)
{
DelayMS(5);
if(k==0)
{
i++;
if(i>=10)
i=0;
P0=~DSY_CODE[i];
显示0-9*/
DelayMS(200);
}
}
}