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

📄 keyboard.c

📁 采用模块化格式编写的基于PIC单片机的简单计算器
💻 C
字号:
#include "pic.h"
#include "myfuncs.h"
#include "keyboard.h"
const char KeyCode[16][2]={{0b11101110,7},
	                                    {0b11101101,8},
		                             {0b11101011,9},
			                      {0b11100111,'/'},
				               {0b11011110,4},
					        {0b11011101,5},
						  {0b11011011,6},
						  {0b11010111,'*'},
						  {0b10111110,1},
					        {0b10111101,2},
						 {0b10111011,3},
					        {0b10110111,'-'},
						  {0b01111110,0},
					        {0b01111101,'C'},
						 {0b01111011,'='},
						{0b01110111,'+'}
	             			     };

char scankeypad()
{ 
	char key4H=0,key4L=0,ScanCode=0,i=0;
	TRISC=0xF0; // 低四位输出,高四位输入
	PORTC=0x00; // 低四位输出0
	asm("nop"); 
	asm("nop");  // 等待输出信号稳定
	key4H=PORTC; //读取高四位内容
	key4H=key4H&0xF0; // 只需要高四位,所以把低四位屏蔽掉
	if(key4H!=0xF0) // 有键盘按下
	{
             delay(20); //软件消除抖动
             key4H=PORTC;  //重新读取PORTC高四位
             	if(key4H!=0xF0) // 真的有键盘按下吗?
             	{
			TRISC=0x0F;  //高低四位IO方向转换
			PORTC=0x00; // 高四位输出0,第四位等待输入
			asm("nop");
			asm("nop");  //等待输出稳定。
			key4L=PORTC; //读取低四位
			key4L=key4L&0x0F;  //屏蔽高四位内容
			if(key4L!=0x0F)   // 如果不为0x0F,说明有按键按下
			{
				 ScanCode=key4H+key4L; //高四位<<4+低四位为键盘扫描码
				 i=0;
				 while(ScanCode!=KeyCode[i][0])
				 {
				 	 i++;
				 }
	
				 return(KeyCode[i][1]);
			}
		}
	}
	return NO_KEY;
}

⌨️ 快捷键说明

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