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

📄 key.c

📁 51单片机时钟 和18B20 温度的 LCD显示
💻 C
字号:
//========================================================//
//文件名称:Key.c
//功能描述:初始化键盘函数和扫描键盘函数 
//========================================================//
#include "SPCE061A.h"
extern unsigned int keyTtemp;	//记录按键时间的临时变量
extern unsigned int keyvalue;
extern unsigned int keytime;
extern unsigned int keytimeEnb;
//========================================================//
//	语法格式:	void Delaytime(void)
//	实现功能:	延时
//	参数:		无
//	返回值:	无
//========================================================//
void Delaytime()        //延时子程序;
{   
	unsigned int j;
	for(j=0;j<0x0A00;j++);
		*P_Watchdog_Clear=0x0001;
}
//=========================================================//
//	语法格式:	void keyinitial()
//	实现功能:  键盘端口的初始化
//	参数:		无
//	返回值:	无
//=========================================================//
void keyinitial()
{
	*P_IOA_Dir &= 0xfff0;
	*P_IOA_Attrib &= 0xfff0;                               //设置IOA的低四位为低电平输入口
    *P_IOA_Data &= 0xfff0;
}
//========================================================//
//	语法格式:	unsigned int keyscan(void)
//	实现功能:	获得键盘值并赋给变量keyvalue
//	参数:		无
//	返回值:	无
//========================================================//
void keyscan()                                            //键盘扫描子程序;
{
	unsigned int i=0;
	unsigned int k=0;	
    i=*P_IOA_Data & 0x0007;
   	Delaytime();
    k=*P_IOA_Data & 0x0007;
    if(i==k)
    {
    	keyvalue=k;
    	keytimeEnb=1;
    	while(k!=0)
    	{
    		k=*P_IOA_Data & 0x0007;
    		*P_Watchdog_Clear=0x0001;
    	}
    	keytimeEnb=0;
    	keytime=keyTtemp;	//赋值按键时间
    	keyTtemp=0;			//临时变量清零
    }
    else
   	keyvalue=0;
}
//========================================================//
//key.c end
//========================================================//

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -