这款10亿次读写次数的芯片源代码,分享给大家,免得大家花时间去看手册
单片机源程序如下:
- #include "MB85RC16.h"
- #include "iic.h"
- char MB85RC16_WR(unsigned int addr,unsigned char pbuf)
- {
- unsigned int i=0;
- IIC_START();
- //发送地址
- if(IIC_SendByte(device_id|((unsigned char)(addr>>8)<<1))==1)
- {
- return 1;
- }
- if(IIC_SendByte((unsigned char)addr)==1)
- {
- return 1;
- }
- IIC_SendByte(pbuf);
- IIC_STOP();
- return 0;
- }
- unsigned char MB85RC16_RE(unsigned int addr)
- {
- unsigned int i=0;
- unsigned char pbuf=0;
- IIC_START();
- //发送地址
- if(IIC_SendByte(device_id|((unsigned char)(addr>>8)<<1))==1)
- {
- return 1;
- }
- if(IIC_SendByte((unsigned char)(addr&0x00ff))==1)
- {
- return 1;
- }
- IIC_START();
- if(IIC_SendByte(device_id|device_r|((unsigned char)(addr>>8)<<1))==1)
- {
- return 1;
- }
- pbuf=IIC_RecByte();
- IIC_NOACK();
- IIC_STOP();
- return pbuf;
- }
复制代码- #include "iic.h"
- void IIC_START()
- {
- SCL_SET(1);
- SDA_SET(1);
- delayus(5);
- SDA_SET(0);
- delayus(5);
- SCL_SET(0);
- }
- void IIC_STOP()
- {
- SCL_SET(1);
- SDA_SET(0);
- delayus(5);
- SDA_SET(1);
- delayus(5);
- }
- void IIC_ACK()
- {
- SDA_SET(0);
- delayus(1);
- SCL_SET(1);
- delayus(4);
- SCL_SET(0);
- delayus(4);
- }
- void IIC_NOACK()
- {
- SDA_SET(1);
- delayus(1);
- SCL_SET(1);
- delayus(1);
- SCL_SET(0);
- delayus(1);
- }
- char IIC_GETACK()
- {
- char ErrorBit;
- SDA_SET(1);
- delayus(1);
- SCL_SET(1);
- delayus(1);
- if(SDA==1)ErrorBit=1;else ErrorBit=0;
- SCL_SET(0);
- delayus(1);
- return ErrorBit;
- }
- //*********************************************************************
- // 功能描述:主设备向从设备发送个一字节
- // 返回值: 0->成功 1->失败
- //*********************************************************************/
- unsigned char IIC_SendByte(unsigned char Data)
- {
- unsigned char i; // 位数控制
- for (i=0;i<8;i++) // 写入时是用时钟下降沿同步数据
- {
- if (Data & 0x80){SDA_SET(1);}else {SDA_SET(0); }
- delayus(1); // 保持0.2uS以上(TSU.DAT)
- SCL_SET(1);
- delayus(4); // 保持4.0uS以上(THIGH)
- SCL_SET(0);
- delayus(5); // 保持4.7uS以上(TLOW)
- Data <<= 1;
- }
- return IIC_GetACK();
- }
- //*********************************************************************
- // 功能描述:主设备向从设备读取一个字节
- // 返回值: 读到的字节
- // *********************************************************************/
- unsigned char IIC_RecByte(void) // 接收单字节的数据,并返回该字节值
- {
- unsigned char i,rbyte=0;
- SDA_SET(1);
- for(i=0;i<8;i++) // 读出时是用时钟上升沿同步数据
- {
- SCL_SET(0);
- delayus(5); // 保持4.7uS以上(TLOW)
- SCL_SET(1);
- delayus(4); // 保持4.0uS以上(THIGH)
- if(SDA) rbyte|=(0x80>>i);
- }
- SCL_SET(0);
- return rbyte;
- }
复制代码
上图4个文件下载 c代码(请自行移植到各单片机平台):
源代码.zip
(1.82 KB, 下载次数: 32)
|