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

📄 osc.c

📁 在89C51上操作小型LCD,显示汉字,字符和图案,字库放在EEPROM
💻 C
字号:
#include "osh.h"
#define  DEBUG 0
#define MULTISAMPLE  0
extern int Printf(const char *fmt, ...);

idata OSH OS;
const unsigned char code KeyTable[13]={0,0x24,0x44,0x84,\
							  0x22,0x42,0x82,\
							  0x21,0x41,0x81,\
							  0x28,0x48,0x88};	

void GetKey(void)
{
	OS.hz[1]=OS.KeyCode1;//只要按键没松开,就一直有键值。
	OS.hz[0]=OS.KeyCode0;//每300MS采样一次。
	OS.KeyCode0=0;
}
void KeyScan(void)
{
	SetKeyOut();
	if(KeyInput()){
		switch(OS.Flag.KeyState){
			case 0:
				OS.Flag.KeyState++;
				break;
			case 1:
				OS.Flag.KeyState++;
				OS.KeyCode=KeyScan0();
				OS.Flag.KeyFlag=1;
				break;
			case 2:
#if MULTISAMPLE==1			
				OS.KeyCode=KeyScan0();
				if(OS.KeyTime++>12){
					OS.Flag.KeyFlag=1;
					OS.KeyTime=0;
				}
#endif				
				break;
		}
	}else{
		OS.KeyTime=0;
		OS.Flag.KeyState=0;
		OS.KeyCode1=0;
		OS.KeyCode0=0;
	}
}
void OSHandle(void)
{
	U8 uc0;
	if(OS.Flag.Timer32ms){
		OS.Flag.Timer32ms=0;
		KeyScan();
	}
	if(OS.KeyCode){
#if DEBUG==1
	Printf("OS.KeyCode=%x1, ",OS.KeyCode);
#endif		
		for(uc0=0;uc0<13;uc0++){
			if(OS.KeyCode==KeyTable[uc0]) break;
		}
		if(uc0==0||uc0>12) OS.KeyCode1=0;
		else OS.KeyCode1=0x30+uc0;
		if(OS.Flag.KeyFlag){
			OS.KeyCode0=OS.KeyCode1;
			OS.Flag.KeyFlag=0;
		}else OS.KeyCode0=0;
		OS.KeyCode=0;
	}
}

⌨️ 快捷键说明

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