📄 key.h
字号:
#ifndef _key_H__
#define _key_H__
#define uchar unsigned char
#define uint unsigned int
#define row0_scan XBYTE[0x8FEF]
#define row1_scan XBYTE[0x8FDF]
#define row2_scan XBYTE[0x8FBF]
#define row3_scan XBYTE[0x8F7F]//行地址
//按键编码
unsigned char code key_value_tab[4][4]=
{
7,8,9,10,
4,5,6,11,
1,2,3,12,
14,0,13,15
};
uint key=0;
uint press_time;
uchar key_input_display=0;
uint dac_value;
sbit fmq=P3^0;
uchar key_scan( void )
{
uchar i=0;
static uchar row=0,line=0,value=0;
for(i=0;i<4;i++)
{
switch(i)
{
case 0 : value=row0_scan; break;
case 1 : value=row1_scan; break;
case 2 : value=row2_scan; break;
case 3 : value=row3_scan; break;
default: break;
}
if((value & 0x0f) != 0x0f) //判断是否有键按下
{
value &= 0x0f;
row=i;
switch(value)
{
case 0x0e: line=0; break;
case 0x0d: line=1; break;
case 0x0b: line=2; break;
case 0x07: line=3; break;
default: break;
}
return(key_value_tab[row][line]);
}
}
return(0xff);
}
void input_dac_value()
{
uchar temp=0;
static uchar flag=0;
temp = key_scan();
if(temp==0xff) flag=1;
if((temp != 0xff) && (flag==1))
{
flag=0;
key = temp;
fmq=0;
if(key<10 && (key_input_display==1))
{
press_time++;
switch(press_time)
{
case 2: dac_value=key*1000; break;
case 3: dac_value=dac_value+key*100 ; break;
case 4: dac_value=dac_value+key*10; break;
case 5: dac_value=dac_value+key; break;
default: break;
}
}
switch(key)
{
case 14: {key_input_display=1; press_time++; key=0; fmq=0;}; break;//设置
case 13: {key_input_display=0; press_time=0; fmq=0;}; break;//确认
case 15: {dac_value=0;fmq=0;}; break;//清零
case 10: {dac_value+=10;fmq=0;}; break;//递加
case 11: {dac_value-=10;fmq=0;}; break;//递减
default: break;
}
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -