⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 93c46.c

📁 开发的一个温控仪完整代码
💻 C
字号:
#include "TempCtrl.h"

//////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////
//两个Write函数后面应该加2ms到5ms的延时方能进行第二次操作
void SendCmd(unsigned Cmd)
{
	P_CS=0;
	P_CLK=0; 
	P_CS=1;
	P_DI=1;
	P_CLK=1;
	P_CLK=0;
	if((Cmd&0x02)==0)
		P_DI=0;
	else
		P_DI=1;
	P_CLK=1;   
	P_CLK=0;
	if((Cmd&0x01)==0)
		P_DI=0;
	else
		P_DI=1;
	P_CLK=1;   
}
/////////////////////////////////////////////////

void Sendaddr(unsigned char addr)
{
	unsigned char i;
	addr<<=1;
	for(i=0;i<7;i++) 
	{
		P_CLK=0;
		if((addr&0x80)==0)
			P_DI=0;
		else
			P_DI=1;
		addr<<=1;
		P_CLK=1; 
	}
}
/////////////////////////////////////////////////
void Senddat(unsigned char dat)
{
	unsigned char i;
	for(i=0;i<8;i++) 
	{
		P_CLK=0;
		if((dat&0x80)==0)
			P_DI=0;
		else
			P_DI=1;
		dat<<=1;
		P_CLK=1; 
	}
}
/////////////////////////////////////////////////
unsigned char Readdat(void)
{
	unsigned char i,temp=0;
	P_DO=1;
	for(i=0;i<8;i++) 
	{  
		P_CLK=0;
		temp<<=1;
		P_CLK=1;
		_nop_();
		_nop_(); 
		if(P_DO==1)
			temp|=0x01;
	}
	return temp;
}
/////////////////////////////////////////////////
void Ewen(void)
{
	SendCmd(0x00); 
	Senddat(0xc0);
	P_CS=0;
	_nop_();
	P_CS=1;
}
/////////////////////////////////////////////////
//93C46字节读子程序,地址范围0~127
void WriteByte(unsigned char addr,unsigned char dat)
{
	//kf
	if(PassWordLock==1)
		return;//EEPROM锁定
	
	Ewen();
	SendCmd(0x01);
	Sendaddr(addr);
	Senddat(dat);
	P_CS=0;
	_nop_();
	P_CS=1;
	P_DO=1;
}
unsigned char ReadByte(unsigned char addr)
{ 
	unsigned char dat;
	SendCmd(0x02);
	Sendaddr(addr);
	dat=Readdat();
	P_CS=0; 
	return(dat);
}
/////////////////////////////////////////////////
//93C46的字读写程序,地址范围0~63
void Write(unsigned char addr,unsigned int dat)
{
	unsigned char temp;
	addr &= 0x3f;
	addr <<=1;
	temp = (unsigned char)(dat>>8);
	WriteByte(addr,temp);  //temp
	Wait(200);//延时2ms-5ms
	temp =dat & 0xff;
	WriteByte(addr+1,temp);	//temp
	Wait(200);
}
unsigned int Read(unsigned char addr)
{
	unsigned int temp;
	addr&=0x3f;
	addr<<=1;
	temp=ReadByte(addr);
	temp<<=8;
	addr=ReadByte(addr+1);
	temp+=addr;
	return(temp);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -