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

📄 keyboard.c

📁 可编程彩色光频转换器TCS230在61单片机上的应用
💻 C
字号:
/*#include <SPCE061A.h>
#include <MyBit.h>

#define uint  unsigned int

#define keyport			*P_IOA_Data
#define keyport_f0()	{keyport=(keyport|0x00f0)&0xfff0;}
#define keyport_0f()	{keyport=(keyport|0x000f)&0xff0f;}
#define key_down		((keyport&0x00ff)!=0x00f0)
const uint cmp[]=
				{
				0x77,0xb7,0xd7,0xe7,      
		    	0x7B,0xbB,0xdB,0xeB,      
				0x7D,0xbD,0xdD,0xeD,      
				0x7E,0xbE,0xdE,0xeE		  
				};

uint key;

void kb_delay(uint i)
{
while(--i)*P_Watchdog_Clear=0x0001;
}
uint Keydown(void);

uint kbscan(void)
{
	uint   c1,c2,n;
	uint   keyvalue;
	uint   keycode;
	keyvalue=0xff;
	while(!Keydown());					//去抖动
	do
	{					//等待键盘放开
		*P_Watchdog_Clear=0x0001;
		kb_delay(1000);						//去抖动
	}while(!Keydown());
    keyport_f0();
    kb_delay(50);
 	c1=keyport&0xf0;
 	keyport_0f();
 	kb_delay(50);
 	c2=keyport&0x0f;
 	keycode=c1+c2;
	for(n=0;n<16;n++)
	    {
			if(keycode==cmp[n]) keyvalue=n;
		}
	keyport_f0();
	kb_delay(50);
	while(Keydown());
	do
	{					//等待键盘放开
		*P_Watchdog_Clear=0x0001;
		kb_delay(20000);						//去抖动
	}while(Keydown());
	return(keyvalue); 
}

uint Keydown(void)
{
	keyport_f0();
	kb_delay(50);
	if(key_down)return 1;
	else return 0;
}
*/
#include <SPCE061A.h>
#include <MyBit.h>

#define uint  unsigned int

/*#define keyport			*P_IOA_Data
#define keyport_f0()	{keyport=(keyport|0x00f0)&0xfff0;}
#define keyport_0f()	{keyport=(keyport|0x000f)&0xff0f;}
#define key_down		((keyport&0x00ff)!=0x00f0)*/
#define keyport			AL
#define keyport_f0()	{AL=0xf0;}
#define keyport_0f()	{AL=0x0f;}
#define key_down		(AL!=0xf0)
const uint cmp[]=
				{
				0x77,0xb7,0xd7,0xe7,      /*01110111,10110111,11010111,11100111*/
		    	0x7B,0xbB,0xdB,0xeB,      /*01111011,10111011,11011011,11101011*/
				0x7D,0xbD,0xdD,0xeD,      /*01111101,10111101,11011101,11101101*/
				0x7E,0xbE,0xdE,0xeE		  /*11101110,11011110,10111110,01111110*/
				};

uint key;

void kb_delay(uint i)
{
while(--i)*P_Watchdog_Clear=0x0001;
}
uint Keydown(void);

uint kbscan(void)
{
	uint   c1,c2,n;
	uint   keyvalue;
	uint   keycode;
	keyvalue=0xff;
	while(!Keydown());					//去抖动
	do
	{					//等待键盘放开
		*P_Watchdog_Clear=0x0001;
		kb_delay(1000);						//去抖动
	}while(!Keydown());
    keyport_f0();
    kb_delay(50);
 	c1=keyport&0xf0;
 	keyport_0f();
 	kb_delay(50);
 	c2=keyport&0x0f;
 	keycode=c1+c2;
	for(n=0;n<16;n++)
	    {
			if(keycode==cmp[n]) keyvalue=n;
		}
	keyport_f0();
	kb_delay(50);
	while(Keydown());
	do
	{					//等待键盘放开
		*P_Watchdog_Clear=0x0001;
		kb_delay(20000);						//去抖动
	}while(Keydown());
	return(keyvalue); 
}

uint Keydown(void)
{
	keyport_f0();
	kb_delay(50);
	if(key_down)return 1;
	else return 0;
}

⌨️ 快捷键说明

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