📄 24c01.h
字号:
/************************************************************************
函数库名称:密码保护部分 ,将新密码写入IIC器件实时保护
设计者: 05级新本一班 易龙明 08,8,12
************************************************************************/
#ifndef _24C01_h_
#define _24C01_h_
#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define AddWr 0xa0
#define AddRd 0xa1
#define _Nop _nop_
bit ack;
sbit SDA=P2^1;
sbit SCL=P2^0;
//*********************************************************************驱动程序
void Start() //启动IIC器件
{
SDA=1;
_Nop();
SCL=1;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
SDA=0;
_Nop();
_Nop();
_Nop();
_Nop();
SCL=0;
_Nop();
_Nop();
}
void Stop() //停止IIC器件
{
SDA=0;
_Nop();
SCL=1;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
SDA=1;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
}
void Cack(bit a) //检查IIC器件的回复
{
if(a==0)SDA=0;
else SDA=1;
_Nop();
_Nop();
_Nop();
SCL=1;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
SCL=0;
_Nop();
_Nop();
}
void Send(uchar c) //向IIC器件发送一个字节的内容 ,并标志回复位,若有回复,ack=1
{
uchar i;
for(i=0;i<8;i++)
{
if(c&0x80)SDA=1;
else SDA=0;
_Nop();
SCL=1;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
SCL=0;
c=c<<1;
}
_Nop();
_Nop();
SDA=1;
_Nop();
_Nop();
SCL=1;
_Nop();
_Nop();
_Nop();
if(SDA==1)ack=0;
else ack=1;
SCL=0;
_Nop();
_Nop();
}
bit SendB(uchar *s,uchar Address,uchar Number) //向IIC器件发送N个字节 ,发送成功,返回1
{
uchar i;
Start();
Send(AddWr);
if(ack==0)return(0);
Send(Address);
if(ack==0)return(0);
for(i=0;i<Number;i++)
{
Send(*s);
if(ack==0)return(0);
s++;
}
Stop();
return(1);
}
uchar Read() //从IIC器件读一个字节的内容并返回所读的数据
{
uchar temp;
uchar i;
temp=0;
SDA=1;
for(i=0;i<8;i++)
{
_Nop();
SCL=0;
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
SCL=1;
_Nop();
_Nop();
temp=temp<<1;
if(SDA==1)temp++;
_Nop();
_Nop();}
SCL=0;
_Nop();
_Nop();
return(temp);
}
bit ReadB(uchar *s,uchar Address,uchar Number) //从IIC器件读出N个字节,并将所读的数据存入数组
{
uchar i;
Start();
Send(AddWr);
if(ack==0)return(0);
Send(Address);
if(ack==0)return(0);
Start();
Send(AddRd);
if(ack==0)return(0);
for(i=0;i<Number;i++)
{
*s=Read();
Cack(0);
s++;
}
*s=Read();
Cack(1);
Stop();
return(1);
}
//**************************************************
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -