這款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;
- }
復制代碼
51hei.png (3.67 KB, 下載次數: 45)
下載附件
2022-3-23 00:22 上傳
上圖4個文件下載 c代碼(請自行移植到各單片機平臺):
源代碼.zip
(1.82 KB, 下載次數: 32)
2022-3-22 08:38 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|