rwe2prom.c
来自「手操器」· C语言 代码 · 共 55 行
C
55 行
#include <iom8v.h>
#include <macros.h>
#include "eeprom.h"
extern union{
unsigned char E2PROMBuffer[4];
struct{
unsigned int WritedVariable;
unsigned char Xor1;
unsigned char Xor2;
}SingleVariable;
}BufferForWriteE2PROM;
//写一个无符号整型数到E2PROM
//已含有校验。
void WriteUnsignedIntToE2PROM(unsigned int WritedVariable,unsigned int E2PROMAddr)
{
BufferForWriteE2PROM.SingleVariable.WritedVariable=WritedVariable;
BufferForWriteE2PROM.E2PROMBuffer[2]=0x55;
BufferForWriteE2PROM.E2PROMBuffer[3]=BufferForWriteE2PROM.E2PROMBuffer[0]
^BufferForWriteE2PROM.E2PROMBuffer[1];
EEPROMWriteBytes(E2PROMAddr,BufferForWriteE2PROM.E2PROMBuffer,4);
}
//写一个无符号字符到E2PROM
//已含有校验。
void WriteUnsignedCharToE2PROM(unsigned char WritedVariable,unsigned int E2PROMAddr)
{
BufferForWriteE2PROM.E2PROMBuffer[0]=WritedVariable;
BufferForWriteE2PROM.E2PROMBuffer[1]=0x55;
BufferForWriteE2PROM.E2PROMBuffer[2]=0x55;
BufferForWriteE2PROM.E2PROMBuffer[3]=BufferForWriteE2PROM.E2PROMBuffer[0]
^BufferForWriteE2PROM.E2PROMBuffer[1];
EEPROMWriteBytes(E2PROMAddr,BufferForWriteE2PROM.E2PROMBuffer,4);
}
//从E2PROM读一页,并校验其是否有效数据。
//If The Function Return 0,It Means That The Data In This Page Are Invalid.
//If The Function Return 1,It Means That The Data In This Page Are Valid,And The Data Are In BufferForWriteE2PROM.
unsigned char ReadAPageFromE2PROMAndCheckIt(unsigned int E2PROMAddr)
{
EEPROMReadBytes(E2PROMAddr,BufferForWriteE2PROM.E2PROMBuffer,4);
if( BufferForWriteE2PROM.E2PROMBuffer[2]!=0x55)
return 0;
BufferForWriteE2PROM.E2PROMBuffer[2]=BufferForWriteE2PROM.E2PROMBuffer[0]
^BufferForWriteE2PROM.E2PROMBuffer[1];
if( BufferForWriteE2PROM.E2PROMBuffer[2]==BufferForWriteE2PROM.E2PROMBuffer[3] )
return 1;
else return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?