📄 4x4键盘._c
字号:
/*********************************************************************
注意在调用时要初始化DDRA=0xff;
这最好是用中断扫描键盘,在中断里先保存以前DDRA的数值;
扫描完后再恢复以前的DDRA的值
***********************************************************************/
#include <iom16v.h>
#include <macros.h>
//#include"延时子程序.c"
#define uchar unsigned char
#define uint unsigned int
uchar key_scan()
{
uchar i=0X7F,key,j=0;
delay_ms(1);
do
{
i=(i<<1|i>>7);
PORTD=i;
DDRD=0x0F;
key=PIND;
j=key&0xF0;
}while(j==0xF0);
switch(key)
{ case 0x7E:key=0;break;//0
case 0x7D:key=10;break;//.
case 0x7B:key=11;break;//*
case 0x77:key=15;break;//=
case 0xBE:key=1;break;//1
case 0xBD:key=2;break;//2
case 0xBB:key=3;break;//3
case 0xB7:key=14;break;//-
case 0xDE:key=4;break;//4
case 0xDD:key=5;break;//5
case 0xDB:key=6;break;//6
case 0xD7:key=13;break;//+
case 0xEE:key=7;break;//7
case 0xED:key=8;break;//8
case 0xEB:key=9;break;//9
case 0xE7:key=12;break;//C
default:key=16;
}
return key;}
uchar key_press()
{ uchar i,j;
DDRD=0XFF;
PORTD=0XF0;
DDRD=0X0F;
delay_ms(1);
i=PIND;
if(i==0xF0) j = 0;
else j = 1;
return j;
}
/*void main()
{
DDRA=0XFF;
while(1)
{
if(key_press()) l=key_scan();
xiansi(l);
}
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -