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

📄 wr24c02.c

📁 空调控制器
💻 C
字号:
#include <reg52.h>
#include <stdio.h>
#include <intrins.h>
#include "subddc.h"



void Start()
{
	SDA=1;
	SCL=1;
	SDA=0;
	SCL=0;
}


void Stop()
{
	SCL=0;
	SDA=0;
	SCL=1;
	SDA=1;
}

void Ack()
{
	SDA=0;
	SCL=1;
	SCL=0;
	SDA=1;
}

/***************************************************************************/
void NoAck()
{
	SDA=1;
	SCL=1;
	SCL=0;
}

/***************************************************************************/
bit TestAck()
{
	bit ErrorBit;
	SDA=1;
	SCL=1;
	ErrorBit=SDA;
	SCL=0;
	return(ErrorBit);
}

/***************************************************************************/

void Write8Bit(unsigned char input)
{
	unsigned char temp;
        temp=8;
	while(temp) {
           temp--;
	   SDA=(bit)(input&0x80);
	   SCL=1;
	   _nop_();
	   SCL=0;
	   input=input<<1;
	   }
}

/***************************************************************************/
void Write24c02(unsigned char idata *Wdata,unsigned char RomAddress,unsigned char number)
{
	Start();
	Write8Bit(WriteDeviceAddress);
        if(TestAck()) return;
	Write8Bit(RomAddress);
        if(TestAck()) return;
        while(number){
                number-- ;
		Write8Bit(*Wdata);
	        if(TestAck()) return;
		Wdata++;
		}
	Stop();
}

void Write8563(unsigned char idata *Wdata,unsigned char RomAddress,unsigned char number)
{
	Start();
	Write8Bit(WriteDevice8563);
        if(TestAck()) return;
	Write8Bit(RomAddress);
        if(TestAck()) return;
        while(number){
                number--;
		Write8Bit(*Wdata);
	        if(TestAck()) return;
		Wdata++;
		}
	Stop();
}


/***************************************************************************/
unsigned char Read8Bit()
{
    unsigned char temp,rbyte=0;
    temp=8;
    while(temp){
        temp--;
        SCL=1;
	rbyte=rbyte<<1;
        rbyte=rbyte|((unsigned char)(SDA));
	SCL=0;
	}
	return(rbyte);
}

/***************************************************************************/
void Read24c02(unsigned char idata *RamAddress,unsigned char RomAddress,unsigned char bytes)
{
	Start();
	Write8Bit(WriteDeviceAddress);
        if(TestAck()) return;
	Write8Bit(RomAddress);
	if(TestAck()) return;
	Start();
	Write8Bit(ReadDviceAddress);
	if(TestAck()) return;
	while(bytes!=1) {
		*RamAddress=Read8Bit();
		Ack();
		RamAddress++;
		bytes--;
		}
	*RamAddress=Read8Bit();
	NoAck();
	Stop();
}

void Read8563(unsigned char idata *RamAddress,unsigned char RomAddress,unsigned char bytes)
{
	Start();
	Write8Bit(WriteDevice8563);
        if(TestAck()) return;
	Write8Bit(RomAddress);
	if(TestAck()) return;
	Start();
	Write8Bit(ReadDevice8563);
	if(TestAck()) return;
	while(bytes!=1) {
		*RamAddress=Read8Bit();
		Ack();
		RamAddress++;
		bytes--;
		}
	*RamAddress=Read8Bit();
	NoAck();
	Stop();
}



⌨️ 快捷键说明

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