📄 key.c
字号:
#include "reg52.h"
#include<intrins.h>
#include"IOCfg.c"
#include"Config.h"
#include"KEY.h"
#define DBUS P0
/************************************************************************************
刷新按键574数据
************************************************************************************/
void DBUS2(uchar i)
{
DBUS = i;
clk_574_2 = 0;
clk_574_2 = 1;
}
/************************************************************************************
*按键扫描
*返回键值
************************************************************************************/
uchar key_sm()
{
uchar key_data;
RS = 1;
RW = 0; //--------避免液晶屏干扰数据总线
key1 = 1;
key2 = 1; //--------按键置高电平
key_data = 0xff;
DBUS2(0xfe);
if(key1 == 0){key_data = key_9;}
if(key2 == 0){key_data = key_dian;}
DBUS2(0xfd);
if(key1 == 0){key_data = key_6;}
if(key2 == 0){key_data = key_3;}
DBUS2(0xfb);
if(key1 == 0){key_data = key_5;}
if(key2 == 0){key_data = key_2;}
DBUS2(0xf7);
if(key1 == 0){key_data = key_8;}
if(key2 == 0){key_data = key_0;}
DBUS2(0xef);
if(key1 == 0){key_data = key_4;}
if(key2 == 0){key_data = key_1;}
DBUS2(0xdf);
if(key1 == 0){key_data = key_7;}
if(key2 == 0){key_data = key_esc;}
DBUS2(0xbf);
if(key1 == 0){key_data = key_you;}
if(key2 == 0){key_data = key_xia;}
DBUS2(0x7f);
if(key1 == 0){key_data = key_zuo;}
if(key2 == 0){key_data = key_shang;}
DBUS2(0xff);
if(key1 == 0){key_data = key_enter;}
return key_data;
}
/******************************************************************
// 函数名:delayms
// 功 能:精确延时10mS
// 参 数:
// 返回值:
使用22.1184MHz 晶振的时候 ,循环次数是229 ;
******************************************************************/
void delay10ms(void)
{
unsigned char j;
unsigned char i;
for(i = 10; i != 0; i--)
{
for(j = 0; j < 229; j++);
}
}
/************************************************************************************
*按键扫描去抖动
*返回键值
************************************************************************************/
uchar key_num()
{
uchar key_bz;
key_bz = key_sm();
if(key_bz != 0xff)
{
delay10ms();
delay10ms();
if(key_bz == key_sm())
{
while(key_sm() != 0xff);
delay10ms();
delay10ms();
while(key_sm() != 0xff);
}
else{key_bz = 0xff;}
}
return key_bz;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -