征集:键盘扫描源程序大全
来源:互联网 发布:网络盒子应用破解版 编辑:程序博客网 时间:2024/05/20 09:46
在codevisionAVR编译器下的代码为:
/****************************************************************************************/
#include
#include
#define uchar unsigned char
uchar dat;//这是扫描返回值变量
const uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,
0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //用来显示的断码
/*************************************************************************************/
该部分函数主要功能是检测是否有键按下:
uchar keyprass()
{
PORTD = 0XFF;
DDRD = 0XFF;
PORTD = 0XF0;
DDRD = 0X0F;
if(PIND != 0XF0)
return 1;
else
return 0;
}
/****************************************************/
该部分是键盘扫描:
uchar keyscan()
{
uchar i = 0X7F,key;
if(keyprass())
{
do
{
PORTD = 0XFF;
DDRD = 0XFF;
i = (i<<1)|(i>>7);//这个你们要仔细想想了,很有意思
PORTD = i;
DDRD = 0X0F;
key = PIND & 0xF0;
switch(PIND)
{
case 0xEE : dat = 0;break;
case 0xDE : dat = 1;break;
case 0xBE : dat = 2;break;
case 0x7E : dat = 3;break;
case 0xED : dat = 4;break;
case 0xDD : dat = 5;break;
case 0xBD : dat = 6;break;
case 0x7D : dat = 7;break;
case 0xEB : dat = 8;break;
case 0xDB : dat = 9;break;
case 0xBB : dat = 10;break;
case 0x7B : dat = 11;break;
case 0xE7 : dat = 12;break;
case 0xD7 : dat = 13;break;
case 0xB7 : dat = 14;break;
case 0x77 : dat = 15;break;
}
}while(key == 0XF0);
}
return dat;
}
////////////////////////////////////////////////////////////////////
同过主函数来检测函数是否正确:
void main(void)
{
PORTB = 0xff;
DDRB = 0xff;
while (1)
{
if(keyprass())//这里没做消抖处理,请大家自行添加
keyscan();
PORTB = table[dat];
};
}
- 征集:键盘扫描源程序大全
- 键盘扫描码大全
- 键盘扫描码大全
- 键盘扫描码大全
- 键盘扫描码大全
- 键盘扫描码大全
- JEECG常见问题大全征集
- 键盘扫描
- .Net开源程序大全
- .Net开源程序大全
- .Net开源程序大全
- !~征集~!
- 键盘扫描码
- 键盘扫描部分完工
- 键盘的扫描码
- 键盘扫描码
- 中断键盘扫描
- 键盘扫描4X4
- 惊心动魄,欣喜若狂的破解
- CEGUI剪切板功能
- 使用SQL语句创建数据库
- 字对齐问题的分析
- 如何在Word分栏状态下正确的输入脚注?
- 征集:键盘扫描源程序大全
- 【SQL Server2005页面存储4之--非聚集索引行在叶级别存储】
- gnuplot画3维间断图
- sql连接语句详解
- Vmware虚拟机下Ubuntu 8.04安装(一)
- 小小菜鸟理解web开发
- sql newid()随机函数
- Vmware虚拟机下Ubuntu 8.04安装(二)
- far cry 2 xbox 360 map editor