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

📄 key.c

📁 许继的2812开发全套驱动程序,很全很实用的.rar
💻 C
字号:

#include "reg52.h"
#include "absacc.h"


            
            /********************************************/
            /*        外部端口硬件地址		        	    */
            /********************************************/
#define COLUMN1 P14
#define COLUMN2 P13
#define COLUMN3 P12
#define COLUMN4 P11
#define COLUMN5 P10
#define BELL P15
#define ARRAY1 P00
#define ARRAY2 P01
#define ARRAY4 P02
#define ARRAY3 P03
/*
以上宏定义描述了矩阵键盘行列线的硬件地址,键盘位置与行列线对应关系如下: 
      COLUMN1		COLUMN2		COLUMN3		COLUMN4		COLUMN5
ARRAY1	KEY1		KEY2		KEY3		KEY4		KEY5
ARRAY2	KEY6		KEY7		KEY8		KEY9		KEY10
ARRAY3	KEY11		KEY12		KEY13		KEY14		KEY15
ARRAY4	KEY16		KEY17		KEY18		KEY19		KEY20
*/

#define KEYINST0 P04
#define KEYINST1 P05
#define KEYINST2 P06
#define KEYINST3 P07
/* 以上宏定义描述了主CPU给键盘单片机的命令线的硬件地址 */

#define KEYCODE P2
#define	KEYCODE0 P20
#define KEYCODE1 P21
#define KEYCODE2 P22
#define KEYCODE3 P23
#define KEYCODE4 P24
#define KEYCODE5 P25
#define KEYCODE6 P26
#define KEYCODE7 P27
/*以上宏定义描述了键盘单片机给主CPU的键码线的硬件地址*/

#define KEYSTB P17/*外设数据准备好信号线硬件地址,键盘单片机给主CPU*/
#define KEYIBF P35/*输入数据满信号,主CPU给键盘单片机*/



            /********************************************/
            /*         常量定义				            */
            /********************************************/
/* 计时器常量 */

//#define TL0_DATA 0x78
//#define TH0_DATA 0xec/*0xec78: 0.01秒中断一次*/
//#define TL1_DATA 0xb0
//#define TH1_DATA 0x3c/*0x3cb0: 0.1秒中断一次*/

#define TL0_DATA 0x00
#define TH0_DATA 0xdc/*0xdc00: 0.01秒中断一次  11.0592M*/
#define TL1_DATA 0x00
#define TH1_DATA 0x00/*0x00: 0.07秒中断一次  11.0592M*/
#define DELAYTIME 3/*按键复用时两次按键按下之间时间间隔的最大值*/


			/********************************************/
			/*					全局变量					*/
			/********************************************/
bit bArray1;/*bArray1标志键盘行线1状态*/
bit bArray2;/*bArray2标志键盘行线2状态*/
bit bArray3;/*bArray3标志键盘行线3状态*/
bit bArray4;/*bArray4标志键盘行线4状态*/
unsigned char idata ucKeyMultiUse;/*ucKeyMultiUse标志键盘是否复用,0否,1是*/
unsigned char idata ucKeyDown;/*ucKeyDown标志是否有键按下,0否,1是*/
unsigned char idata ucKeyUp;/*ucKeyUp标志按键是否曾松开,0否,1是*/
unsigned char idata ucKeyDelay;/*ucKeyDelay标志是否已延迟10毫秒,0否,1是*/  
unsigned char idata ucKeyCode;/*ucKeyCode标志键码*/
unsigned char idata ucKeyDownTime;/*ucKeyDownTime标志按键按下次数*/
unsigned char idata ucDelayTime;/*ucDelayTime标志两次按键按下之间的时间间隔*/
unsigned char idata ucCountDelayTime;
/*ucCountDelayTime标志是否对ucDelayTime计时,0否,1是*/
unsigned char idata ucKeyNo;
/*ucKeyNo在键盘不复用时标志何键被按下,复用时标志上次何键被按下*/
unsigned char idata ucKeyNoNew;/*ucKeyNoNew标志在键盘复用时最近一次何键被按下*/
unsigned char idata ucBell;/*ucBell标志蜂鸣器状态,0不响,1要响,2在响*/

			/********************************************/
			/*					子函数					*/
			/********************************************/
/************* whether_key_down() 检查是否有键按下

⌨️ 快捷键说明

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