📄 key.txt
字号:
#include "SPCE061A.H"
unsigned int led[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned int key;
unsigned int mm[2];//for display
void disp(void);
////////////////////////////////////////////////////////////////////////
void delay(unsigned int del)
{
for(;del>0;del--)*P_Watchdog_Clear=0x0001;
}
///////////////////////////************************/////////////havekey!
unsigned int havekey(void)
{
unsigned int xtemp,x_temp,y_temp,readkey;
*P_IOB_Data=*P_IOB_Buffer&0xf0ff; //
x_temp=*P_IOB_Data;
x_temp=x_temp&0xf000;
xtemp=x_temp;
if(x_temp==0xf000) return(0x00ff); //没有按键
else{ delay(20);
disp();
*P_IOB_Data=(*P_IOB_Buffer&0xf0ff)|0x0700; //得到列值
x_temp=*P_IOB_Data;
x_temp=x_temp&0xf000;
if(!(x_temp==0xf000)) y_temp=0x0700;
*P_IOB_Data=(*P_IOB_Buffer&0xf0ff)|0x0b00;
x_temp=*P_IOB_Data;
x_temp=x_temp&0xf000;
if(!(x_temp==0xf000)) y_temp=0x0b00;
*P_IOB_Data=(*P_IOB_Buffer&0xf0ff)|0x0d00;
x_temp=*P_IOB_Data;
x_temp=x_temp&0xf000;
if(!(x_temp==0xf000)) y_temp=0x0d00;
*P_IOB_Data=(*P_IOB_Buffer&0xf0ff)|0x0e00;
x_temp=*P_IOB_Data;
x_temp=x_temp&0xf000;
if(!(x_temp==0xf000)) y_temp=0x0e00;
/////////////////////////////////////////////////////////////得到列值
*P_IOB_Data=*P_IOB_Buffer&0xf0ff; //判断重键
x_temp=*P_IOB_Data;
x_temp=x_temp&0xf000;
for(;!(x_temp==0xf000);)
{*P_IOB_Data=*P_IOB_Buffer&0xf0ff;
x_temp=*P_IOB_Data;
x_temp=x_temp&0xf000;
disp();
}
}
readkey=xtemp|y_temp; //得到键值
switch(readkey)
{case 0x7700:key=0;break;
case 0x7b00:key=1;break;
case 0x7d00:key=2;break;
case 0x7e00:key=3;break;
case 0xb700:key=4;break;
case 0xbb00:key=5;break;
case 0xbd00:key=6;break;
case 0xbe00:key=7;break;
case 0xd700:key=8;break;
case 0xdb00:key=9;break;
case 0xdd00:key=10;break;
case 0xde00:key=11;break;
case 0xe700:key=12;break;
case 0xeb00:key=13;break;
case 0xed00:key=14;break;
case 0xee00:key=15;break;
default :key=15;break;
}
return(key);
}
/////////////////////*********************////////////////显示程序/////
void disp(void)
{
*P_IOA_Buffer=0x0000;
*P_IOB_Buffer=0x0008;
*P_IOA_Buffer=led[mm[0]];
delay(100);
*P_IOA_Buffer=0x0000;
*P_IOB_Buffer=0x0004;
*P_IOA_Buffer=led[mm[1]];
delay(100);
}
/////////////////////////////////******//////////////////////main
void main(void)
{//unsigned int i;
*P_IOB_Dir=0x0fff; //for key and control;
*P_IOB_Attrib=0x0fff;
*P_IOA_Dir=0x00ff; //out for display
*P_IOA_Attrib=0x00ff;
while(1)
{*P_Watchdog_Clear=0x0001;
key=havekey();
disp();
if(!(key==0x00ff))
{mm[1]=mm[0];
mm[0]=key;
}
else disp();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -