51单片机独立式按键程序

#include<reg52.h>

unsigned?char?ID;

sbit?k1?=?P3?^?7;//?定义按键端口

void?delay()

{

TMOD?=?0x10;//?定时器的工作方式

TH1=0xd8;

TL1=0xf0;

TR1=1;

while(!TF1);//?这里错了,是定时器1

TF1=0;

}

void?main()

{

while(1)

{

if(k1==0)

{

delay();?//去抖动

if(k1==0)//检测按键确实按下,进行按键处理

{

ID++;

if(ID==0)

{

ID=0;

}

while(!k1);//这里错了,多余的加了==0

}

}

switch(ID)

{

case?0:P1=0x3f;break;

case?1:P1=0x06;break;

case?2:P1=0x5b;break;

case?3:P1=0x4f;break;

case?4:P1=0x66;break;

case?5:P1=0x6d;break;

case?6:P1=0x7d;break;

case?7:P1=0x07;break;

case?8:P1=0x7f;break;

case?9:P1=0x6f;break;

default:break;

}

}

}