《昂山素季》在线观看:键盘扫描用c语言实现

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 01:57:48
#include<reg51.h>
#include <absacc.h>

#define uchar unsigned char
#define uint unsigned int

void delays(void);
uchar kbscan(void);

sbit A0=P0^0;
sbit A1=P0^1;
sbit A2=P0^2;
sbit A3=P0^3;
sbit A4=P0^4;
sbit A5=P0^5;
uchar key;

//************************************************************************************************
//延迟子程序
void delays(void)
{
uchar i;
for(i=300;i>0;i--);
}

//*************************************************************************************************
// kbscan(void) 键扫描函数
uchar kbscan(void)
{
uchar sccode,recode;
P2=0xf0; /*发全"0"行扫描码,列线输入*/
if((P2&0xf0)!=0xf0) /*若有键按下*/
{
delays(); /*延时去抖动*/
if((P2&0xf0)!=0xf0)
{
sccode=0xfe; /*逐行扫描初值*/
while((sccode&0x10)!=0)
{
P2=sccode; /*输出行扫描码*/
if((P2&0xf0)!=0xf0) /*本行有键按下*/
{
recode=(P2&0xf0)|0x0f;
return((~sccode)+(~recode)); /*返回特征字节码*/
}
else sccode=(sccode<<1)|0x01; /*行扫描码左移一位*/
}
}
}
return(0); /*无键按下,返回值为0*/
}

//***********************************************************************************************
void main(void)
{
uchar key;
while(1)
{
key=kbscan(); /*键扫描函数*/
delays(); /*键消抖的延时函数*/
if (key==0x7e)
{
A0=0; //p0.0口置低

}
if (key==0xbe)
{
A0=1; //P0。0口置高

}
if (key==0xde)
{

A1=0; //P0。1置低
}
if (key==0xdd)
{
A1=1; //P0。1置高
}
}
}
清哪位高手帮看看为什么不能执行按0,1,。。。键及执行某一操作