编程前的 XC8 随机数



>im 使用 pic10f1823 生成 100 个遥控器,我需要每个遥控器的唯一 ID,但它应该随着时间的推移保持不变,所以我认为最好在 MPLAB 编译器编程之前生成一个随机,然后编译这 100 个遥控器 我不想手动更改remote_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)
{...

请帮助我解决这个问题

应该可以将 SQTP 模式与 IPE 一起使用,如此处所述。

http://microchipdeveloper.com/ipe:serial-quick-turn-programming-sqtp-settings

你能在生产中有一个脚本来改变 ihex 文件吗 您的序列号在EEPROM (EE(中会有所不同,因为大多数图片都有1k的内部EE用于数据存储? 然后,遥控器将从 EE 位置读取其唯一的序列号。 对于"gawk"来说,这将是一个简单的工作,比如说......

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

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

在"操作"选项卡中选择 SQTP 文件,在选择 .hex 文件的字段下。

每次刷新新 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 文件的编码方式。

相关内容

  • 没有找到相关文章