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

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

?? ps2.c

?? 用Keilc編寫的讀取計算機pc鍵盤碼的程序
?? C
字號:
#include <at89x51.h>
#include "scancodes.h"

#define LCM_RW    P1_1 //定義LCD引腳
#define LCM_RS    P1_0
#define LCM_E     P1_2
#define LCM_Data  P0

#define Busy 0x80 //用于檢測LCM狀態字中的Busy標識

#define Key_Data  P1_7 //定義Keyboard引腳
#define Key_CLK   P3_2

void LCMInit(void);
void DisplayOneChar(unsigned char X,unsigned char Y,unsigned char DData);
void DisplayListChar(unsigned char X,unsigned char Y,unsigned char code *DData);
void Delay5Ms(void);
void Delay400Ms(void);
void Decode(unsigned char ScanCode);
void WriteDataLCM(unsigned char WDLCM);
void WriteCommandLCM(unsigned char WCLCM,BuysC);

unsigned char ReadDataLCM(void);
unsigned char ReadStatusLCM(void);
unsigned char code cdle_net[] = {"-www.cdle.net--"};
unsigned char code email[] = {"pnzwzw@cdle.net"};
unsigned char code Cls[] = {" "};
static unsigned char IntNum = 0; //中斷次數計數
static unsigned char KeyV; //鍵值
static unsigned char DisNum = 0; //顯示用指針
static unsigned char Key_UP=0, Shift = 0;//Key_UP是鍵松開標識,Shift是Shift鍵按下標識
static unsigned char BF = 0; //標識是否有字符被收到

void main(void)
{
	unsigned char TempCyc;

	Delay400Ms(); //啟動等待,等LCM講入工作狀態
	LCMInit(); //LCM初始化 
	Delay5Ms(); //延時片刻(可不要)

	DisplayListChar(0, 0, cdle_net);
	DisplayListChar(0, 1, email);
	ReadDataLCM();//測試用句無意義
	for(TempCyc=0; TempCyc<10; TempCyc++) {
		Delay400Ms(); //延時
	}
	DisplayListChar(0, 1, Cls);

	IT0 = 0; //設外部中斷1為低電平觸發
	EX0 = 1; //開中斷
	EA = 1;

	while(1) {
		if(BF)
			Decode(KeyV);
		else {
			EA = 1; //開中斷
		}
	}
}

//寫數據
void WriteDataLCM(unsigned char WDLCM) 
{
	ReadStatusLCM(); //檢測忙
	LCM_Data = WDLCM;
	LCM_RS = 1;
	LCM_RW = 0;
	LCM_E = 0; //若晶振速度太高可以在這后加小的延時
	LCM_E = 0; //延時
	LCM_E = 1;
}

//寫指令
void WriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC為0時忽略忙檢測
{
	if(BuysC) ReadStatusLCM(); //根據需要檢測忙
	LCM_Data = WCLCM;
	LCM_RS = 0;
	LCM_RW = 0;
	LCM_E = 0;
	LCM_E = 0;
	LCM_E = 1; 
}

//讀數據
unsigned char ReadDataLCM(void)
{
	LCM_RS = 1; 
	LCM_RW = 1;
	LCM_E = 0;
	LCM_E = 1;

return(LCM_Data);
}

//讀狀態
unsigned char ReadStatusLCM(void)
{
	LCM_Data = 0xFF; 
	LCM_RS = 0;
	LCM_RW = 1;
	LCM_E = 0;
	LCM_E = 1;
	while(LCM_Data & Busy); //檢測忙信號

	return(LCM_Data);
}

void LCMInit(void) //LCM初始化
{
	LCM_Data = 0;
	WriteCommandLCM(0x38,0); //三次顯示模式設置,不檢測忙信號
	Delay5Ms(); 
	WriteCommandLCM(0x38,0);
	Delay5Ms(); 
	WriteCommandLCM(0x38,0);
	Delay5Ms(); 

	WriteCommandLCM(0x38,1); //顯示模式設置,開始要求每次檢測忙信號
	WriteCommandLCM(0x08,1); //關閉顯示
	WriteCommandLCM(0x01,1); //顯示清屏 
	WriteCommandLCM(0x06,1); // 顯示光標移動設置
	WriteCommandLCM(0x0F,1); // 顯示開及光標設置
}

//按指定位置顯示一個字符
void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
	Y &= 0x1;
	X &= 0xF; //限制X不能大于15,Y不能大于1
	if(Y)
		X |= 0x40; //當要顯示第二行時地址碼+0x40;
	X |= 0x80; //算出指令碼
	WriteCommandLCM(X, 1); //發命令字
	WriteDataLCM(DData); //發數據
}

//按指定位置顯示一串字符
void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
	unsigned char ListLength;

	ListLength = 0;
	Y &= 0x1;
	X &= 0xF; //限制X不能大于15,Y不能大于1
	while (DData[ListLength]>0x19) {//若到達字串尾則退出
		if(X <= 0xF) {//X坐標應小于0xF
			DisplayOneChar(X, Y, DData[ListLength]); //顯示單個字符
			ListLength++;
			X++;
		}
	}
}

//5ms延時
void Delay5Ms(void)
{
	unsigned int TempCyc = 5552;
	while(TempCyc--)
		;
}

//400ms延時
void Delay400Ms(void)
{
	unsigned char TempCycA = 5;
	unsigned int TempCycB;
	while(TempCycA--) {
		TempCycB=7269;
		while(TempCycB--)
			;
	}
}

void Keyboard_out(void) interrupt 0
{
	if((IntNum > 0) && (IntNum < 9)) {
		KeyV >>= 1;			//因鍵盤數據是低>>高,結合上一句所以右移一位
		if(Key_Data) {
			KeyV |= 0x80;	//當鍵盤數據線為1時為1到最高位
		}
	}
	IntNum++;
	while(!Key_CLK);		//等待PS/2CLK拉高
	if(IntNum > 10) {
		IntNum = 0;			//當中斷10次后表示一幀數據收完,清變量準備下一次接收
		BF = 1;				//標識有字符輸入完了
		EA = 0;				//關中斷等顯示完后再開中斷 (注:如這里不用BF和關中斷直接調Decode()則所Decode中所調用的所有函數要聲明為再入函數)
	}
}
void Decode(unsigned char ScanCode) //注意:如SHIFT+G為12H 34H F0H 34H F0H 12H,也就是說shift的通碼+G的通碼+shift的斷碼+G的斷碼
{
	unsigned char TempCyc;

	if(!Key_UP) {			//當鍵盤松開時
		switch(ScanCode) {
			case 0xF0 :		//當收到0xF0,Key_UP置1表示斷碼開始
				Key_UP = 1;
				break;
			case 0x12:		// 左 SHIFT
				Shift = 1;
				break;
			case 0x59:		// 右 SHIFT
				Shift = 1;
				break;
			default:
				if(DisNum > 15) {
					DisplayListChar(0,1,Cls);	//清LCD第二行
					DisNum = 0;
				}
				if(Shift == 1) {				//如果按下SHIFT
					for(TempCyc = 0;(Shifted[TempCyc][0]!=ScanCode)&&(TempCyc<59); TempCyc++); //查表顯示
					if(Shifted[TempCyc][0] == ScanCode) {
						DisplayOneChar(DisNum,1,Shifted[TempCyc][1]);
					}
					DisNum++;
				} 
				else {							//沒有按下SHIFT
					for(TempCyc = 0; (UnShifted[TempCyc][0]!=ScanCode)&&(TempCyc<59);TempCyc++); //查表顯示
					if(UnShifted[TempCyc][0] == ScanCode) {
						DisplayOneChar(DisNum,1,UnShifted[TempCyc][1]);
					}
					DisNum++;
				}
				break;
		}
	}
	else {
		Key_UP = 0;
		switch(ScanCode) {	//當鍵松開時不處理判碼,如G 34H F0H 34H 那么第二個34H不會被處理
			case 0x12:		// 左 SHIFT
				Shift = 0;
				break;
			case 0x59:		// 右 SHIFT
				Shift = 0;
				break;
			default:
				break;
		}
	}
	BF = 0;					//標識字符處理完了
} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人黄色在线视频| 日韩av电影免费观看高清完整版 | 91首页免费视频| 国产精品一区在线| 国产成人h网站| 成人在线一区二区三区| 成人免费福利片| 99久久精品免费观看| 色欧美日韩亚洲| 欧美日韩免费一区二区三区视频 | 日韩精品中文字幕一区二区三区| 日韩一区二区在线观看| 精品国产制服丝袜高跟| 精品国产91洋老外米糕| 久久久久久**毛片大全| 一区免费观看视频| 亚洲乱码中文字幕| 日韩精品成人一区二区在线| 久久国产精品露脸对白| 成人激情视频网站| 在线亚洲人成电影网站色www| 欧美精品一二三| 久久久久99精品国产片| 亚洲人成网站精品片在线观看| 亚洲国产另类精品专区| 国内外成人在线视频| fc2成人免费人成在线观看播放| 欧美在线视频不卡| 久久综合九色综合97_久久久| 亚洲国产精品久久艾草纯爱 | 极品尤物av久久免费看| 不卡的av电影| 日韩一级片网站| 成人免费视频在线观看| 天天av天天翘天天综合网| 国产精品77777竹菊影视小说| 色综合天天性综合| 欧美精品一区男女天堂| 亚洲精品久久久蜜桃| 久久99深爱久久99精品| 色婷婷综合久色| 久久色.com| 亚洲1区2区3区4区| 波多野结衣在线一区| 欧美一级高清片在线观看| 国产精品初高中害羞小美女文| 免费一级欧美片在线观看| 99久久er热在这里只有精品15 | 玉足女爽爽91| 国产成人在线视频免费播放| 欧美理论电影在线| 亚洲视频免费在线| 国产99久久久国产精品潘金 | 九九精品一区二区| 欧洲一区二区三区在线| 中文字幕日韩欧美一区二区三区| 久久97超碰色| 欧美一区二区三区视频免费| 有码一区二区三区| 99精品久久久久久| 中文一区一区三区高中清不卡| 久久福利视频一区二区| 91精品免费观看| 亚洲成av人片在线观看无码| 色综合久久中文字幕综合网| 日本一区二区高清| 国产不卡在线一区| 久久久久久一级片| 国产在线精品视频| 欧美精品一区二区三区蜜桃视频| 蜜臀久久99精品久久久画质超高清| 欧美亚一区二区| 激情深爱一区二区| 欧美一级xxx| 蜜臀av性久久久久av蜜臀妖精| 91精品国产免费| 三级影片在线观看欧美日韩一区二区| 欧美亚洲一区二区在线观看| 一区二区三区资源| 在线观看视频一区二区欧美日韩| 亚洲精品国产成人久久av盗摄| 色噜噜狠狠色综合欧洲selulu| 亚洲精选视频免费看| 欧美中文字幕一区| 三级影片在线观看欧美日韩一区二区| 欧美精品乱码久久久久久| 日本 国产 欧美色综合| 日韩女优av电影| 国产一区二区毛片| 国产精品嫩草影院com| 972aa.com艺术欧美| 一区二区不卡在线播放 | 99久久婷婷国产精品综合| 亚洲丝袜美腿综合| 欧美偷拍一区二区| 美国精品在线观看| 中文字幕 久热精品 视频在线 | 色综合天天做天天爱| 视频一区二区中文字幕| 久久久777精品电影网影网| bt7086福利一区国产| 亚洲国产一区二区视频| 欧美一区二区在线看| 成人综合激情网| 亚洲一区二区视频在线观看| 欧美一区二区三区免费视频| 高清国产一区二区三区| 一区二区三区中文字幕精品精品| 日韩一区二区三区视频在线观看| 成熟亚洲日本毛茸茸凸凹| 午夜一区二区三区视频| 亚洲精品久久嫩草网站秘色| 欧美大片免费久久精品三p | 欧美色爱综合网| 狠狠色丁香婷婷综合| 一区二区三区在线播放| 欧美成人欧美edvon| 色综合久久综合网97色综合| 久久精品国产免费看久久精品| 中文字幕人成不卡一区| 欧美一二三四在线| 91精品91久久久中77777| 久久99热99| 亚洲成人av电影在线| 国产精品私人影院| 日韩欧美成人一区| 欧美色视频一区| 从欧美一区二区三区| 久久精品久久99精品久久| 亚洲特黄一级片| 欧美国产成人在线| 日韩欧美色综合| 欧美日韩国产综合一区二区| 成人黄色片在线观看| 国产精品亚洲а∨天堂免在线| 亚洲一区在线电影| ...xxx性欧美| 国产精品丝袜一区| 国产欧美精品国产国产专区| 欧美成人性战久久| 日韩一区二区三区电影| 欧美丰满少妇xxxbbb| 一本久久综合亚洲鲁鲁五月天| 国产成人av一区二区三区在线观看| 五月天国产精品| 午夜视频在线观看一区二区| 亚洲成人久久影院| 亚洲一区二区视频在线观看| 一区二区三区高清| 亚洲欧美日本在线| 亚洲欧美日韩久久精品| 亚洲欧美自拍偷拍| 日本午夜一本久久久综合| 亚洲精品菠萝久久久久久久| 日韩美女啊v在线免费观看| 国产精品美女久久久久久| 国产精品网友自拍| 亚洲品质自拍视频网站| 亚洲一区二区视频在线| 日本va欧美va精品发布| 激情偷乱视频一区二区三区| 韩国成人福利片在线播放| 国产一区视频在线看| 成人福利在线看| 色综合激情久久| 欧美另类高清zo欧美| 日韩欧美电影一区| 欧美精品一区二区三| 国产精品色呦呦| 亚洲综合免费观看高清完整版在线| 一区二区免费在线| 蜜臀91精品一区二区三区| 国产一区二区三区免费观看 | 一区二区高清视频在线观看| 日韩国产欧美在线播放| 久草精品在线观看| 成人av电影免费在线播放| 欧美揉bbbbb揉bbbbb| 日韩欧美一区中文| 亚洲国产精品二十页| 亚洲手机成人高清视频| 亚洲国产精品精华液网站| 蜜桃在线一区二区三区| 9i在线看片成人免费| 欧美日韩大陆在线| 欧美精品一区二区三| 国产精品国产三级国产aⅴ无密码| 亚洲国产欧美日韩另类综合| 国产剧情一区在线| 91丝袜国产在线播放| 中文字幕一区三区| 丝袜美腿成人在线| 成人h动漫精品一区二| 欧美一级日韩不卡播放免费| 国产三级三级三级精品8ⅰ区| 亚洲精品久久久久久国产精华液| 国产做a爰片久久毛片| 欧洲精品视频在线观看| 国产日韩影视精品| 久久国产精品72免费观看|