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 + -
显示快捷键?