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

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

?? 單片機鍵盤掃描之狀態機實現.doc

?? 單片機掃描狀態機的程序實現
?? DOC
字號:
單片機鍵盤掃描之狀態機實現
************************************************************/
#ifndef _TYPE_H_
#define _TYPE_H_
//type define
#define UINT8 unsigned char
#define INT8 char
#define UINT16 unsigned int
#define INT16 signed int
#define UINT32 unsigned long
#define INT32 signed long
#define FLP32 float
#endif
/************************************************************
FileName: includes.h

Version :V1.0
Date: 2008.1.2
Description:
History:
<author> <time> <version > <desc>

************************************************************/
#ifndef _INCLUDES_H_
#define _INCLUDES_H_
//system header files
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
//user header files
#include "type.h"
#include "queue.h"
#include "key.h"
#define SYSTEM_FREQUENCY_HZ 8000000
#endif
/************************************************************
FileName: queue.h

Version :V1.0
Date: 2008.1.2
Description:
History:
<author> <time> <version > <desc>
************************************************************/

#ifndef _QUEUE_H_
#define _QUEUE_H_
#include "type.h"
class CQueue
{
private:
INT8 *pBuf;
UINT16 BufLen;
INT8 *pHead;
INT8 *pTail;
UINT16 count;
public:
UINT8 IsQueueEmpty(void);
void QueueInit(INT8 *pBuffer,UINT16 len);
UINT8 AddInQueue(INT8 dat);
UINT8 RequestFrQueue(INT8 *pDat);
};
#endif
/************************************************************
FileName: queue.cpp

Version :V1.0
Date: 2008.1.2
Description:
management of queue
History:
<author> <time> <version > <desc>

************************************************************/
#include "includes.h"
UINT8 CQueue::IsQueueEmpty(void)
{
return 1;
}
void CQueue::QueueInit(INT8 *pBuffer,UINT16 len)
{
pBuf=pBuffer;
pHead=pBuf;
pTail=pBuf;
count=0;
BufLen=len;
}
UINT8 CQueue::AddInQueue(INT8 dat)
{
if(count<BufLen)
{
(*pTail++)=dat;
count++;
if(pTail==(pBuf+BufLen))
{
pTail=pBuf;
}
return 1;
}
else
{
return 0;
}
}
UINT8 CQueue::RequestFrQueue(INT8 *pDat)
{
if(count)
{

*pDat=(*pHead++);
if(pHead==(pBuf+BufLen))
pHead=pBuf;
count--;
return 1;
}
else
{
return 0;
}
}
/************************************************************
FileName: key.h

Version :V1.0
Date: 2008.1.2
Description:
History:
<author> <time> <version > <desc>
************************************************************/
#ifndef _KEY_H_
#define _KEY_H_
#include "type.h"
#define GET_KEY1_SIGNAL PINE&(0X01<<0X02)
#define GET_KEY2_SIGNAL PINE&(0X01<<0X03)
#define MSG_DOWN 0X01
#define MSG_UP 0X02
#define MSG_SHORT_CLICK 0X03
#define MSG_LONG_CLICK 0X04

class CSingleKeyManager
{
private:
#define KEY_STATE_IDLE 0X01
#define KEY_STATE_IS_DOWN 0X02
#define KEY_STATE_DOWN 0X03
#define KEY_STATE_IS_UP 0X04
UINT8 m_state;
UINT8 m_DownCount;
#define MAX_MSG_LENGTH 0X10
INT8 m_MsgBuf[MAX_MSG_LENGTH];
CQueue m_MessageQueue;
public:
CSingleKeyManager();
void StateChange(UINT8 LineHighLow);
UINT8 GetMsg(void);
};
#endif
/************************************************************
FileName: key.cpp

Version :V1.0
Date: 2008.1.2
Description:
key managerment
1.scan mode
2.short clicked
3.long clicked

4.more info refer to file:key.jpeg
History:
<author> <time> <version > <desc>
************************************************************/
#include "includes.h"
CSingleKeyManager::CSingleKeyManager()
{
m_state=KEY_STATE_IDLE;
m_DownCount=0;
m_MessageQueue.QueueInit(m_MsgBuf,MAX_MSG_LENGTH);
}
void CSingleKeyManager::StateChange(UINT8 LineHighLow)
{
switch(m_state)
{
case KEY_STATE_IDLE:
{
if(LineHighLow)
{
asm("nop");
// WriteLog("1H\n");
}
else
{
m_state=KEY_STATE_IS_DOWN;
// WriteLog("1L\n");
}
}
break;
case KEY_STATE_IS_DOWN:
{
if(LineHighLow)
{
m_state=KEY_STATE_IDLE;
// WriteLog("2H\n");

}
else
{
m_state=KEY_STATE_DOWN;
// WriteLog("2L\n");
if(!m_MessageQueue.AddInQueue(MSG_DOWN))
{
asm("nop");//error
// WriteLog("KEY QUEUE ERROR\n");
}
}
}
break;
case KEY_STATE_DOWN:
{
if(LineHighLow)
{
m_state=KEY_STATE_IS_UP;
// WriteLog("3H\n");
}
else
{
m_DownCount++;
if(m_DownCount==255)
m_DownCount=255;
// WriteLog("3L\n");
}
}
break;
case KEY_STATE_IS_UP:
{
if(LineHighLow)
{
// WriteLog("4H\n");
m_state=KEY_STATE_IDLE;
m_MessageQueue.AddInQueue(MSG_UP);
if(m_DownCount>(2000/SYSTEM_RHYTHM_MS))
{
// WriteLog("LONG\n");
m_MessageQueue.AddInQueue(MSG_LONG_CLICK);
m_DownCount=0;
}
else
{

// WriteLog("SHORT\n");
m_MessageQueue.AddInQueue(MSG_SHORT_CLICK);
m_DownCount=0;
}
}
else
{
// WriteLog("4L\n");
m_state=KEY_STATE_DOWN;
}
}
break;
default:
asm("nop");
}
}
UINT8 CSingleKeyManager::GetMsg(void)
{
INT8 msg;
if(m_MessageQueue.RequestFrQueue(&msg))
{
return msg;
}
else
{
return 0x00;
}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区免费大片| 国产乱码一区二区三区| 国产三级精品三级在线专区| 7777精品伊人久久久大香线蕉的| 色伊人久久综合中文字幕| av在线不卡观看免费观看| 丰满少妇久久久久久久 | 欧洲激情一区二区| 91在线视频免费91| 欧美亚洲高清一区| 欧美一区二区在线免费播放| 91精品国产91久久久久久最新毛片| 欧美日韩另类一区| 日韩欧美国产综合在线一区二区三区| 日韩一级片在线观看| 精品福利一区二区三区免费视频| 久久综合成人精品亚洲另类欧美| 国产亚洲一本大道中文在线| 综合在线观看色| 亚洲第一综合色| 国产一区二区在线视频| 成人免费毛片片v| 日本道在线观看一区二区| 欧美精品国产精品| 国产日韩欧美综合在线| 亚洲欧洲中文日韩久久av乱码| 亚洲第一综合色| 国产成人精品亚洲日本在线桃色 | 六月丁香综合在线视频| 国产毛片精品国产一区二区三区| 成人美女在线观看| 91.成人天堂一区| 国产精品日韩精品欧美在线| 亚洲综合视频在线| 国产老妇另类xxxxx| 在线日韩一区二区| 2021国产精品久久精品| 一区二区三区四区不卡在线 | 亚洲免费成人av| 蜜桃传媒麻豆第一区在线观看| 懂色av一区二区三区免费观看| 欧美性色综合网| 久久精品在线免费观看| 午夜精品久久一牛影视| 国产69精品一区二区亚洲孕妇| 欧美日韩视频不卡| 亚洲欧美一区二区在线观看| 全国精品久久少妇| 欧美在线观看视频在线| 国产情人综合久久777777| 日韩二区三区在线观看| 91香蕉国产在线观看软件| 欧美videos中文字幕| 亚洲大片在线观看| 色视频一区二区| 国产精品免费aⅴ片在线观看| 久久99精品久久久久久久久久久久| 日本韩国欧美国产| 中文字幕不卡的av| 国产在线精品国自产拍免费| 欧美日韩一区二区三区高清| 亚洲另类在线视频| 97成人超碰视| 中文字幕乱码亚洲精品一区| 国产专区欧美精品| 日韩欧美你懂的| 日韩影视精彩在线| 67194成人在线观看| 亚瑟在线精品视频| 欧美精品 日韩| 日韩va亚洲va欧美va久久| 日本高清视频一区二区| 有坂深雪av一区二区精品| 成人h版在线观看| 欧美国产一区在线| 9i看片成人免费高清| 国产精品久久久久aaaa| 成人动漫在线一区| 日韩码欧中文字| 99久久精品免费看国产 | 欧美唯美清纯偷拍| 亚洲自拍偷拍麻豆| 欧美日韩午夜在线| 免播放器亚洲一区| xf在线a精品一区二区视频网站| 麻豆视频观看网址久久| 精品国产一区二区三区久久久蜜月| 免费亚洲电影在线| 2021国产精品久久精品| 成人久久久精品乱码一区二区三区| 日本一区二区成人| 色天使久久综合网天天| 日韩中文欧美在线| 久久精品人人做人人爽人人| 国产a精品视频| 亚洲自拍另类综合| 日韩免费视频线观看| 粉嫩av一区二区三区| 亚洲精品免费看| 欧美电影免费观看高清完整版在| 国产一区二区三区在线观看免费视频 | 国产偷国产偷精品高清尤物| 久久精品99国产精品日本| 国产日韩欧美电影| 在线一区二区三区四区| 久久国产精品72免费观看| 国产欧美一区二区精品性色超碰 | 日本成人中文字幕在线视频 | 欧美性感一类影片在线播放| 日本成人在线看| 国产精品不卡一区二区三区| 欧美老女人第四色| 粉嫩av亚洲一区二区图片| 午夜影院在线观看欧美| 日本一区二区三区久久久久久久久不| 色综合一区二区| 国内精品伊人久久久久av一坑| 亚洲人亚洲人成电影网站色| 日韩亚洲欧美在线| 色狠狠桃花综合| 国产精品18久久久久| 亚洲成人激情社区| 一区在线观看视频| 亚洲婷婷国产精品电影人久久| 欧美日本韩国一区| 91麻豆视频网站| 国产成人8x视频一区二区| 日本一区中文字幕| eeuss影院一区二区三区| 久久福利资源站| 日韩欧美一级精品久久| 欧美色图片你懂的| 91麻豆精品秘密| 中文字幕一区二区三区av| 国产经典欧美精品| 成人激情午夜影院| 在线这里只有精品| 日韩一区二区免费电影| 久久久亚洲精品石原莉奈 | 亚洲美女视频在线| 亚洲成人激情社区| 国产美女在线精品| 99精品久久免费看蜜臀剧情介绍| 亚洲欧美激情一区二区| 欧美国产亚洲另类动漫| 久久久国产精品麻豆| 久久久综合网站| 亚洲精品在线观| 久久影院午夜片一区| 精品国产一区二区三区四区四| 欧美一级二级三级乱码| 欧美一区二区三区日韩| 欧美日本在线观看| 欧美片在线播放| 6080午夜不卡| 欧美大片拔萝卜| 6080日韩午夜伦伦午夜伦| 8x8x8国产精品| 日韩免费看网站| 久久免费视频色| 久久精品视频一区二区三区| 国产亚洲欧美在线| 中文字幕免费不卡| 亚洲伦理在线精品| 午夜精品在线看| 国产拍欧美日韩视频二区| www.成人网.com| 偷拍与自拍一区| 国产美女娇喘av呻吟久久| 成人午夜在线免费| 91黄色免费版| 精品成人a区在线观看| 亚洲a一区二区| 成人动漫在线一区| 久久久久久久久久看片| 丝袜诱惑亚洲看片| 色综合久久中文字幕| 国产欧美一区二区精品婷婷| 日本欧美韩国一区三区| 日本精品免费观看高清观看| 中文字幕不卡的av| 国产精品一区二区在线观看网站| 97国产一区二区| 中文字幕不卡在线播放| 国产高清久久久| 精品剧情在线观看| 日韩不卡在线观看日韩不卡视频| 欧洲一区二区三区在线| 亚洲男帅同性gay1069| 99精品视频在线播放观看| 久久久av毛片精品| 国产精品一区2区| 久久久美女艺术照精彩视频福利播放| 日韩1区2区3区| 欧美伦理影视网| 丝袜亚洲另类欧美| 69久久99精品久久久久婷婷 | 久久se这里有精品| 日韩一级大片在线| 日韩电影免费在线观看网站|