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

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

?? eeprom.c

?? 十七種模擬器源代碼 非常有用的作課程設計不可缺少的
?? C
字號:
#include "driver.h"#include "eeprom.h"#include "savegame.h"#include <stdarg.h>#include <stdio.h>#include <string.h>#define VERBOSE 0#define SERIAL_BUFFER_LENGTH 40#define MEMORY_SIZE 1024static struct EEPROM_interface *intf;static int serial_count;static char serial_buffer[SERIAL_BUFFER_LENGTH];static unsigned char eeprom_data[MEMORY_SIZE];static int eeprom_data_bits;static int eeprom_read_address;static int eeprom_clock_count;static int latch,reset_line,clock_line,sending;static int locked;static int reset_delay;void logerror(const char *text, ...){#ifdef RAINE_DEBUG  va_list arg;	  va_start(arg, text);  vfprintf(stderr, text, arg);  va_end(arg);#endif  }void EEPROM_init(struct EEPROM_interface *interface){  int size = (1 << interface->address_bits) * interface->data_bits / 8;  intf = interface;  	  if (size > MEMORY_SIZE)    {      //		usrintf_showmessage("EEPROM larger than eeprom.c allows");      return;    }  memset(eeprom_data,0xff,size);  serial_count = 0;  latch = 0;  reset_line = ASSERT_LINE;  clock_line = ASSERT_LINE;  sending = 0;  if (intf->cmd_unlock) locked = 1;  else locked = 0;  // The following line should include this as a normal eeprom... Hope.  add_eeprom(eeprom_data,size,1);}static void EEPROM_write(int bit){#if VERBOSElogerror("EEPROM write bit %d\n",bit);#endif if (serial_count >= SERIAL_BUFFER_LENGTH-1)   {     logerror("error: EEPROM serial buffer overflow\n");     return;   }  serial_buffer[serial_count++] = (bit ? '1' : '0'); serial_buffer[serial_count] = 0;	/* nul terminate so we can treat it as a string */  if (intf->cmd_read && (unsigned int)serial_count == (strlen(intf->cmd_read) + intf->address_bits) &&     !strncmp(serial_buffer,intf->cmd_read,strlen(intf->cmd_read)))   {     int i,address;          address = 0;     for (i = 0;i < intf->address_bits;i++)       {	 address <<= 1;	 if (serial_buffer[i + strlen(intf->cmd_read)] == '1') address |= 1;       }     if (intf->data_bits == 16)       eeprom_data_bits = (eeprom_data[2*address+0] << 8) + eeprom_data[2*address+1];     else       eeprom_data_bits = eeprom_data[address];     eeprom_read_address = address;     eeprom_clock_count = 0;     sending = 1;     serial_count = 0;     logerror("EEPROM read %04x from address %02x\n",eeprom_data_bits,address);   } else if (intf->cmd_erase && (unsigned int)serial_count == (strlen(intf->cmd_erase) + intf->address_bits) &&	  !strncmp(serial_buffer,intf->cmd_erase,strlen(intf->cmd_erase)))   {     int i,address;          address = 0;     for (i = 0;i < intf->address_bits;i++)       {	 address <<= 1;	 if (serial_buffer[i + strlen(intf->cmd_erase)] == '1') address |= 1;       }     logerror("EEPROM erase address %02x\n",address);     if (locked == 0)       {	 if (intf->data_bits == 16)	   {	     eeprom_data[2*address+0] = 0x00;	     eeprom_data[2*address+1] = 0x00;	   }	 else	   eeprom_data[address] = 0x00;       }     elselogerror("Error: EEPROM is locked\n");     serial_count = 0;   } else if (intf->cmd_write && (unsigned int)serial_count == (strlen(intf->cmd_write) + intf->address_bits + intf->data_bits) &&	  !strncmp(serial_buffer,intf->cmd_write,strlen(intf->cmd_write)))   {     int i,address,data;          address = 0;     for (i = 0;i < intf->address_bits;i++)       {	 address <<= 1;	 if (serial_buffer[i + strlen(intf->cmd_write)] == '1') address |= 1;       }     data = 0;     for (i = 0;i < intf->data_bits;i++)       {	 data <<= 1;	 if (serial_buffer[i + strlen(intf->cmd_write) + intf->address_bits] == '1') data |= 1;       }     logerror("EEPROM write %04x to address %02x\n",data,address);     if (locked == 0)       {	 if (intf->data_bits == 16)	   {	     eeprom_data[2*address+0] = data >> 8;	     eeprom_data[2*address+1] = data & 0xff;	   }	 else	   eeprom_data[address] = data;       }     else       logerror("Error: EEPROM is locked\n");     serial_count = 0;   } else if (intf->cmd_lock && (unsigned int)serial_count == strlen(intf->cmd_lock) &&	  !strncmp(serial_buffer,intf->cmd_lock,strlen(intf->cmd_lock)))   {     logerror("EEPROM lock\n");     locked = 1;     serial_count = 0;   } else if (intf->cmd_unlock && (unsigned int)serial_count == strlen(intf->cmd_unlock) &&	  !strncmp(serial_buffer,intf->cmd_unlock,strlen(intf->cmd_unlock)))   {     logerror("EEPROM unlock\n");     locked = 0;     serial_count = 0;   }}static void EEPROM_reset(void){if (serial_count)	logerror("EEPROM reset, buffer = %s\n",serial_buffer);	serial_count = 0;	sending = 0;	reset_delay = 5;	/* delay a little before returning setting data to 1 (needed by wbeachvl) */}void EEPROM_write_bit(int bit){#if VERBOSElogerror("write bit %d\n",bit);#endif	latch = bit;}int EEPROM_read_bit(void){	int res;	if (sending)		res = (eeprom_data_bits >> intf->data_bits) & 1;	else	{		if (reset_delay > 0)		{			/* this is needed by wbeachvl */			reset_delay--;			res = 0;		}		else			res = 1;	}#if VERBOSElogerror("read bit %d\n",res);#endif	return res;}void EEPROM_set_cs_line(int state){#if VERBOSElogerror("set reset line %d\n",state);#endif	reset_line = state;	if (reset_line != CLEAR_LINE)		EEPROM_reset();}void EEPROM_set_clock_line(int state){#if VERBOSElogerror("set clock line %d\n",state);#endif	if (state == PULSE_LINE || (clock_line == CLEAR_LINE && state != CLEAR_LINE))	{		if (reset_line == CLEAR_LINE)		{			if (sending)			{				if (eeprom_clock_count == intf->data_bits && intf->enable_multi_read)				{					eeprom_read_address = (eeprom_read_address + 1) & ((1 << intf->address_bits) - 1);					if (intf->data_bits == 16)						eeprom_data_bits = (eeprom_data[2*eeprom_read_address+0] << 8) + eeprom_data[2*eeprom_read_address+1];					else						eeprom_data_bits = eeprom_data[eeprom_read_address];					eeprom_clock_count = 0;logerror("EEPROM read %04x from address %02x\n",eeprom_data_bits,eeprom_read_address);				}				eeprom_data_bits = (eeprom_data_bits << 1) | 1;				eeprom_clock_count++;			}			else				EEPROM_write(latch);		}	}	clock_line = state;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美国十次综合导航| 3d动漫精品啪啪| 另类小说视频一区二区| 亚洲另类在线制服丝袜| 中文字幕五月欧美| 国产精品九色蝌蚪自拍| 亚洲女同一区二区| 亚洲一区二区三区美女| 亚洲在线观看免费视频| 午夜久久电影网| 蜜臀久久久久久久| 精品一区二区三区av| 国产馆精品极品| 一本大道久久a久久综合| 欧美少妇性性性| 日韩欧美一二区| 亚洲国产精品高清| 亚洲成在人线免费| 久久99精品久久久久久动态图| 麻豆国产欧美日韩综合精品二区| 精品一区二区精品| 成人午夜激情在线| 欧美性大战久久| 精品伦理精品一区| 亚洲欧美国产77777| 丝瓜av网站精品一区二区| 免费精品视频最新在线| 成人av第一页| 欧美一区二区三区精品| 国产精品短视频| 免费在线观看精品| 91老司机福利 在线| 7777精品伊人久久久大香线蕉完整版| 精品国产乱码久久久久久老虎| 国产欧美日韩激情| 偷偷要91色婷婷| 成人精品gif动图一区| 欧美天堂一区二区三区| 国产亚洲福利社区一区| 首页亚洲欧美制服丝腿| 成人av电影免费观看| 日韩写真欧美这视频| 《视频一区视频二区| 久久精品国产秦先生| 欧美调教femdomvk| 国产精品的网站| 国产精品一区三区| 欧美嫩在线观看| 亚洲同性同志一二三专区| 精品伊人久久久久7777人| 在线视频欧美区| 国产免费成人在线视频| 国产一区二区在线观看视频| 欧美日韩另类一区| 亚洲精品乱码久久久久久黑人| 国产在线精品免费| 欧美成人激情免费网| 日韩精品乱码免费| 欧美日韩色综合| 一区二区三区欧美日| 成人av资源网站| 国产精品情趣视频| 国产精品香蕉一区二区三区| 欧美大片在线观看一区二区| 亚洲第一狼人社区| 欧美色图天堂网| 亚洲一区免费视频| 91国产精品成人| 亚洲一区免费观看| 欧美日韩在线精品一区二区三区激情 | 美女任你摸久久| 欧美日韩久久久一区| 性久久久久久久| 在线一区二区视频| 亚洲品质自拍视频网站| 91福利精品视频| 午夜久久久久久久久久一区二区| 欧美影视一区在线| 视频一区二区三区入口| 欧美一级黄色片| 狠狠色狠狠色综合| 国产肉丝袜一区二区| 成人深夜在线观看| 亚洲同性同志一二三专区| 欧美自拍偷拍一区| 日韩av一二三| 久久久久久日产精品| 丰满放荡岳乱妇91ww| 国产精品蜜臀在线观看| 91视视频在线观看入口直接观看www| 国产精品蜜臀av| 色88888久久久久久影院野外 | 天天色 色综合| 欧美一区二区久久| 国产精品夜夜爽| 一区二区三区在线观看动漫| 欧美日韩一本到| 国产福利一区在线| 亚洲六月丁香色婷婷综合久久| 欧美另类videos死尸| 国产一区二区三区四区五区入口 | 麻豆freexxxx性91精品| 久久久高清一区二区三区| 成人av在线看| 日本 国产 欧美色综合| 国产日韩一级二级三级| 日本韩国视频一区二区| 久久er99热精品一区二区| 国产精品欧美一级免费| 欧美日韩国产综合草草| 国产福利一区在线| 午夜婷婷国产麻豆精品| www成人在线观看| 欧美在线影院一区二区| 国产剧情一区在线| 亚洲国产精品视频| 国产精品剧情在线亚洲| 欧美日韩一二三| 99国产精品一区| 国产精品91一区二区| 午夜av一区二区三区| 国产精品久久久久久一区二区三区| 欧美丰满一区二区免费视频| av亚洲产国偷v产偷v自拍| 久热成人在线视频| 一卡二卡欧美日韩| 中文字幕av不卡| 久久亚洲影视婷婷| 91精品国产欧美一区二区成人 | 国产一区二区三区四区五区入口 | 亚洲欧洲综合另类| 久久久久久97三级| 日韩一区二区影院| 欧美亚洲综合网| 99re热这里只有精品免费视频| 久热成人在线视频| 免费精品视频最新在线| 午夜精品视频一区| 亚洲影院免费观看| 亚洲私人黄色宅男| 中文字幕色av一区二区三区| 久久众筹精品私拍模特| 日韩三级.com| 日韩一区二区免费电影| 欧美日韩亚洲综合在线| 欧美亚洲图片小说| 色哟哟国产精品免费观看| 91免费国产在线| 91丨九色丨黑人外教| 91在线视频官网| 色偷偷久久人人79超碰人人澡| caoporn国产精品| 99久久99久久综合| 91丝袜美女网| 欧美自拍丝袜亚洲| 欧美精品三级在线观看| 91精品欧美久久久久久动漫| 欧美一区二区三区婷婷月色| 日韩视频在线一区二区| 亚洲精品一区二区精华| 国产人伦精品一区二区| 国产日韩欧美不卡在线| 国产精品久久久久久久久图文区| 亚洲同性gay激情无套| 夜夜夜精品看看| 亚洲国产aⅴ成人精品无吗| 日韩国产精品大片| 看电视剧不卡顿的网站| 丰满岳乱妇一区二区三区| 成人av在线看| 在线播放日韩导航| 26uuu另类欧美| 亚洲欧洲国产日本综合| 亚洲国产视频在线| 奇米色一区二区| 国产成人免费在线观看| 日本韩国欧美一区二区三区| 欧美剧情电影在线观看完整版免费励志电影| 欧美精品国产精品| 亚洲国产精华液网站w| 亚洲精品成人少妇| 精品影视av免费| 色999日韩国产欧美一区二区| 欧美老肥妇做.爰bbww| 国产亚洲精品bt天堂精选| 亚洲国产一区二区视频| 国产精品一卡二卡在线观看| 欧洲亚洲国产日韩| 26uuuu精品一区二区| 一区二区三区精品在线观看| 日本 国产 欧美色综合| 色综合一个色综合亚洲| 亚洲精品一区二区三区蜜桃下载 | 尤物在线观看一区| 日本成人中文字幕在线视频 | 欧美日韩精品一区二区三区蜜桃 | 亚洲欧美日韩精品久久久久| 免费观看30秒视频久久| 色激情天天射综合网| 久久精品日产第一区二区三区高清版 |