在些应用场合,每个单片机需要有不同的地址,比如2.4G通信.应广单片机内部没有EEPROM,那么怎么解决每个单片机有不同的地址/ID呢?滚码就是一个解决方式.先写好代码,然后在烧录的时候可以设置一个初始值和滚动步长.,在初始值的基础上,每烧录一个单片机,码字按步长增加.这样就可以在一定范围你保证每个单片机有不同的地址.常用16bit或32bit,用pms132为例子.上代码.
1.代码如下
BYTE Roll[4];/*定义数组,用以保存滚码数据*/
/*roll,上电之后或是需要使用的时候调用这个函数,这段代码的实现的目的是从系统指定ROM位置读取数据,并把数据存入RAM中,供其他程序使用*/
void GetRollCode(void)
{
call _SYS(ADR.ROLL); // 读取 Roll:0
Roll[0] = A;
call _SYS(ADR.ROLL) +1; // 读取 Roll:1
Roll[1] = A;
// call _SYS(ADR.ROLL) +2; // 读取 Roll:2
// Roll[2] = A;
//call _SYS(ADR.ROLL) +3; // 读取 Roll:3
// Roll[3] = A;
}
2.只用加入了上述函数 GetRollCode(),烧录器才能显示对应的配置项目。在烧录配置那边可以对初始值和步长进行设置.烧录器要把滚码数据写入指定位置,供程序读取。
3.烧录的时候,滚码会自动按步长增加,这样每个单片机就可以有不同id了.