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

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

?? 93c46.c

?? 93c46讀寫程序
?? C
字號:

#include "os_cpu.h"
#include "cdef.h"
#include "dos.h"

INT8U Read93c46(INT8U addr);
void Ewen93c46(void);
void Write93c46(INT8U addr, INT8U data);
void Ewds93c46(void);
void Erase93c46(INT8U addr);
void Wral93c46(INT8U data);
void Teral93c46(void);
void pullup_cs(void);
void pulldown_cs(void);
void pulse_sk(void);
void pullup_sk(void);
void pulldown_sk(void);
void pullup_sk(void);

void pullup_di(void);
void pullup_di(void);
void pulldown_di(void);
void startbit(void);
void opcode(INT8U op_code);
void outaddrdata(INT8U mask, INT8U addr);
INT8U readdata(void);
INT8U readfrom93c46(INT8U addr);
void writeto93c46(INT8U addr, INT8U data);
void writestr_93c46(INT8U addr, INT8U *s, INT8U n);
void waitready(void);
//-----------------------------------------------------------------------------------------------------------------
//		93c46讀寫程序
/*
 * Reads data stored in memory, at specified address
 * 1. pullup cs to high
 * 2. pullup SK to high
 * 3. pullup SK to Low
 * 4. cpu output 110b and An~A0 , output data changes synchronized 
 *    with the falling edges of serial clock SK
 * 5. 93c46 output data on DO, output data changes syschronized 
 *    with rising edges of serial clock SK
 */
INT8U Read93c46(INT8U addr)
{
	pullup_cs();		// pullup cs
	pullup_sk();		// pullup SK
	startbit();		// output a start bit "1"
	opcode(2);
	outaddrdata(0x40, addr);
	return readdata();
}


/*
 * Write Enable must precede all programing modes
 */
void Ewen93c46(void)
{
	pullup_cs();
	pullup_sk();
	startbit();			// 開始位 1B
	opcode(0);			// 操作碼 00B
	outaddrdata(0x40, 0x60);	// 地址   11XXXXXB
	pulldown_sk();
	pulldown_cs();
}

/*
 * Writes memory location An~A0
 */
void Write93c46(INT8U addr, INT8U data)
{
	pullup_cs();
	pullup_sk();
	startbit();
	opcode(1);
	outaddrdata(0x40, addr);
	outaddrdata(0x80, data);
	pulldown_cs();
	pullup_cs();
	waitready(); 	//while((inport(PDATA0)&DO_93C46_H)!=DO_93C46_H);
	pulldown_cs();
}

/*
 * Disables all programming instructions
 */
void Ewds93c46(void)
{
	pullup_cs();
	pullup_sk();
	startbit();
	opcode(0);
	outaddrdata(0x40, 0x00);
	pulldown_sk();
	pulldown_cs();
}
/*
 * Erase memory location An~A0
 */
void Erase93c46(INT8U addr)
{
	Ewen93c46();
	pullup_cs();
	pullup_sk();
	startbit();
	opcode(3);
	outaddrdata(0x40, addr<<1);
	pulldown_cs();
	pullup_cs();
	waitready();	//while((inport(PDATA0)&DO_93C46_H)!=DO_93C46_H);
	pulldown_cs();
	Ewds93c46();
}

/*
 * Write all memory locations
 */
void Wral93c46(INT8U data)
{
	Ewen93c46();
	pullup_cs();
	pullup_sk();
	startbit();
	opcode(0x00);
	outaddrdata(0x40, 0x20);
	outaddrdata(0x80, data);
	pulldown_cs();
	pullup_cs();
	waitready();	//while((inport(PDATA0)&DO_93C46_H)!=DO_93C46_H);
	pulldown_cs();
	Ewds93c46();
}

/*
 * Erase all memory locations
 */
void Teral93c46(void)
{
	Ewen93c46();
	pullup_cs();
	pullup_sk();
	startbit();
	opcode(00);
	outaddrdata(0x40, 0x40);
	pulldown_cs();
	pullup_cs();
	waitready();	//while((inport(PDATA0)&DO_93C46_H)!=DO_93C46_H);
	pulldown_cs();	
	Ewds93c46();
}

// pullup 93c46 cs
void pullup_cs(void)
{
	outport(OUTPORT, inport(OUTPORT)|CS_93C46_H);
}

// pulldown 93c46 cs
void pulldown_cs(void)
{
	outport(OUTPORT, inport(OUTPORT)&CS_93C46_L);
}


// output a pulse at SK pin
void pulse_sk(void)
{
	outport(OUTPORT, inport(OUTPORT)&SK_93C46_L);
	outport(OUTPORT, inport(OUTPORT)|SK_93C46_H);
	outport(OUTPORT, inport(OUTPORT)&SK_93C46_L);
}
// 將SK腳拉高
void pullup_sk(void)
{
	outport(OUTPORT, inport(OUTPORT)|SK_93C46_H);
}
// 將SK腳拉低
void pulldown_sk(void)
{
	outport(OUTPORT, inport(OUTPORT)&SK_93C46_L);
}
// 將DI腳拉高
void pullup_di(void)
{
	outport(OUTPORT, inport(OUTPORT)|DI_93C46_H);
}

// 將DI腳拉低
void pulldown_di(void)
{
	outport(OUTPORT, inport(OUTPORT)&DI_93C46_L);
}

// output start bit "1"
void startbit(void)
{
	pullup_di();	// output "1"
	pulldown_sk();
	pullup_sk();
}
// 輸出操作碼
void opcode(INT8U op_code)
{
	pulldown_sk();
	if(op_code&2)
		pullup_di();
	else
		pulldown_di();
	pullup_sk();
	pulldown_sk();
	if(op_code&1)
		pullup_di();
	else
		pulldown_di();
	pullup_sk();
}

// 輸出地址或數據到93C46的DI腳
void outaddrdata(INT8U mask, INT8U addr)
{
	while(mask)
	{
		pulldown_sk();
		if(addr&mask)
			pullup_di();
		else
			pulldown_di();
		pullup_sk();		
		mask >>= 1;
	}
}

// 從93C46的DO腳讀入數據,裝配成一個字節
INT8U readdata(void)
{
	INT8U retval;
	int i;
	
	retval = 0;
	for(i=0;i<=8;i++)
	{
		retval <<= 1;
		pullup_sk();		// drive data to DO
		pulldown_sk();
		if(inport(INPORT)&DO_93C46_H)
			retval |= 1;
	}
	pulldown_cs();
	return retval;
}

// 從93C46中讀一個字節(8位方式)
INT8U readfrom93c46(INT8U addr)
{
	addr<<=1;
	Read93c46(addr);		// 丟掉高8位
	return Read93c46(addr);
}
// 向93C46中寫一個字節(8位方式)
void writeto93c46(INT8U addr, INT8U data)
{
	addr <<= 1;
	Ewen93c46();
	Write93c46(addr, data);
	Ewds93c46();
}
// 向93C46中寫一串數據
void writestr_93c46(INT8U addr, INT8U *s, INT8U n)
{
	int i;
	Ewen93c46();
	for(i=0;i<n;i++)
	{
		Write93c46((addr<<1), *s++);
		addr++;
	}
	Ewds93c46();
}

// 查詢93C46是否READY
void waitready(void)
{
	int i;
	for(i=0;i<32767;i++)
	{
		if(inport(INPORT)&DO_93C46_H)
			break;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91黄色免费网站| 亚洲精品美国一| 日韩精品一区在线| 91精品国产福利在线观看| 欧美一区二区三区在| 欧美一卡2卡三卡4卡5免费| 欧美一级二级三级蜜桃| 欧美一级二级三级乱码| 欧美videossexotv100| 欧美成va人片在线观看| 久久精品欧美一区二区三区麻豆 | 亚洲免费av高清| 亚洲美女精品一区| 午夜激情久久久| 麻豆成人在线观看| 国产·精品毛片| 9色porny自拍视频一区二区| 一本大道久久a久久精品综合| 日本久久一区二区| 欧美一区二区免费| 久久精品男人天堂av| 国产精品久久久久久久午夜片| 亚洲色图.com| 日韩精品免费专区| 精品无人区卡一卡二卡三乱码免费卡| 国产精品一区不卡| 一本到不卡免费一区二区| 91精品国产综合久久福利 | 另类小说图片综合网| 国产激情偷乱视频一区二区三区| av男人天堂一区| 91精品在线免费观看| 久久免费视频一区| 亚洲精品国产高清久久伦理二区| 日韩精品国产精品| 国产91清纯白嫩初高中在线观看| 色婷婷综合久久久中文字幕| 日韩一区二区免费高清| 国产精品免费久久久久| 亚洲1区2区3区视频| 国产剧情在线观看一区二区| 91麻豆国产福利在线观看| 日韩免费成人网| 伊人婷婷欧美激情| 国产一区二区免费看| 欧美在线视频日韩| 国产性做久久久久久| 午夜免费久久看| 国产成人av福利| 8v天堂国产在线一区二区| 欧美极品xxx| 美女网站色91| 色88888久久久久久影院按摩 | 亚洲欧洲中文日韩久久av乱码| 日本不卡视频在线| 色综合av在线| 国产欧美日韩综合| 蜜臀av一区二区| 欧美性感一区二区三区| 国产精品色噜噜| 麻豆精品视频在线观看免费| 在线观看日产精品| 国产精品麻豆一区二区 | 制服丝袜中文字幕亚洲| 国产精品电影院| 国产在线不卡一区| 日韩一区二区麻豆国产| 一级日本不卡的影视| 高清不卡一区二区| 精品少妇一区二区三区在线播放 | 亚洲一区欧美一区| 成人午夜碰碰视频| 精品国产乱码久久久久久浪潮| 天堂在线一区二区| 欧美性大战久久久久久久蜜臀| 国产亚洲欧洲一区高清在线观看| 伦理电影国产精品| 在线播放一区二区三区| 亚洲午夜免费电影| 色94色欧美sute亚洲线路一ni| 国产精品久久久久精k8| 国产精品亚洲午夜一区二区三区| 欧美一区二区三区免费观看视频| 亚洲高清一区二区三区| 色婷婷av一区二区三区软件| 中文成人综合网| 国产传媒欧美日韩成人| 久久久久久久久蜜桃| 黑人巨大精品欧美黑白配亚洲| 欧美一级一级性生活免费录像| 亚洲不卡在线观看| 欧美精品色综合| 图片区小说区国产精品视频| 欧美色中文字幕| 亚洲一区二区欧美| 在线观看日韩国产| 亚洲国产精品视频| 欧美日韩久久不卡| 五月婷婷久久综合| 欧美夫妻性生活| 蜜臀av一区二区在线观看| 日韩视频在线永久播放| 国内精品视频一区二区三区八戒| 26uuu国产在线精品一区二区| 加勒比av一区二区| 久久久久久99久久久精品网站| 国内欧美视频一区二区| 国产丝袜美腿一区二区三区| 国产91精品欧美| 日韩理论在线观看| 欧美伊人久久久久久午夜久久久久| 亚洲精品国产成人久久av盗摄| 91久久免费观看| 日韩电影在线免费看| 日韩免费在线观看| 国产jizzjizz一区二区| 中文字幕一区在线观看视频| 99久久免费视频.com| 亚洲一区免费在线观看| 91精品国产一区二区三区香蕉| 精彩视频一区二区| 国产精品成人午夜| 欧美日韩一级大片网址| 久久99久久精品| 中文字幕在线免费不卡| 欧美三级电影网| 精彩视频一区二区| 中文字幕日本乱码精品影院| 欧美午夜精品一区二区蜜桃| 天天综合色天天| 国产欧美一区二区三区在线看蜜臀| 99re热视频精品| 爽爽淫人综合网网站| 久久久久久亚洲综合影院红桃| 99re这里只有精品视频首页| 亚洲成精国产精品女| 26uuu亚洲综合色欧美 | 亚洲人成网站影音先锋播放| 欧美性猛交一区二区三区精品| 麻豆精品国产传媒mv男同| 1024成人网| 欧美一区二区啪啪| 成人黄色小视频| 日韩精品三区四区| 国产精品高潮呻吟久久| 91精品免费在线观看| 成人精品视频一区二区三区 | 91视频免费播放| 蜜臀av一区二区三区| 亚洲天堂av一区| 日韩欧美黄色影院| 91电影在线观看| 国产乱码精品一区二区三区五月婷 | 国产精品国产自产拍在线| 欧美日韩国产一级| 高清不卡在线观看av| 日韩av午夜在线观看| 中文字幕成人av| 91精品国产麻豆国产自产在线| 不卡视频免费播放| 久国产精品韩国三级视频| 一区二区三区中文字幕电影| 精品久久久久久久久久久久久久久久久| 91理论电影在线观看| 精彩视频一区二区三区| 午夜视频一区二区| 中文字幕人成不卡一区| 久久蜜桃av一区二区天堂| 欧美日韩国产bt| 色诱视频网站一区| 国产成人精品亚洲日本在线桃色 | 国产成人综合在线观看| 日本亚洲视频在线| 亚洲综合自拍偷拍| 亚洲国产精品黑人久久久| 日韩精品自拍偷拍| 91精品国产综合久久久久| 91久久精品一区二区三区| av电影在线观看一区| 国产成人免费av在线| 久久国产福利国产秒拍| 秋霞电影一区二区| 午夜久久久影院| 亚洲成人tv网| 一区二区三区久久| 一区二区三区精密机械公司| 国产精品精品国产色婷婷| 欧美国产精品v| www国产精品av| 精品国产一区久久| 欧美一级夜夜爽| 欧美一区二区三区四区高清| 欧美男人的天堂一二区| 欧美日韩大陆在线| 欧美性生活影院| 欧美日韩中文字幕精品| 欧美自拍丝袜亚洲| 欧美中文字幕一区二区三区| 91激情在线视频| 欧美三级中文字幕在线观看|