📄 key.c
字号:
/*电子拼图
建立时间: 2007 3 9
最后修改时间: 2007 3 11
广东工业大学自动化学院自动化04级3班吴子洲 */
const uchar tk1[] PROGMEM={
//0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x01,0xff,0x02,0x03,0xff};
const uchar tk2[4][4] PROGMEM={
{7,2,8,3},{5,0,6,1},{9,4,10,11},{12,13,14,15}};
volatile uchar kp; //some key is press
uchar rk(void)
{uchar u1,u2,u3;
PORTA=0xf0;
DDRA =0x0f;
dy(10);
u1=PINA&0xf0; //get high 4 bits
u1>>=4;
u1=pgm_read_byte(tk1+u1);
PORTA=0x0f;
DDRA=0xf0;
dy(10);
u2=pgm_read_byte(tk1+(PINA&0x0f));
if(u1!=0xff&&u2!=0xff) //some key press
u3=pgm_read_byte(*(tk2+u1)+u2);
else
u3=0xff; //no key press
PORTA=0x00;
DDRA=0xff; //resume PA
dy(10);
return(u3);
}
uchar key(void)
{
uchar ret;
if(kp==0)
{
ret=rk();
if(ret!=0xff)
{
delay(10);
if(ret==rk())
kp=1;
else ret=0xff;
}
return(ret);
}
else
{
if(rk()==0xff)
{delay(10);
if(rk()==0xff)
kp=0, ret=0xff;
else
ret=0x80;
}
else ret=0x80;
}
return(ret);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -