⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key.c

📁 基于AVR单片机(ATMega64)的辞别力拼图游戏
💻 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 + -