標題:
鐵電MB54RC16讀寫源代碼
[打印本頁]
作者:
sworderchina
時間:
2022-3-22 08:38
標題:
鐵電MB54RC16讀寫源代碼
這款10億次讀寫次數(shù)的芯片源代碼,分享給大家,免得大家花時間去看手冊
單片機源程序如下:
#include "MB85RC16.h"
#include "iic.h"
char MB85RC16_WR(unsigned int addr,unsigned char pbuf)
{
unsigned int i=0;
IIC_START();
//發(fā)送地址
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();
//發(fā)送地址
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;
}
//*********************************************************************
// 功能描述:主設備向從設備發(fā)送個一字節(jié)
// 返回值: 0->成功 1->失敗
//*********************************************************************/
unsigned char IIC_SendByte(unsigned char Data)
{
unsigned char i; // 位數(shù)控制
for (i=0;i<8;i++) // 寫入時是用時鐘下降沿同步數(shù)據(jù)
{
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();
}
//*********************************************************************
// 功能描述:主設備向從設備讀取一個字節(jié)
// 返回值: 讀到的字節(jié)
// *********************************************************************/
unsigned char IIC_RecByte(void) // 接收單字節(jié)的數(shù)據(jù),并返回該字節(jié)值
{
unsigned char i,rbyte=0;
SDA_SET(1);
for(i=0;i<8;i++) // 讀出時是用時鐘上升沿同步數(shù)據(jù)
{
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;
}
復制代碼
51hei.png
(3.67 KB, 下載次數(shù): 45)
下載附件
2022-3-23 00:22 上傳
上圖4個文件下載 c代碼(請自行移植到各單片機平臺):
源代碼.zip
(1.82 KB, 下載次數(shù): 32)
2022-3-22 08:38 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1