#include<reg51.h>
#include<intrins.h>
#define GPIO_LED P2 //将P2口另外取名为GPIO_LED
#define GPIO_KEY P0
void Delay10ms(unsigned int); //误差 0us
/*******************************************************************************
* 函数名 : main
* 函数功能 : 主函数
* 输入 : 无
* 输出 : 无
*******************************************************************************/
unsigned char code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9的值
void main(void)
{
//unsigned char n;
int i,j;
j=~DIG_CODE[0];
while(1)
{
GPIO_LED = j;
if(GPIO_KEY!=0xFF)
{
Delay10ms(1);
if(GPIO_KEY==0xFE)//1111 1110
{
j=~DIG_CODE[1];
}
if(GPIO_KEY==0xFD)//1111 1101
{
j=~DIG_CODE[2];
}
if(GPIO_KEY==0xFB)//1111 1011
{
j=~DIG_CODE[3];
}
if(GPIO_KEY==0xF7)//1111 0111
{
j=~DIG_CODE[4];
}
if(GPIO_KEY==0xEF)//1110 1111
{
j=~DIG_CODE[5];
}
if(GPIO_KEY==0xDF)//1101 1111
{
j=~DIG_CODE[6];
}
if(GPIO_KEY==0xBF)//1011 1111
{
j=~DIG_CODE[7];
}
if(GPIO_KEY==0x7F)//0111 1111
{
j=~DIG_CODE[8];
}
while((i<50)&&(GPIO_KEY!=0xFF)) //检测按键是否松开
{
Delay10ms(1);
i++;
}
i=0;
}
}
}
/*******************************************************************************
* 函数名 : Delay10ms
* 函数功能 : 延时函数,延时10ms
* 输入 : 无
* 输出 : 无
*******************************************************************************/
void Delay10ms(unsigned int c) //误差 0us
{
unsigned char a,b;
for(;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}