單片機:stc 讀取 MCU ID


/*STC MCU都具有唯一的MCU ID號,一般保存在RAM的0xF1-F7區域,對於15系列,同時會保存在ROM的最后7個字節中。因此,可以通過字符指針,獲取MCU ID值,用於程序的加密。
*/
// 讀取 STCMCU 的唯一性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);

 //獲取 MCU ID.
char *GetMCUID(unsigned char nType)
{
    unsigned char idata *iptr;
    unsigned char code *cptr;
    unsigned char i;
    unsigned char bb[8];
   
    if (nType == RAMID) {
        iptr = ID_ADDR_RAM;         //從RAM區讀取ID號
        for (i=0; i<7; i++) {       //讀7個字節
            UID[i] =*iptr++;      
            sprintf(bb, "%02x",(int)UID[i]); //***在 Keil C51中,如果想得到正確的2字符十六進制數輸出,必須使用(int)形式做轉換。
            SendStr(bb);
        }
    }
    else {
        cptr = ID_ADDR_ROM;         //從程序區讀取ID號
        for (i=0; i<7; i++) {       //讀7個字節
            UID[i] =*cptr++; 
            sprintf(bb, "%02X",(int)UID[i]);
            SendStr(bb);
        }
    }
    UID[7]=0;
   
    return UID;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM