📄 eeprom.c
字号:
/*******************************************************************************
EEPROM.C
Copyright (c) SmartASIC, Inc. All rights reserved.
*******************************************************************************/
#include <MTV230.H>
#define EE_MCU 0xA0
/*==============================================================================
==============================================================================*/
void IIC_Start(void) {
MCU_SDA=1;
MCU_SCL=1;
MCU_SDA=0;
MCU_SCL=0;
}
/*==============================================================================
==============================================================================*/
void IIC_Stop(void) {
MCU_SDA=0;
MCU_SCL=1;
MCU_SDA=1;
}
/*==============================================================================
==============================================================================*/
bit IIC_Data_In(unsigned char bytedata) {
unsigned char i;
bit ack;
for(i=0; i<8; i++) {
MCU_SDA=bytedata&0x80;
MCU_SCL=1;
bytedata<<=1;
MCU_SCL=0;
}
MCU_SDA=1;
MCU_SCL=1;
ack=MCU_SDA;
MCU_SCL=0;
MCU_SDA=0;
return ack;
}
/*==============================================================================
==============================================================================*/
unsigned char IIC_Data_Out(void) {
unsigned char i, bytedata=0;
MCU_SDA=1;
for(i=0; i<8; i++) {
MCU_SCL=1;
bytedata<<=1;
bytedata|=MCU_SDA;
MCU_SCL=0;
}
return bytedata;
}
/*==============================================================================
==============================================================================*/
void Send_Acknowledge(bit ack) {
MCU_SDA=ack;
MCU_SCL=1;
MCU_SCL=0;
}
/*==============================================================================
==============================================================================*/
unsigned char EE_MCU_Byte_Read(unsigned int address) {
unsigned char device, bytedata;
device=EE_MCU|(address/256)*2;
bytedata=0;
Again:
IIC_Start();
if(IIC_Data_In(device))
goto Again;
if(IIC_Data_In(address%256))
goto Again;
IIC_Start();
if(IIC_Data_In(device|1))
goto Again;
bytedata=IIC_Data_Out();
Send_Acknowledge(1);
IIC_Stop();
return bytedata;
}
/*==============================================================================
==============================================================================*/
void EE_MCU_Byte_Write(unsigned int address, unsigned char bytedata) {
unsigned char device;
device=EE_MCU|(address/256)*2;
Again:
IIC_Start();
if(IIC_Data_In(device))
goto Again;
if(IIC_Data_In(address%256))
goto Again;
if(IIC_Data_In(bytedata))
goto Again;
IIC_Stop();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -