Random 编程前的xc8随机数

Random 编程前的xc8随机数,random,pic,mplab,xc8,Random,Pic,Mplab,Xc8,我用pic16f1823制作了100个遥控器,我需要每个遥控器都有一个唯一的id,但随着时间的推移它应该是恒定的,所以我认为最好在mplab编译器中编程之前生成一个随机变量,然后编译这100个遥控器 我不想手动更改远程\u id #include "mcc_generated_files/mcc.h" #define remote_id 33800 char col; uint24_t data_out; void Reset_state(void); int Key(void); int

我用pic16f1823制作了100个遥控器,我需要每个遥控器都有一个唯一的id,但随着时间的推移它应该是恒定的,所以我认为最好在mplab编译器中编程之前生成一个随机变量,然后编译这100个遥控器 我不想手动更改远程\u id

#include "mcc_generated_files/mcc.h" 
#define remote_id   33800
char col;
uint24_t data_out;
void Reset_state(void);
int Key(void);
int Key_prime(void);
void main(void)
{...

请帮我解决这个问题。

应该可以在IPE中使用SQTP模式,如下所述


您是否可以在生产中使用一个脚本来更改ihex文件,以便 您的序列号在EEPROM(EE)中会显示不同,因为大多数PIC都有1k的内部EE用于数据存储? 然后,遥控器将从EE位置读取其唯一序列号。
这对于“gawk”来说是一项简单的工作,比如说……

使用MPLAB IPE中的SQTP功能。您需要先进入“高级模式”并登录IPE

在SQTP选项卡中,将其设置为将值作为“原始数据”保存在EEPROM中的内存地址0x00处。按“生成”,它将为您编写一个sqtp文件

在选择.hex文件的字段下的“操作”选项卡中选择SQTP文件

每次刷新新mcu时,IPE都会增加到SQTP文件中的下一个值,甚至会在会话之间跟踪

您可以在代码中使用它来检索数据:

unsigned char EEPROM_ReadByte(unsigned char eepromAddress)
{
    while(RD || WR);           // check the WR&RD bit to see if a RD/WR is in progress
    EEADR=eepromAddress;       // Write the address to EEADR.
    RD = 1;                    // Set the RD bit to trigger the eeprom read operation.
    return(EEDATA);            // Return the data read form eeprom.
}
调用EEPROM_ReadByte,传入0x00,它将从数据中返回一个字符。递增eepromAddress,它将返回第二个字符,等等

请注意,您的数据将按相反的顺序排列,我不知道为什么,这可能是由于SQTP文件的编码方式。

您的问题是什么?