版主
  
主题
帖子
积分27576
阅读权限200
注册时间2008-11-19
最后登录1970-1-1
在线时间 小时
|
#define POA0H asm("sbi $1b,7")
#define POA1H asm("sbi $1b,6")
#define POA2H asm("sbi $1b,5")
#define POA0L asm("cbi $1b,7")
#define POA1L asm("cbi $1b,6")
#define POA2L asm("cbi $1b,5")
#define DDA0H asm("sbi $1a,7")
#define DDA1H asm("sbi $1a,6")
#define DDA2H asm("sbi $1a,5")
#define DDA0L asm("cbi $1a,7")
#define DDA1L asm("cbi $1a,6")
#define DDA2L asm("cbi $1a,5")
#define HHH DDA0L;DDA1L;DDA2L;POA0H;POA1H;POA2H
#define HHL POA0L;DDA1L;DDA2L;DDA0H;POA1H;POA2H
#define HLH DDA0L;POA1L;DDA2L;POA0H;DDA1H;POA2H
#define LHH DDA0L;DDA1L;POA2L;POA0H;POA1H;DDA2H
#define A0TO asm("lsl %temp\n sbis $19,7\n inc %temp\n")
#define A1TO asm("lsl %temp\n sbis $19,6\n inc %temp\n")
#define A2TO asm("lsl %temp\n sbis $19,5\n inc %temp\n")
unsigned char ScanKey(void)
{
register unsigned char temp=0;
HHH;
A0TO;A1TO;A2TO;
if(temp)
{
return temp+15;
}
else
{
LHH;A0TO;A1TO;
HLH;A0TO;A2TO;
HHL;A1TO;A2TO;
HHH;
switch (temp)
{ case 16 : temp=6;return temp;
case 18 : temp=7;return temp;
case 20 : temp=9;return temp;
case 32 : temp=11;return temp;
case 33 : temp=13;return temp;
case 40 : temp=14;return temp;
case 48 : temp=15;return temp;
default : return temp;
}
}
} |
|