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

📄 key.c

📁 本次设计的自动往返电动小汽车
💻 C
字号:
/********************************************
/* 键盘扫描函数
/* 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -