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

📄 key.c

📁 STC89C52单片机平台上实现用外线通讯并能与PC实现USB的通讯
💻 C
字号:
/******************************************************************
   本程序只供学习使用,未经作者许可,不得用于其它任何用途
      我的邮箱:computer-lov@tom.com
        欢迎访问我的blog:  http://computer00.21ic.org

KEY.C  file

作者:Computer-lov
建立日期: 2007.03.20
修改日期: 2007.03.22
版本:V1.1
版权所有,盗版必究。
Copyright(C) Computer-lov 2007-2017
All rights reserved            
*******************************************************************/


#include "Key.h"
#include "my_type.h"

uint16 idata KeyMapCurrent,KeyMapOld,KeyMapOk,KeyNoChangedTime;
uint8 KeyMapCanChange;

#define KeyIO P1

/*************************定时器0初始化***************************************/
void InitTimer0(void)
{
 TMOD&=0xF0;
 TMOD|=0x01;
 TH0=0xDC;
 ET0=1;
 TR0=1;
}
/******************************************************************************/

/*************************定时器0中断处理***************************************/
void Timer0Isr(void) interrupt 1
{ 
 uint8 temp;
 TH0=0xDC;	 //定时器0重装
 KeyIO=0x0F;
 if((KeyIO&0x0F)==0x0F)  //如果现在没有按键按下
  {
   KeyMapCurrent=0;   //没有键按下
  }
 else
  {
   //开始键盘扫描

   //扫描第一行
   KeyIO=~0x10;

   //保存四个开关状态	
   temp=KeyIO&0x0F;

   //扫描第二行	  
   KeyIO=~0x20;

   //保存四个开关状态		  
   temp|=KeyIO<<4;

   //保存按键状态到当前按键情况      
   KeyMapCurrent=(~temp)&0xFF;

   //扫描第三行
   KeyIO=~0x40;	

   //保存四个开关状态 	 
   temp=KeyIO&0x0F;

   //扫描第四行	 
   KeyIO=~0x80;

   //保存四个开关状态	  
   temp|=KeyIO<<4; 
     
   //保存全部16个开关的状态
   //KeyMap总共有16个bit,当某个开关按下时,
   //对应的bit为1
   KeyMapCurrent|=(((uint16)~temp)<<8);
  }

 if(KeyMapCurrent!=KeyMapOld)  //说明按键情况发生了改变
  {
   KeyNoChangedTime=0;       //键盘按下时间为0
   KeyMapOld=KeyMapCurrent;  //保存当前按键情况
   return;
  }
 else
  {
   KeyNoChangedTime++;	  //按下时间累计
   if(KeyNoChangedTime>=1)	 //如果按下时间足够
    {
	 KeyNoChangedTime=1;
	 if(KeyMapCanChange)
	  {
	   KeyMapOk=KeyMapOld;  //保存按键
	  }
	}
  }
}
/******************************************************************************/

⌨️ 快捷键说明

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