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

📄 keyboard.c

📁 该程序是医院用的CPCR记录仪的终端控制程序
💻 C
字号:
#include <f:\yyjapp\yymk\software\main.h>
#include <f:\yyjapp\yymk\software\keyboard.h>
#include <f:\yyjapp\yymk\software\MfRc500.h>
#include <f:\yyjapp\yymk\software\at45db161.h>
#include <iom128v.h>
#include <macros.h>
#include <eeprom.h>
extern unsigned char key_pw[6];
extern unsigned char oldkey_pw[6];
extern unsigned int keycount;
extern unsigned char T2IR;
extern unsigned int timecounter;

unsigned char scankey(void)
{
 	 unsigned char keya;
	 DDRC=0xff;
 	 SET_KEY3();
	 SET_KEY4();
	 SET_KEY5();
	 SET_KEY6();
	 CLEAR_KEY0();
	 CLEAR_KEY1();
	 CLEAR_KEY2();
	 DDRC=PORTC=0;
//	 PORTA=0xff;
	 keya=PINC;
	 keya=keya<<1;
	 if(keya==0xf0)
	 return 1;
	 else
	 return 0;
}
unsigned char keyvalue1(void)
{
 	unsigned char key1,value;
	DDRC=0xFF;
	CLEAR_KEY3();
	SET_KEY4();
	SET_KEY5();
	SET_KEY6();
	
	SET_KEY0();
	SET_KEY1();
	SET_KEY2();
	DDRC=PORTC=0;
	key1=PINC;
	key1=key1&0x07;
//	key1=key1<<1;
	switch(key1)
	{
		case 0x06:       //  3 keyvalue
		value=0x03;      //  3 key
		break;
		case 0x05:      //   2 keyvalue       
		value=0x02;      //   2 key
		break;
		case 0x03:      //   1 keyvalue
		value=0x01;     //   1 key
		break;
		default:
		value=0xff;
		break;
	}
	return value;
}
unsigned char keyvalue2(void)
{
 	unsigned char key1,value;
	DDRC=0xFF;
	SET_KEY3();
	CLEAR_KEY4();
	SET_KEY5();
	SET_KEY6();
	
	SET_KEY0();
	SET_KEY1();
	SET_KEY2();
	DDRC=PORTC=0;
	key1=PINC;
	key1=key1&0x07;
//	key1=key1<<1;
	switch(key1)
	{
		case 0x06:         // 6 keyvalue
		value=0x06;        // 6 key
		break;
		case 0x05:         //  5 keyvalue
		value=0x05;        //  5 key
		break;
		case 0x03:         // 4 keyvalue
		value=0x04;        // 4 key
		break;
		default:
		value=0xff;
		break;
	}
	return value;
}
unsigned char keyvalue3(void)
{
 	unsigned char key1,value;
	DDRC=0xFF;
	SET_KEY3();
	SET_KEY4();
	CLEAR_KEY5();
	SET_KEY6();
	
	SET_KEY0();
	SET_KEY1();
	SET_KEY2();
	DDRC=PORTC=0;
	key1=PINC;
	key1=key1&0x07;
//	key1=key1<<1;
	switch(key1)
	{
		case 0x06:         // 9 keyvalue
		value=0x09;        // 9 key
		break;
		case 0x05:         // 8 keyvalue
		value=0x08;        // 8 key
		break;
		case 0x03:         // 7 keyvalue
		value=0x07;        // 7 key
		break;
		default:
		value=0xff;
		break;
	}
	return value;
}
unsigned char keyvalue4(void)
{
 	unsigned char key1,value;
	DDRC=0xFF;
	SET_KEY3();
	SET_KEY4();
	SET_KEY5();
	CLEAR_KEY6();
	
	SET_KEY0();
	SET_KEY1();
	SET_KEY2();
	DDRC=PORTC=0;
	key1=PINC;
	key1=key1&0x07;
//	key1=key1<<1;
	switch(key1)
	{
		case 0x06:        // # keyvalue
		value=0x0b;       // # key
		break;
		case 0x05:        // 0 keyvalue
		value=0x00;       // 0 key
		break;
		case 0x03:        // * keyvalue
		value=0x0a;       // * key
		break;
		default:
		value=0xff;
		break;
	}
	return value;
}
unsigned char keyvalue(void)
{
 		 unsigned char cc1,cc2,cc3,cc4;
		 cc1=keyvalue1();
		 cc2=keyvalue2();
		 cc3=keyvalue3();
		 cc4=keyvalue4();
		 if(cc4!=0xff)
		 {
		  	beep(1);
		  	return cc4;
		 }
		 if(cc3!=0xff)
		 {
		  	beep(1);
			return cc3;
		 }
		 if(cc2!=0xff)
		 {
		  	beep(1);
		 	return cc2;
		 }
		 if(cc1!=0xff)
		 {
		  	beep(1);
			return cc1;
		 }
		 return 0xff;
}


void delay1(unsigned char second)
{
 	 unsigned char i;
	 unsigned int j;
	 for(i=0;i<second;i++)
	 	for(j=0;j<65000;j++);
}		
unsigned char CMP_STRING(unsigned char *pt1,
                         unsigned char *pt2,unsigned char len)
{
     unsigned char ct;         // fixed lenth 4.
     for (ct=0;ct<len;ct++)
     {
         if (*pt1++ != *pt2++)
         return 1;
     }
     return 0;                 // equal return 0. 	
}

⌨️ 快捷键说明

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