#include<reg52.h> //库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int //宏定义无符号整型
/********************************************************************
初始定义
*********************************************************************/
uchar count=0; //按键计数,每按一下,count 加1
uchar a,b; //定义字符型变量
uchar temp; //定义字符型变量
sbit BUTTON1=P2^0; //定义按键的输入端(为单片机P2口的P2.0按键)
sbit BUTTON2=P2^1;
sbit BUTTON3=P2^2;
sbit BUTTON4=P2^3;
sbit LED1=P2^4; //LED1
sbit LED2=P2^5;
sbit LED3=P2^6;
sbit LED4=P2^7;
uchar led2flag=0;
uchar led3flag=0;
/********************************************************************
延时函数
*********************************************************************/
void delay10ms(void) //延时程序
{
uchar i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
void delay_ms(unsigned int timer)
{
unsigned int i,j;
for(i=0; i<timer; i++)
for(j=0; j<110; j++);
}
/********************************************************************
按键判断函数
*********************************************************************/
void key_scan(void) //按键判断程序
{
if(BUTTON1==0) //判断是否按下键盘
{
delay10ms(); //延时,软件去干扰
if(BUTTON1==0) //确认按键按下
{
LED1=0;
}
while(BUTTON1==0);//按键锁定,每按一次count 只加1.
LED1=1;
}
if(BUTTON2==0) //判断是否按下键盘
{
delay10ms(); //延时,软件去干扰
if(BUTTON2==0) //确认按键按下
{
LED2=0;
}
while(BUTTON2==0);//按键锁定,每按一次count 只加1.
led2flag=1;
}
if(BUTTON3==0) //判断是否按下键盘
{
delay10ms(); //延时,软件去干扰
if(BUTTON3==0) //确认按键按下
{
LED3=0;
led3flag=1;
}
}
if(BUTTON4==0) //判断是否按下键盘
{
delay10ms(); //延时,软件去干扰
if(BUTTON4==0) //确认按键按下
{
LED4=~LED4;
}
while(BUTTON4==0);//按键锁定,每按一次count 只加1.
}
}
/**********************T0????·??????ò*******************/
void timer0(void)interrupt 1 using 1
{
static unsigned int num=0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(led2flag==1)
{
num++;
if(num>200)
{
num=0;
led2flag=0;
LED2=1;
}
}
if(led3flag==1)
{
num++;
if(num>200)
{
num=0;
led3flag=0;
LED3=1;
}
}
}
/********************************************************************
主函数
*********************************************************************/
void main()
{
P2=0xff;
IT0=1; //INT0?
TMOD=0x01;//
TH0=(65536-50000)/256;//
TL0=(65536-50000)%256;
EA=1; //
ET0=1;//
EX0=1;//
TR0=1;//
while(1)
{
key_scan(); //调用按键判断函数
}
}
/********************************************************************
结束
*********************************************************************/
全部资料51hei下载地址:
按键识别led.rar
(57.48 KB, 下载次数: 9)
|