key.c

来自「本次设计的自动往返电动小汽车」· C语言 代码 · 共 71 行

C
71
字号
/********************************************
/* 键盘扫描函数
/* PROTC口用于扫描键盘
/* 函数返回键值,无按键时返回0x7F
/* 在其他文件中调用函数时应做以下说明
/* extern unsigned char scan_key(void); 
/* extern unsigned char keypad(void);
********************************************/
#include <io8515v.h>
#include <Key.h>

#pragma data:code
const  char keyset[]=
            {
			 12,13,14,15,
			 8, 9, 10,11,
			 4, 5,  6, 7,
			 0, 1,  2, 3
			};	
#pragma data:data	

void key_init(void)
	 {
	 JP = 0xFF;
         JP_FX  = 0x00;
	 }
	 
unsigned char scan_key(void)
	 {
	 unsigned char i,temp;
	 JP_FX=0x0F;
	 JP=0xFF;
	 for(i=0;i<4;i++)
	 	{
		 JP=~(1<<i);
		 delay_nus(100);
		 temp=JP_IN&0xF0;
		 if(temp!=0xF0)
		 	{
			delay_nms(15);
			temp=JP_IN&0xF0;
			if(temp!=0xF0)
				{
				temp&=0xF0;
				switch(temp)
					{
					case 0x70:temp=15-(3-i)*4;break;
					case 0xb0:temp=14-(3-i)*4;break;
					case 0xd0:temp=13-(3-i)*4;break;
					case 0xe0:temp=12-(3-i)*4;break;
					default:temp=0x7F;					
					}
				temp=keyset[temp];				
				return temp;
				}			
			}
		JP=0x7F;		
		}	 
	 return 0x7F;
	 }	 
unsigned char keypad(void)
	{
	unsigned char temp1,temp2;
	temp1=scan_key();
	if(temp1==0x7F)
		return 0x7F;
	do 
	    temp2=scan_key();
	while(temp1==temp2);
	return temp1;		
	}

⌨️ 快捷键说明

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