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

📄 key.c

📁 用CS5532做的无线吊钩称的接收称重显示器程序
💻 C
字号:
/********************************************************************************
共有5个按键,可一个开关机键
键盘为      unit,   M+,  hold,change, T/Z,
键码分别为  0x08, 0x10,  0x04,  0x01,0x02
#define KEYUNIT   0x08
#define KEYMPLUS  0x10
#define KEYHOLD   0x04
#define KEYCHANGE 0x01
#define KEYT_Z    0x02
********************************************************************************/

#include <reg52.h>

extern unsigned char beep;

extern bit ga;           ///键有效
extern bit ke;           ///有键按下
extern bit keyp;		//产生有效键的标志
extern bit kerr_b;

data unsigned char kdel;
data unsigned int  kerr;
data unsigned char ls_k;
data unsigned char kbuf;

///键盘程序
void KeyPro(void)
{
	if (ga==0)
	{
		if (ke==0)
		{
			ls_k=~P1;
			ls_k=ls_k>>3;
			ls_k=ls_k & 0x1f;
			if (ls_k)
			{                
				kbuf=ls_k;
				ke=1;			//有键按下
				kdel=6;		//32;		//去抖时间,为60m秒
				ga=0;			//????????????
			}
		}
		else
		{
			kdel--;
			if (kdel==0)		//去抖时间到
			{
				ls_k=~P1;
				ls_k=ls_k>>3;
				ls_k=ls_k & 0x1f;
				if (ls_k==0)
				{
					ke=0;
				}
				else
				{
					ke=0;                   
					if (ls_k==kbuf)
					{
						ga=1;
						kdel=14;		//56;
						beep = 1;
//						IO_buzz=0;
					} 
				}
			}
		}
	
	}
	else
	{
		kdel--;
		if (kdel==0)
		{ 
			ls_k=~P1;
			ls_k=ls_k>>3;
			ls_k=ls_k & 0x1f;
			if (ls_k==0)		//按键已经松开
			{
				ga=0;
				ke=0;
//				IO_buzz=1;
				kerr=0;
				kerr_b=0;
				keyp=1;		//产生了有效键码
//				beep = 1;
			}
			else
			{
				keyp=0;
				kdel=4;		//16;
//				IO_buzz=1;
//				beep = 1;
				if (kerr_b==0)
				{
					kerr++;
					if (kerr>300) kerr_b=1;
				}
			}
		}
	}  
}

⌨️ 快捷键说明

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