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

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

?? keyboard.c

?? 本人寫的ATMEL 128 UC/OSII移植程序
?? C
字號:


#include "includes.h"

INT8U     KeyBuf[KEY_BUF_SIZE];     /* Keyboard buffer                                         */
INT8U     KeyBufInIx;               /* Index into key buf where next scan code will be inserted*/
INT8U     KeyBufOutIx;              /* Index into key buf where next scan code will be removed */
INT8U     KeyNRead;                 /* Number of keys read from the keyboard                   */
INT16U    KeyDownTmr;
INT8U     KeyRptStartDlyCtr;
INT8U     KeyRptDlyCtr;
INT8U     KeyScanState;

uchar keypressed;  /*key press flag to see whether */
OS_EVENT *KeySemPtr;
/*
**************************************************************************************************
Function discription:   keyboard scan

Global variable: key_number

**************************************************************************************************
*/
void KeyBoard_Init(void)
{
  uchar PORT_temp = 0x00;
  PORT_temp |= PORTD&0xff;               //save port status

  KeyNRead     = 0;                            /* Clear the number of keys read                      */
  KeyDownTmr   = 0;
  KeyBufInIx   = 0;                            /* Key codes inserted at  the beginning of the buffer */
  KeyBufOutIx  = 0;                            /* Key codes removed from the beginning of the buffer */

  SRAM_DISABLE();

  KeyScanState = KEY_STATE_UP;
  KEY_SCAN_ENABLE();
  KEY_SCAN_OUT=0x00;
  keypressed = 0;
  KEY_SCAN_DISABLE();
  PORTD = PORT_temp;
}

void  KeyBufIn (INT8U code)
{
    uchar cpu_sr;
    OS_ENTER_CRITICAL();                         /* Start of critical section of code, disable ints    */
    if (KeyNRead < KEY_BUF_SIZE) {               /* Make sure that we don't overflow the buffer        */
        KeyNRead++;                              /* Increment the number of keys read                  */
        KeyBuf[KeyBufInIx++] = code;             /* Store the scan code into the buffer                */
        if (KeyBufInIx >= KEY_BUF_SIZE) {        /* Adjust index to the next scan code to put in buffer*/
            KeyBufInIx = 0;
        }
        OS_EXIT_CRITICAL();                      /* End of critical section of code                    */
        OSSemPost(KeySemPtr);                    /* Signal sem if scan code inserted in the buffer     */
    } else {                                     /* Buffer is full, key scan code is lost              */
        OS_EXIT_CRITICAL();                      /* End of critical section of code                    */
    }
}


INT8U  KeyDecode (void)
{
  INT8U msk,code=0xff;
  uchar PORT_temp =0x00;
  PORT_temp |= PORTD&0xff; //save port status

  SRAM_DISABLE();//disable exrern sram
  msk=0x3f;//b00111111;
  KEY_SCAN_ENABLE();
  KEY_SCAN_OUT=msk&0xfe;//0b11111110;  //KO0
  if(!(KEY_SCAN_IN&0x01))code=1; //KI0 R
  if(!(KEY_SCAN_IN&0x02))code=2; //KI1 UP
  if(!(KEY_SCAN_IN&0x04))code=3; //KI2 C
  KEY_SCAN_OUT=msk&0xfd;//0b11111101;  //KO1
  if(!(KEY_SCAN_IN&0x01))code=4; //KI0 LEFT
  if(!(KEY_SCAN_IN&0x02))code=5; //KI1 OK
  if(!(KEY_SCAN_IN&0x04))code=6; //KI2 RIGHT
  KEY_SCAN_OUT=msk&0xfb;//0b11111011;  //KO2
  if(!(KEY_SCAN_IN&0x01))code=7; //KI0 F1
  if(!(KEY_SCAN_IN&0x02))code=8; //KI1 down
  if(!(KEY_SCAN_IN&0x04))code=9; //KI2 F2
  if(!(KEY_SCAN_IN&0x08))code=10;//KI3 +/-
  KEY_SCAN_OUT=msk&0xf7;//0b11110111;  //KO3
  if(!(KEY_SCAN_IN&0x01))code=11; //KI0 1
  if(!(KEY_SCAN_IN&0x02))code=12; //KI1 2
  if(!(KEY_SCAN_IN&0x04))code=13; //KI2 3
  if(!(KEY_SCAN_IN&0x08))code=14; //KI3 0
  KEY_SCAN_OUT=msk&0xef;//0b11101111;  //KO4
  if(!(KEY_SCAN_IN&0x01))code=15; //KI0 4
  if(!(KEY_SCAN_IN&0x02))code=16; //KI1 5
  if(!(KEY_SCAN_IN&0x04))code=17; //KI2 6
  if(!(KEY_SCAN_IN&0x08))code=18;//KI3  mode
  KEY_SCAN_OUT=msk&0xdf;//b11011111;  //KO5
  if(!(KEY_SCAN_IN&0x01))code=19; //KI0 7
  if(!(KEY_SCAN_IN&0x02))code=20; //KI1 8
  if(!(KEY_SCAN_IN&0x04))code=21; //KI2
  KEY_SCAN_OUT=0x00;
  PORTD = PORT_temp;//restore the port status
  KEY_SCAN_DISABLE();
  return (code);    /* Return scan code  */
}

uchar KeyHit(void) /*to see */
{
  BOOLEAN hit;
  uchar cpu_sr;
  OS_ENTER_CRITICAL();
  hit = (BOOLEAN)(KeyNRead > 0) ? 1 : 0;
  OS_EXIT_CRITICAL();
  return (hit);
}

INT8U  KeyGetKey (INT16U to)
{
    INT8U code;
    INT8U err;
    uchar cpu_sr;
    OSSemPend(KeySemPtr, to, &err);              /* Wait for a key to be pressed                       */
    OS_ENTER_CRITICAL();                         /* Start of critical section of code, disable ints    */
    if (KeyNRead > 0) {                          /* See if we have keys in the buffer                  */
        KeyNRead--;                              /* Decrement the number of keys read                  */
        code = KeyBuf[KeyBufOutIx];              /* Get scan code from the buffer                      */
        KeyBufOutIx++;
        if (KeyBufOutIx >= KEY_BUF_SIZE) {       /* Adjust index into the keyboard buffer              */
            KeyBufOutIx = 0;
        }
        OS_EXIT_CRITICAL();                      /* End of critical section of code                    */
        return (code);                           /* Return the scan code of the key pressed            */
    } else {
        OS_EXIT_CRITICAL();                      /* End of critical section of code                    */
        return (0xFF);                           /* No scan codes in the buffer, return -1             */
    }
}

INT32U  KeyGetKeyDownTime (void)
{
    INT16U tmr;
    uchar cpu_sr;
    OS_ENTER_CRITICAL();
    tmr = KeyDownTmr;
    OS_EXIT_CRITICAL();
    return (tmr * KEY_SCAN_TASK_DLY);
}

BOOLEAN  KeyIsKeyDown (void)
{
  uchar cpu_sr;
  if ((PINE&0x40) == 0)
  {
    OS_ENTER_CRITICAL();
    KeyDownTmr++;                                      /* Update key down counter                  */
    OS_EXIT_CRITICAL();
    keypressed = 0;
    return (1);
  }
  else
  {
    keypressed = 0;
    return (0);
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲制服丝袜在线| 日韩精品国产精品| 欧美精三区欧美精三区| 成人天堂资源www在线| 奇米色一区二区| 天天色综合成人网| 性做久久久久久久久| 午夜精品久久久久久久久| 国产a区久久久| 91视频www| 欧美视频三区在线播放| 色噜噜狠狠一区二区三区果冻| www.欧美.com| 91国模大尺度私拍在线视频| 久久综合网色—综合色88| 欧美日韩国产免费| 精品视频一区 二区 三区| 欧美久久高跟鞋激| 中文字幕亚洲电影| 精品福利二区三区| 国产精品99久久不卡二区| 国产精品免费视频观看| 日韩欧美精品在线| 91.xcao| 成人18视频在线播放| 在线电影院国产精品| 成人欧美一区二区三区黑人麻豆| 日韩一区精品字幕| 欧美日韩一级黄| 日韩午夜av电影| 色综合欧美在线| 国产麻豆精品一区二区| 国产一区二区三区美女| 日本精品一区二区三区高清| 国产精品萝li| 国产老女人精品毛片久久| 欧美一激情一区二区三区| 一区二区三区中文字幕| 自拍偷拍亚洲综合| 丰满白嫩尤物一区二区| 久久综合久久综合九色| 久久99久久久欧美国产| 美女免费视频一区二区| 国产精品白丝jk黑袜喷水| 日韩手机在线导航| 久久国产精品无码网站| 91精品免费在线| 日本aⅴ精品一区二区三区| 欧美三级中文字| 天天综合色天天综合色h| 欧美亚洲高清一区| 亚洲国产精品久久不卡毛片| 亚洲超碰97人人做人人爱| 91女厕偷拍女厕偷拍高清| 国产精品成人网| 日本欧美在线观看| 色天天综合久久久久综合片| 国产精品欧美极品| 91在线云播放| 亚洲电影你懂得| 制服丝袜国产精品| 麻豆国产精品一区二区三区 | 亚洲成国产人片在线观看| 不卡av在线网| 欧美国产精品劲爆| 成人免费毛片app| 亚洲综合久久久久| 欧美在线高清视频| 免费亚洲电影在线| 国产亚洲欧美中文| 色香色香欲天天天影视综合网| 亚洲精品国产第一综合99久久| 欧美视频一区二区三区四区| 免费国产亚洲视频| 国产精品少妇自拍| 色婷婷香蕉在线一区二区| 婷婷开心久久网| 久久夜色精品国产噜噜av| 99久久综合99久久综合网站| 一区二区三区四区高清精品免费观看| 欧美男女性生活在线直播观看| 美国毛片一区二区三区| 国产精品久久久一本精品 | 成人免费视频在线观看| 欧美亚洲综合在线| 极品少妇xxxx精品少妇| 国产精品视频观看| 91精品久久久久久蜜臀| 国产成a人亚洲| 午夜亚洲福利老司机| 欧美韩国日本不卡| 精品视频在线看| 成人深夜福利app| 男人的天堂久久精品| 国产欧美日韩精品a在线观看| 欧美精品aⅴ在线视频| 不卡的av中国片| 蓝色福利精品导航| 国产精品日韩成人| 欧美一区二区三区视频| 亚洲欧美日韩系列| 国产电影精品久久禁18| 五月综合激情网| 亚洲欧美一区二区久久 | 色综合天天综合狠狠| 精品在线视频一区| 香蕉加勒比综合久久| 国产精品系列在线| 91久久精品一区二区二区| 国产精品综合av一区二区国产馆| 国产精品无码永久免费888| 日韩视频在线永久播放| 欧美日韩视频在线第一区 | 色久综合一二码| 国产成人综合在线| 激情丁香综合五月| 日韩精品91亚洲二区在线观看| 亚洲欧洲色图综合| 国产精品毛片久久久久久久 | 国产原创一区二区| 蜜桃视频在线观看一区| 亚洲成人av电影在线| 亚洲欧洲成人av每日更新| xnxx国产精品| 精品日韩99亚洲| 精品国产区一区| 日韩精品在线网站| 欧美成人性战久久| 亚洲精品在线免费播放| 精品国产一区二区在线观看| 欧美高清激情brazzers| 欧美日韩你懂的| 91高清在线观看| 69堂精品视频| 精品美女在线观看| 国产肉丝袜一区二区| 中文字幕第一页久久| 国产精品久久久久aaaa樱花| 国产农村妇女精品| 国产精品护士白丝一区av| 国产精品二三区| 亚洲一区二区三区精品在线| 五月综合激情日本mⅴ| 日韩精品午夜视频| 久久成人18免费观看| 国产一区二区看久久| 国产激情偷乱视频一区二区三区| 国产91精品免费| 91麻豆国产福利在线观看| 欧美中文字幕一二三区视频| 欧美少妇一区二区| 日韩一区二区在线观看视频播放| 欧美成va人片在线观看| 国产午夜一区二区三区| 亚洲女性喷水在线观看一区| 亚洲柠檬福利资源导航| 一区二区三区免费网站| 亚洲a一区二区| 天天色图综合网| 精品一区精品二区高清| 99免费精品在线观看| 91精品国产综合久久久久久久| 精品福利在线导航| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲与欧洲av电影| 久久国产麻豆精品| 日本电影欧美片| 精品国产3级a| 亚洲无人区一区| 狠狠v欧美v日韩v亚洲ⅴ| 色综合中文字幕国产| 精品久久99ma| 亚洲一区在线观看视频| 午夜精品福利一区二区三区av | 亚洲精品一区在线观看| 亚洲欧洲国产日本综合| 蜜桃视频一区二区| 99精品久久只有精品| 日韩欧美中文字幕公布| 一区二区三区中文在线观看| 久久aⅴ国产欧美74aaa| 色欧美片视频在线观看| 欧美精品一区二区久久婷婷| 亚洲主播在线播放| 不卡影院免费观看| 日韩一级片在线播放| 中文字幕视频一区| 国产在线播放一区| 欧美一区二区福利视频| 国产网站一区二区| 青草国产精品久久久久久| 国产乱子伦视频一区二区三区| 91亚洲精品乱码久久久久久蜜桃| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲成年人影院| 在线观看日韩高清av| 国产精品免费av| 国产精品888| 精品99999| 精品一区二区三区欧美|