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

📄 24c04.c

📁 一个通过8051来控制8019上网的程序 该程序已经通过并成功用于键盘
💻 C
字号:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <reg89C58.h>
#include <intrins.h>

#include "net.h"
#include "24c04.h"

sbit SDA=P3^5;
sbit SCL=P3^4;



void delay1(UINT  x)
{
UCHAR  j;
while(x--){
		for(j=0;j<150;j++)
			{;}
		  }
}


void wrbyt0()
{SDA=0;SCL=1;_nop_();_nop_();SCL=0;}
void wrbyt1()
{SDA=1;SCL=1;_nop_();_nop_();SCL=0;SDA=0;}






UCHAR  rdbyt()
{	
	UCHAR nn=0xff,mm=0x80,uu=0x7f;
	UCHAR j;
	UINT q=0;
	for(j=0;j<8;j++)
	{SDA=1;SCL=1;
	if(SDA==0)
	{nn=(nn&uu);
	nn=_crol_(nn,1);
	SCL=0;
	}
	else
	{nn=(nn|mm);
	nn=_crol_(nn,1);
	SCL=0;}
	}
return(nn);
}








void sta()               ////1-STAR IIC BUS
{	SDA=1;
	SCL=1;
	while(SCL==0){;}
	_nop_(); 
	SDA=0;
	_nop_(); 
	_nop_(); 
	SCL=0;
}
void stop()               /////2-STOP IIC BUS 
{
	SDA=0;
	SCL=1;
	while(SCL==0){;}
	_nop_(); 
	SDA=1;
	_nop_(); 
	_nop_(); 
	SCL=0;
}
void mack()
{
	SDA=0;
	SCL=1;
	_nop_(); 
	_nop_(); 
	SCL=0;
	SDA=1;
}
void mnack()
{SDA=1;	SCL=1;_nop_(); _nop_();SCL=0;SDA=0;}
void cack()
{	SDA=1;SCL=1;F0=0;
	if(SDA==0)
	{SCL=0;_nop_();_nop_();}
	else
	{F0=1;SCL=0;_nop_();_nop_(); }
}
void wrbyt(UCHAR shu)
{UCHAR i;
	if((shu&0x80)>0)
	{SDA=1;}
	else
	{SDA=0;}
	SCL=1;
	while(SCL==0){;}
	_nop_();SCL=0;SDA=0;
	shu=_crol_(shu,1);
	for(i=1;i<8;i++)
	{	if((shu&0x80)>0)
		{wrbyt1();}
		else
		{wrbyt0();}
		shu=_crol_(shu,1);
	}
}	
void wrnbyta(UCHAR slaw,UCHAR gg[],UCHAR n)
{
do{
	sta();
	wrbyt(slaw);
	cack();
	}while(F0==1);
	wrbyt(gg[n]);
	cack();
}
void wrnbyt(UCHAR slaw,UCHAR number,UCHAR ff[])
{
UCHAR  k;
do{
	sta();
	wrbyt(slaw);
	cack();
	}while(F0==1);
	for(k=0;k<number;k++)
	{
	wrbyt(ff[k]);
	cack();
	while(F0==1)
	{
	wrnbyta(slaw,ff,k);
	}
	}
	stop();
	delay1(600);
}
void rdnbyt(UCHAR number,UCHAR slar,UCHAR qq[])
{
UCHAR data0,l;
do{
	sta();
	wrbyt(slar);
	cack();
	}while(F0==1);
for(l=0;l<number;l++)
{
data0=rdbyt();
qq[l]=data0;
	if(l<(number-1))
	{mack();}
	}
	mnack();
	stop();
}

void read_temp(UCHAR qrdaddr,UCHAR readlen,UCHAR QHYTEMP[])     //起始地址读出的长度和存储的字节
{	                                                             //超如地址
																	//讯出字节的长充
																	//存储读出的数据
	UCHAR QTEMP[2];
	UCHAR rdaddr[2];
	QTEMP[0]=0Xa0;
	QTEMP[1]=0Xa1;
	rdaddr[0]=qrdaddr;
	wrnbyt(QTEMP[0],1,rdaddr);
	rdnbyt(readlen,0xa1,QHYTEMP);

}
void write_temp(UCHAR WRADDR,UCHAR SLAW,UCHAR WRTEMP[])
{	UCHAR i;
	UCHAR temp[18];	
	UCHAR HTEMP[2];
	
	HTEMP[0]=0Xa0;
	temp[0]=WRADDR;
		for (i=1;i<=SLAW;i++)
		{
		temp[i]=WRTEMP[i-1];
		}
	wrnbyt(HTEMP[0],SLAW+1,temp);

}



⌨️ 快捷键说明

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