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

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

?? lk1000_2.c

?? 在cypress晶片上實驗讀取ps2 keyboard按鍵後顯示在lcd上,同時利用I2C寫入EEPROM
?? C
字號:
#include <stdio.h>
#include <pic.h>
#include "delay.h"
#include "usart\usart.h"
#include "i2c\i2c.h"
#include "lcd\lcd.h"
#include "ps2\ps2.h"
#include "keyboard\keyboard.h"

#define 				ROM 		0xA0        /* I2C EEPROM */
#define 				KB_TIMERS	5
#define					DEBUG		0

void 					WriteByte(unsigned char , unsigned char);
int 					ReadByte(unsigned char);

static unsigned char	kb_counter, kb_char, kb_error, kb_check;
static unsigned char	kb_shift, kb_function_key, kb_make, kb_break;
unsigned char			kb_bufs[KB_BFSIZE];
unsigned int			kb_index_head, kb_index_rear ,kb_flag;
const unsigned char		kb_scan2ascii[200]={ 
											0,0,0,0,0,0,0,0,0,0,				 //0
											0,0,0,0,'`',0,0,0,3,0,				//1
											0,'Q','1',0,0,' ','Z','S','A','W',			//2
											'2',0,0,'C','X','D','E','4','3',0,			//3
											0,0,'V','F','T','R','5',0,0,'N',				//4
											'B','H','G','Y','6',0,0,0,'M','J',		//5
											'U','7','8',0,'@',',','K','I','O','0',			//6
											'9',0,0,'.','/','L',';','P','-',0,				//7
											0,0,0,0,'[','=',0,0,0,3,				 //8
											0,']',0,'\\',0,0,0,0,0,0,				 //9
											0,0,0,0,0,0,0,0,0,0,				//10
											0,0,0,0,'~',0,0,0,0,0,				//11
											0,'q','!',0,0,' ','z','s','a','w',			//12
											'@',0,0,'c','x','d','e','$','#',0,			//13
											0,0,'v','f','t','r','%',0,0,'n',				//14
											'b','h','g','y','^',0,0,0,'m','j',		//15
											'u','&','*',0,0,'<','k','i','o',')',			//16
											'(',0,0,'>','?','l',':','p','_',0,				//17
											0,0,0,0,'{','+',0,0,0,3,				 //18
											0,'}',0,'|',0,0,0,0,0,0,				 //19
										//	0,0,0,0,0,0,0,0,0,0,				//20
										//	0,0,0,0,0,0,0,0,0,0,				//21
										//	0,0,0,0,2,0,0,0,0,0,				//22
										//	0,0,0,0,0,0,0,0,0,0,				//23
										//	1,0,0,0,0,0,0,0,0,0,				//24
										//	0,0,0,0,0,							//25
										};

static unsigned int		kb_timer;
#if DEBUG
static unsigned char	kb_parity;
#endif

void
main(void)
{
	unsigned char count,val,datain, key;

	// setup stuff
	TRISA = 0x0;
	TRISB = 0b11000011;
	TRISC = 0b11000000;

	//setup LCD stuff 
	lcd_init();	// setup UART stuff
	INTCON=0;						// purpose of disabling the interrupts.
	init_comms();					// set up the USART - settings defined in usart.h

	// setup ps/2 interrupt stuff 
	kb_index_head = 0;
	kb_index_rear = 0;
	kb_counter = 0;
	kb_char = 0;
	kb_error = 0;
	kb_flag = 0;
	kb_break = FALSE;
	kb_function_key = FALSE;
	kb_shift = FALSE;
	kb_timer = KB_TIMERS;
	KBDAT_DIR = KB_INPUT;
	KBCLK_DIR = KB_INPUT;
	T0CS = 0;						// Timer increments on instruction clock
	T0IE = 1;						// Enable interrupt on TMR0 overflow
	INTEDG = 0;						// falling edge trigger the interrupt
	INTE = 1;						// enable the external interrupt
	GIE = 1;						// Global interrupt enable
	
	lcd_clear();
	lcd_goto(0);
	while(1)
	{
		CLRWDT();
		if( kb_flag )
		{	
			#if DEBUG
				printf("\r\n Scan Code=%x", kb_char);
				printf("\r\nParity bit %d/ checksum bit %d", kb_parity, kb_check);
			#else
				if((key=kb_Getch())!=0)
					switch(key)
					{
						case KB_E0 : {
											if(kb_break)	kb_break = kb_function_key = FALSE;
											else			kb_function_key = TRUE;
											break;
									}
						case KB_LSHFT :
						case KB_RSHFT :	
									 {
											if(kb_break)	kb_break = kb_shift = FALSE;
											else			kb_shift = TRUE;
											break;
									}
						case KB_F0 : {
											kb_break = TRUE;
											break;
									}
						default :	 {
											if(kb_break)	kb_break = FALSE;
											else	{
														if(kb_shift)
															#if DEBUG
																printf("\r\nkbbufs=%c",kb_scan2ascii[key+100]);
															#else
																lcd_putch(kb_scan2ascii[key+100]);
															#endif
														else 
															#if DEBUG
																printf("\r\nkbbufs=%c",kb_scan2ascii[key]);
															#else
																lcd_putch(kb_scan2ascii[key]);
															#endif
											}
											
											break;
									}
					 } //end of switch(key)						
				else		printf("\r\nkey is undefine.");
			#endif
			kb_flag--;
		}//end if(kb_flag)
		else
				if( kb_error )
				{
					switch(kb_error)
					{
						case 1 :	printf("\r\nStart bit error"); 	break;
						case 2 :	printf("\r\nParty bit error"); 	break;
						case 3 :	printf("\r\nStop bit error"); 	break;
						default :	printf("\r\nNo error in list");	break;
					}// end switch
					kb_error = 0;
				}
	}// end while

}// end of main
/*	
	SCL_DIR = I2C_OUTPUT;
    SDA_DIR = I2C_OUTPUT;
    SDA = 1;
    SCL = 1;
	printf("\r\nEEPROM Check start");
	count	= 2;
	datain	= 0xff;
	while(1){
			CLRWDT();	// Idly kick the dog
		//for(count=0; count < 255; ++count) {
	        WriteByte(count,datain);           // write to I2C EEPROM
			//DelayMs(10);
	        val = ReadByte(count);            // read back value
	        if (val != datain)                 // verify
	            printf("\r\nDATA error addr:%d = %d / %d", count, val, datain);
			else
				printf("\r\nDATA correct! addr:%d = %d / %d ", count, val, datain);
		//	DelayMs(10);
    	//}
   		DelayMs(100);
	}

}
*/

static void interrupt
isr(void)			// Here be interrupt function - the name is
				// unimportant.
{
	if(INTF) {				// did we see a button press?
		//RELAY = 0;			// turn the relay on
		kb_timer = KB_TIMERS;		// start the timer - 4000 ticks = 1 second
		if(!kb_error && !kb_flag)
		{
			switch(kb_counter)
			{
				case 0 :
						{
						kb_char	= 0;
						kb_check = 0;
						#if DEBUG
							kb_parity = 0;
						#endif
						if( !KB_DAT )	kb_counter++;
						else			kb_error = 1;
						break;
						}// end of case 0
				case 1 : case 2 : case 3 :
				case 4 : case 5 : case 6 :
				case 7 : case 8 :
						{
						kb_char = kb_char >> 1;
						if(KB_DAT) kb_char |= 0x80;
						kb_check ^= KB_DAT;
						kb_counter++;
						break;
						}
				case 9 :
						{
						#if DEBUG
							kb_parity = KB_DAT;
							kb_counter++;
						#else
							if(KB_DAT != kb_check)		kb_counter++;
							else						kb_error = 2;
						#endif
						break;
						}
				case 10 :
						{
						kb_counter = 0;
						if( !KB_DAT )	kb_error = 3;
						else	{	
									if(kb_char > 5)
									{
										//kb_Putch(kb_scan2ascii[kb_char]);
										kb_Putch(kb_char);
										kb_flag ++;
									}
								}
						break;
						}
				default :
						{
						kb_error = 1;
						break;
						}
			}// end of switch
		}// end of if(!kb_error && !kb_flag)
		INTF = 0;			// clear the interrupt
	}// end of if(INTF)

		if(T0IF) {				// timer interrupt
			TMR0 -= 250; 			// reload the timer - 250uS per interrupt
			T0IF = 0;			// clear the interrupt flag
			if(kb_timer != 0)		// is the relay timer running?
				kb_timer--;		// decrement it
			if(kb_timer == 0)		// if it has time out
			{
				kb_counter = 0;		// turn the relay off
				kb_error = 0;
			}// end of if(kb_timer == 0)
			PORTC ^= 0x10;			// toggle a bit to say we're alive
		}// end of if(T0IF)
}// end of isr()

void WriteByte(unsigned char addr, unsigned char byte)
{
	if (i2c_WriteTo(ROM))
			printf("\r\nWrite I2C ROMaddr ERROR");
	if (i2c_PutByte(addr)==I2C_ERROR)
            printf("\r\nWrite I2C sub-addr ERROR");
	if (i2c_PutByte(byte)==I2C_ERROR)
            printf("\r\nWrite I2C data ERROR");
	//i2c_Stop();
	//i2c_SendAcknowledge(I2C_LAST);
}

int ReadByte(unsigned char addr)
{
	if (i2c_WriteTo(ROM))
			printf("\r\nRead I2C ROMaddr ERROR");
	if (i2c_PutByte(addr)==I2C_ERROR)
            printf("\r\nRead I2C sub-addr ERROR");
    if (i2c_ReadFrom(ROM))
			printf("\r\nRead I2C addr+1 ERROR");
	return i2c_GetByte(I2C_LAST);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色呦呦国产精品| 久久中文娱乐网| 精品国产乱码91久久久久久网站| 国产午夜亚洲精品理论片色戒 | 亚洲第一主播视频| 国内精品嫩模私拍在线| 欧美中文字幕一区二区三区 | 色欲综合视频天天天| 精品久久久影院| 丝袜亚洲另类丝袜在线| 91网上在线视频| 国产精品天天看| 色8久久精品久久久久久蜜| 欧美精品一区二区三区高清aⅴ | 91视频观看视频| 精品国产自在久精品国产| 香港成人在线视频| 91久久精品一区二区| 国产精品麻豆久久久| 国模娜娜一区二区三区| 91精品婷婷国产综合久久性色| 亚洲视频一二区| 成人国产精品免费观看视频| 国产婷婷色一区二区三区四区| 免费日本视频一区| 欧美伦理电影网| 亚洲.国产.中文慕字在线| 一本大道久久a久久综合婷婷| 中文字幕第一区综合| 国产精品一区二区视频| 久久嫩草精品久久久久| 韩国精品主播一区二区在线观看 | 国产日韩欧美不卡在线| 韩国av一区二区三区四区| 精品少妇一区二区三区| 九九九久久久精品| 久久欧美中文字幕| 成人美女视频在线看| 亚洲国产精品ⅴa在线观看| 国产二区国产一区在线观看| 欧美国产丝袜视频| 不卡的av在线播放| 亚洲免费大片在线观看| 欧美日韩亚洲丝袜制服| 99麻豆久久久国产精品免费| 中文字幕中文字幕一区| 日本丶国产丶欧美色综合| 亚洲已满18点击进入久久| 欧美精品粉嫩高潮一区二区| 日韩福利视频导航| 欧美成人a∨高清免费观看| 国产一区二区三区在线观看精品 | 777色狠狠一区二区三区| 日韩成人精品在线| 久久精品亚洲一区二区三区浴池| 成人激情免费电影网址| 亚洲综合一二区| 日韩一级成人av| 国产成人av电影在线观看| 亚洲人成伊人成综合网小说| 欧美欧美欧美欧美首页| 国产乱色国产精品免费视频| 亚洲欧美一区二区不卡| 欧美日韩成人一区| 成人午夜在线视频| 亚洲成人av一区二区三区| 久久久高清一区二区三区| 色狠狠综合天天综合综合| 日本v片在线高清不卡在线观看| 久久久99久久| 欧美视频一区在线观看| 国产一区 二区| 亚洲最新视频在线观看| 久久久不卡影院| 在线观看av一区| 国产精品一品视频| 亚洲国产cao| 中文字幕日韩欧美一区二区三区| 欧美电影一区二区| 色综合视频一区二区三区高清| 秋霞影院一区二区| 玉米视频成人免费看| 久久日韩粉嫩一区二区三区| 欧亚一区二区三区| 成人av手机在线观看| 美国精品在线观看| 五月天一区二区| 亚洲精品视频自拍| 欧美国产精品一区二区三区| 欧美一卡二卡在线观看| 色婷婷综合五月| 成人伦理片在线| 欧美精品99久久久**| 北条麻妃国产九九精品视频| 激情五月婷婷综合| 天天综合日日夜夜精品| 一区二区三区四区在线| 国产精品久久久久久久久久免费看| 日韩精品一区二| 91麻豆精品国产自产在线观看一区 | 亚洲图片激情小说| 日本一区二区三区在线不卡| 日韩欧美亚洲国产精品字幕久久久| 欧美性猛片aaaaaaa做受| 色综合天天做天天爱| 波多野结衣中文字幕一区| 国产精品一品二品| 国内精品自线一区二区三区视频| 日韩福利电影在线| 日韩成人免费电影| 免费在线观看不卡| 久久99精品国产麻豆婷婷| 蜜桃91丨九色丨蝌蚪91桃色| 天堂一区二区在线| 免费观看久久久4p| 蜜臀久久久久久久| 久久精品99国产精品| 激情都市一区二区| 精品无码三级在线观看视频| 国精品**一区二区三区在线蜜桃 | 亚洲国产精品久久一线不卡| 中文字幕一区二区三区蜜月| 日韩一区日韩二区| 亚洲精品伦理在线| 午夜视频在线观看一区二区 | 国产在线精品免费av| 国产一区二区不卡| 岛国av在线一区| 91免费国产视频网站| 在线视频欧美区| 欧美一级电影网站| 国产亚洲女人久久久久毛片| 国产精品网站导航| 亚洲一区二区三区自拍| 日韩影院精彩在线| 国产一区二区三区免费在线观看| 粉嫩一区二区三区性色av| 91免费视频观看| 欧美一区二区三区公司| 精品福利在线导航| 中文字幕在线免费不卡| 亚洲va在线va天堂| 国产尤物一区二区在线| 91麻豆自制传媒国产之光| 欧美精品色一区二区三区| 久久女同精品一区二区| 亚洲一区二区欧美日韩| 老司机午夜精品| 91在线视频18| 欧美大度的电影原声| 亚洲视频在线观看一区| 蜜臀av一区二区在线观看 | 欧美国产97人人爽人人喊| 亚洲欧美成aⅴ人在线观看| 日韩av中文字幕一区二区| 成人午夜免费视频| 91麻豆精品国产无毒不卡在线观看| 26uuu另类欧美| 一区二区欧美精品| 国产成人久久精品77777最新版本| 91免费看视频| 国产日韩亚洲欧美综合| 午夜伦理一区二区| 9l国产精品久久久久麻豆| 日韩一级二级三级精品视频| 亚洲男人的天堂在线aⅴ视频| 麻豆成人av在线| 91极品美女在线| 国产欧美日韩视频在线观看| 日韩成人伦理电影在线观看| av在线综合网| 久久久久国产免费免费| 日韩综合小视频| 一本色道久久综合精品竹菊| 精品电影一区二区| 日韩黄色一级片| 在线亚洲人成电影网站色www| 国产亚洲福利社区一区| 免费观看在线综合| 欧洲精品视频在线观看| 国产精品乱码妇女bbbb| 国产精品主播直播| 日韩精品一区国产麻豆| 肉色丝袜一区二区| 欧美亚洲动漫制服丝袜| 日韩一区在线看| 99久久免费国产| 中文字幕在线免费不卡| 成人免费电影视频| 国产精品免费久久| 成人在线视频一区二区| 国产亚洲一区二区在线观看| 国产麻豆9l精品三级站| 日韩女优av电影在线观看| 日本欧美一区二区三区乱码| 欧美裸体一区二区三区| 日日欢夜夜爽一区| 日韩欧美自拍偷拍| 久久99精品久久久久| 一区二区三区四区五区视频在线观看|