STC MCU都具有唯一的MCU ID号,一般保存在RAM的0xF1-F7区域,对于15系列,同时会保存在ROM的最后7个字节中。因此,可以通过字符指针,获取MCU ID值
#define ID_ADDR_RAM 0xF1 //ID号的存放在RAM区的地址为0F1H
#define ID_ADDR_ROM 0x0FF9 //4K程序空间的MCU(如STC15F204EA STC15F104EA) 这个地址要根据芯片换
unsigned char UID[8];
#define RAMID 0
#define ROMID 1
char *GetMCUID(unsigned char nType)
{
unsigned char idata *iptr;
unsigned char i;
if (nType == RAMID) {
iptr = ID_ADDR_RAM; //从RAM区读取ID号
}else{
iptr = ID_ADDR_ROM;
}
for (i=0; i<7; i++) { //读7个字节
UID
=*iptr++;
}
UID[7]=0; //添加字符串末尾0
return UID;
}
STC MCU都具有唯一的MCU ID号,一般保存在RAM的0xF1-F7区域,对于15系列,同时会保存在ROM的最后7个字节中。因此,可以通过字符指针,获取MCU ID值
#define ID_ADDR_RAM 0xF1 //ID号的存放在RAM区的地址为0F1H
#define ID_ADDR_ROM 0x0FF9 //4K程序空间的MCU(如STC15F204EA STC15F104EA) 这个地址要根据芯片换
unsigned char UID[8];
#define RAMID 0
#define ROMID 1
char *GetMCUID(unsigned char nType)
{
unsigned char idata *iptr;
unsigned char i;
if (nType == RAMID) {
iptr = ID_ADDR_RAM; //从RAM区读取ID号
}else{
iptr = ID_ADDR_ROM;
}
for (i=0; i<7; i++) { //读7个字节
UID =*iptr++;
}
UID[7]=0; //添加字符串末尾0
return UID;
}
举报