/*============================================*/
#define NUM_ID 0x0800 //4字节用户识别码,地址在0x0800
#define NUM_SN 0x083c //4字节序列号,地址在0x083c
uint8 xdata temp_num[4];//4字节客户信息码寄存器
/**************************************************************************
** 函数名称: Read_NUM
** 函数描述: 读客户信息码
** 输入参数: num客户信息码地址(16位),ptr读出的客户信息码存放数组地址,cnt读取的信息码个数(信息码最长是4字节)
** 输出参数: 无
*******************************************************************************************/
void Read_NUM(uint16 num,uint8 *ptr,uint8 cnt)
{
uint8 i;
uint8 code *NumAdr; //定义客户信息码地址指针
uint16 adrval;
Bit EA_BAK = EA; //保护EA
EA = 0; //关中断
adrval=num; //将地址赋值,并强制转换为指针
NumAdr=(uint8 *)adrval;
FLASHCON=Bin(00000001); //选择客户信息区操作
for(i=0;i<cnt;i++) //读客户信息码
{
*(ptr+i)=*(NumAdr+i);
}
FLASHCON=Bin(00000000); //选择FLASH操作
EA = EA_BAK; //恢复EA
} |