亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? keyboard.c

?? 104鍵PS2接口標準鍵盤程序(C語言),通過測試可以!程序簡單易懂。基于ICCAVR編譯器
?? C
字號:
/*****************************
** low level kexboard routines                VERSION 1.0
******************************/
//ICC-AVR application builder : 2009-3-13 23:41:54
// Target : M16
// Crystal: 11.059Mhz

#include <iom16v.h>
#include <macros.h>

// "kb.h"
#include "scancode.h"

#define BUFF_SIZE 64
#define CLOCK   2
#define DATAPIN 3

#define ISC00 0
#define ISC01 1

// Declare your global variables here
unsigned char edge, bitcount;                // 0 = neg.  1 = pos.

unsigned char kb_buffer[BUFF_SIZE];
unsigned char *inpt, *outpt;
unsigned char buffcnt;

void port_init(void)
{
 PORTA = 0x00;
 DDRA  = 0x00;
 PORTB = 0x00;
 DDRB  = 0x00;
 PORTC = 0x00; //m103 output only
 DDRC  = 0x00;
 PORTD = 0x00;
 DDRD  = 0x00;
}


void InitKeyBoard(void)
{
    inpt =  kb_buffer;                        // Initialize buffer
    outpt = kb_buffer;
    buffcnt = 0;

    //MCUCR = 2;                                // INT0 interrupt on falling edge
    edge = 0;                                // 0 = falling edge  1 = rising edge
    bitcount = 11;               
    //#asm("sei")                              // interrupt enable
}


void put_kbbuff(unsigned char c)
{
    if (buffcnt<BUFF_SIZE)                        // If buffer not full
    {
        *inpt = c;                                // Put character into buffer
        inpt++;                                    // Increment pointer

        buffcnt++;

        if (inpt >= kb_buffer + BUFF_SIZE)        // Pointer wrapping
            inpt = kb_buffer;
    }
}

int getchar_kb(void)
{
    int byte;
    while(buffcnt == 0);                        // Wait for data

    byte = *outpt;                                // Get byte
    outpt++;                                    // Increment pointer

    if (outpt >= kb_buffer + BUFF_SIZE)            // Pointer wrapping
        outpt = kb_buffer;
    
    buffcnt--;                                    // Decrement buffer count

    return byte;
}

void print_hexbyte(unsigned char i)   //???
{
    unsigned char h, l;
    
    h = i & 0xF0;               // High nibble
    h = h>>4;
    h = h + '0';
    
    if (h > '9')
        h = h + 7;

    l = (i & 0x0F)+'0';         // Low nibble
    if (l > '9')
        l = l + 7;

    put_kbbuff(h);
    put_kbbuff(l);
}
 
void decode(unsigned char sc)
{
    static unsigned char is_up=0, shift = 0, mode = 0;
    unsigned char i;
 
    if (!is_up)                // Last data received was the up-key identifier
    {
        switch (sc)
        {
          case 0xF0 :        // The up-key identifier
            is_up = 1;
            break;

          case 0x12 :        // Left SHIFT
            shift = 1;
            break;

          case 0x59 :        // Right SHIFT
            shift = 1;
            break;

          case 0x05 :        // F1
            if(mode == 0)   mode = 1;    // Enter scan code mode
            if(mode == 2)   mode = 3;    // Leave scan code mode
            break;

          default:
            if(mode == 0 || mode == 3)        // If ASCII mode
            {
                if(!shift)                    // If shift is not pressed,
                {                            // do a table look-up
                    for(i = 0; unshifted[i][0]!=sc && unshifted[i][0]; i++);//???
                    if (unshifted[i][0] == sc) {
                        put_kbbuff(unshifted[i][1]);
                    }
                } else {                    // If shift is pressed
                    for(i = 0; shifted[i][0]!=sc && shifted[i][0]; i++);
                    if (shifted[i][0] == sc) {
                        put_kbbuff(shifted[i][1]);
                    }
                }
            } else{                            // Scan code mode
                print_hexbyte(sc);            // Print scan code
                put_kbbuff(' ');

            }
            break;
        }
    } else {
        is_up = 0;                            // Two 0xF0 in a row not allowed
        switch (sc)
        {
          case 0x12 :                        // Left SHIFT
            shift = 0;
            break;
            
          case 0x59 :                        // Right SHIFT
            shift = 0;
            break;

          case 0x05 :                        // F1
            if(mode == 1)
                mode = 2;
            if(mode == 3)
                mode = 0;
            break;
          case 0x06 :                        // F2
           // clr();
            break;  
            
        } 
    }    
} 


#pragma interrupt_handler int0_isr:iv_INT0
void int0_isr(void)
{
 //external interupt on INT0
 static unsigned char data;                // Holds the received scan code

        if(bitcount < 11 && bitcount > 2)    // Bit 3 to 10 is data. Parity bit,
        {                                    // start and stop bits are ignored.
            data = (data >> 1);
            if(PIND & 8)            //first receive lsb
                data = data | 0x80;            // Store a '1'
        }

        if(--bitcount == 0)                    // All bits received
        {
            decode(data);
            bitcount = 11;
        }
}



void delay_ms(unsigned char ms)
{
      unsigned int i;
	  while(ms--)
	  for(i=11059;i=0;i--);
}

//call this routine to initialize all peripherals
void init_devices(void)
{
 //stop errant interrupts until set up
 CLI(); //disable all interrupts
 port_init();
InitKeyBoard();

 MCUCR = 0x02;
 GICR  = 0x40;
 TIMSK = 0x00; //timer interrupt sources
 SEI(); //re-enable interrupts
 //all peripherals are now initialized
}

//#include <delay.h>   

//#include <lcd.h>


void main(void)
{
// Declare your local variables here
    unsigned char key;

 
  	while(1)
    {
        key = getchar_kb();
        //lcd_putchar(key);
        delay_ms(5);   
      
    }

}




 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩在线播放三区四区| 国产福利一区在线| 在线观看日韩精品| 夜夜嗨av一区二区三区网页| 色婷婷精品久久二区二区蜜臂av| 亚洲色图在线看| 91黄色免费网站| 丝袜诱惑亚洲看片| 精品国产区一区| 国产馆精品极品| 亚洲男同1069视频| 制服.丝袜.亚洲.另类.中文| 欧美a一区二区| 久久久精品国产免大香伊| 丰满少妇久久久久久久| 亚洲日本va午夜在线影院| 欧美中文字幕一二三区视频| 日韩高清不卡一区二区| 久久午夜免费电影| 色综合久久综合| 日韩av在线播放中文字幕| 成人免费视频在线观看| 91美女精品福利| 肉丝袜脚交视频一区二区| 久久久久久久国产精品影院| 成人美女视频在线观看| 亚洲成人综合视频| 久久婷婷国产综合精品青草| 99久久精品免费| 日本va欧美va欧美va精品| 国产日韩成人精品| 欧美系列亚洲系列| 国产成人在线视频网址| 亚洲午夜久久久久久久久电影网| 精品国产三级a在线观看| 色狠狠一区二区| 狠狠色丁香婷婷综合久久片| 亚洲女同ⅹxx女同tv| 精品久久久久久久久久久久久久久 | 黄色精品一二区| 亚洲欧美综合另类在线卡通| 欧美一区二区三区在线视频| 99久久久国产精品| 九九精品视频在线看| 曰韩精品一区二区| 久久久久久电影| 在线播放欧美女士性生活| 波波电影院一区二区三区| 日本三级韩国三级欧美三级| 亚洲视频中文字幕| 久久先锋影音av鲁色资源| 欧美日韩高清一区二区| 91在线观看成人| 国产综合一区二区| 日本中文字幕一区二区有限公司| 尤物在线观看一区| 国产精品天天看| 精品久久一二三区| 欧美一二三区精品| 欧美日韩一区中文字幕| 色婷婷综合久久久久中文 | 久久久亚洲综合| 日韩欧美中文一区二区| 欧美三级在线视频| 日本高清成人免费播放| av在线不卡观看免费观看| 国产高清不卡一区| 国产一区二区91| 国产一区在线视频| 久久国产麻豆精品| 麻豆91在线看| 久久91精品国产91久久小草 | 欧美日韩精品一区二区天天拍小说 | av亚洲精华国产精华精华| 国产成人久久精品77777最新版本| 秋霞电影一区二区| 久久精品72免费观看| 蜜桃一区二区三区四区| 婷婷中文字幕一区三区| 香蕉影视欧美成人| 午夜久久电影网| 丝瓜av网站精品一区二区| 五月天国产精品| 极品少妇一区二区三区精品视频| 日韩高清一区二区| 久久福利资源站| 国产一区二区三区在线观看免费 | 亚洲午夜激情网页| 亚洲.国产.中文慕字在线| 石原莉奈在线亚洲三区| 三级精品在线观看| 精品一二线国产| 国产不卡视频在线观看| 99久久夜色精品国产网站| 色综合咪咪久久| 51久久夜色精品国产麻豆| 日韩欧美视频在线| 国产婷婷一区二区| 亚洲日本一区二区| 亚洲超碰精品一区二区| 美女爽到高潮91| 成人在线一区二区三区| a级精品国产片在线观看| 91久久精品国产91性色tv| 欧美挠脚心视频网站| 日韩精品在线看片z| 国产精品视频麻豆| 亚洲福中文字幕伊人影院| 久久99蜜桃精品| 9色porny自拍视频一区二区| 精品视频在线视频| 久久尤物电影视频在线观看| 国产精品无人区| 亚洲bt欧美bt精品777| 狠狠色丁香九九婷婷综合五月| 成人av电影免费在线播放| 欧美日韩三级一区| 国产三级精品在线| 亚洲一二三区视频在线观看| 国内外成人在线| 在线视频一区二区免费| 精品欧美一区二区三区精品久久| 国产精品久久久久久久久免费相片| 一区二区三区在线观看动漫| 久草热8精品视频在线观看| 91麻豆蜜桃一区二区三区| 日韩欧美激情一区| 日韩理论片在线| 国产一区欧美一区| 欧美日韩一区视频| 国产精品护士白丝一区av| 日本不卡123| 色狠狠一区二区三区香蕉| 久久综合五月天婷婷伊人| 亚洲一区二区三区四区在线| 国产精品中文字幕一区二区三区| 欧美妇女性影城| 亚洲女同女同女同女同女同69| 激情文学综合插| 欧美精品色一区二区三区| 《视频一区视频二区| 激情综合色综合久久| 欧美日韩一区二区电影| 中文字幕一区日韩精品欧美| 国内久久婷婷综合| 欧美一区二区性放荡片| 一区二区三区**美女毛片| 成人一区二区在线观看| 2021中文字幕一区亚洲| 日韩黄色免费网站| 欧美日韩亚洲不卡| 亚洲综合一区在线| 91在线一区二区三区| 中文字幕精品一区二区精品绿巨人| 麻豆精品视频在线| 国产精品免费看片| 久久99国产精品久久| 日韩欧美国产精品一区| 亚洲高清免费在线| 欧美日韩久久一区| 亚洲中国最大av网站| 色综合天天综合给合国产| 国产精品久久久久久久久图文区| 国产精品12区| 国产日产亚洲精品系列| 国产在线视视频有精品| 精品国产人成亚洲区| 麻豆精品新av中文字幕| 精品剧情v国产在线观看在线| 麻豆一区二区在线| 欧美精品一区二区三区蜜桃| 久久99久久99| 久久伊人中文字幕| 国产福利一区在线观看| 国产精品嫩草影院av蜜臀| 波多野结衣精品在线| 亚洲欧美在线高清| 日本精品一区二区三区高清| 亚洲精品国久久99热| 欧美艳星brazzers| 日韩精品五月天| 欧美大片在线观看一区| 国产精品资源在线| 中文字幕在线播放不卡一区| 91丨九色丨蝌蚪丨老版| 亚洲成在线观看| 欧美一区二区三区四区久久| 精品一区二区三区在线播放 | 欧美日韩精品是欧美日韩精品| 亚洲香肠在线观看| 69精品人人人人| 国产美女av一区二区三区| 国产精品久久久久影院| 欧美专区日韩专区| 蜜臀a∨国产成人精品| 国产人成亚洲第一网站在线播放| 99re热这里只有精品免费视频| 亚洲一区二区三区四区在线 | 国产性天天综合网| 色婷婷久久99综合精品jk白丝|