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

📄 keyboard.h

📁 attendace system on 8051 chipset from intel.
💻 H
字号:
/***********************************JBB*************************************/

#ifndef _KEYBOARD_H
#define _KEYBOARD_H

#include "reg52\reg52.h"

#define START  0
#define LSB    1
#define MSB    8
#define PARITY 9
#define STOP   10

#define DOWN1     3
#define DOWN2     4
#define PRESSED   1
#define UNPRESSED 0
#define RELEASED  2

/*F16 New card Keypad connection*/
sbit ENTER_KEY      = 0xB4; //0X94;
sbit DOWN_ARROW_KEY = 0xB4; //0X95;
sbit UP_ARROW_KEY   = 0xB4; //0x96;
sbit ESCAPE_KEY     = 0xB4; //0x97;


/*F16 New Card*/
sbit KB_CLCK = 0xB2;
sbit KB_DATA = 0x92;

#define RESET_KEYBOARD() is_keypressed = 0

unsigned char bit_received = 0;
                
unsigned char recent_scan_code;

struct key
{
        unsigned char scan;
        unsigned char ascii_lower;
        //unsigned char ascii_upper;    
};

const struct key code keys[]  = {22,'1',
                                30,'2',
                                37,'4',
                                38,'3',
                                46,'5',
                                54,'6',
                                61,'7',
                                62,'8',
                                69,'0',
                                70,'9'};

#define RIGHT_ALT   17
#define RIGHT_CNTRL 20
#define END         105
#define LEFT_ARROW  107
#define HOME        108
#define INSERT      112
#define DELETE      113
#define DOWN_ARROW  114
#define RIGHT_ARROW 116
#define UP_ARROW    117
#define PAGE_DOWN   122
#define PAGE_UP     125

#define BACK_SPACE 8
#define ENTER      13
#define ESCAPE     27
#define SPACE_BAR  ' '

#define CONTROL    225

unsigned char is_keypressed = 0;
unsigned char bit_no = 1;

void kbint() interrupt 0
{
  	ET0 = 0;
	is_keypressed = 1;
	return;
}

char kbisr()
{
        bit_no = 1;

        while(KB_CLCK);

        recent_scan_code = 0x00;
        bit_received = 0x01;

        while(!KB_CLCK);

        while(bit_no <= 8)
        {
                while(KB_CLCK);

                if(KB_DATA)
                {
                        recent_scan_code = recent_scan_code | bit_received;
                }

                bit_received <<= 1;
                bit_no++;

                while(!KB_CLCK);
        }

        while(KB_CLCK);

        while(!KB_CLCK);

        while(KB_CLCK);

        while(!KB_CLCK);
     
        is_keypressed = 0;

        return 0;
}

unsigned char scantoascii(unsigned char scan)
{
        unsigned char i;

        for(i = 0; i < sizeof(keys) / sizeof(struct key); i++)
        {
                if(keys[i].scan == scan)return keys[i].ascii_lower;
        }
        return 0;
}

/*
int keyboardconnected()
{
        return is_keypressed;
}
*/

/*
int keypressed()
{
        if(is_keypressed)
        {
                is_keypressed = 0;
                return 1;
        }

        return 0;
}
*/

char getkey()
{
        char temp;
		char key;

		//if(keypressed)temp = kbisr();
    	//else return 0;

        temp = kbisr();

		if(temp == -1)
		{
			return 0;
		}

        if(recent_scan_code == 0xE0)
        {
                temp = kbisr();

                if(temp == -1)
				{
					return 0;
				}

                key = recent_scan_code;

				return key;
        }

        temp = kbisr();

        if(temp == -1)
		{
			return 0;
		}

        if(recent_scan_code == 0xF0)
        {
                temp = kbisr();

                if(temp == -1)
				{
					return 0;
				}

                key = scantoascii(recent_scan_code);
        }
        else
        {
                key = scantoascii(recent_scan_code);
        }

        if(key > 'a' && key <= 'z')key = 'A' + key - 'a';

		return key;
}

#endif

⌨️ 快捷键说明

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