[国产单片机] 义隆单片机 用户ID寄存器

[复制链接]
 楼主| dly001 发表于 2010-10-8 10:37 | 显示全部楼层 |阅读模式
义隆单片机在烧录的时候,有个用户ID寄存器,也就是Rolling Code,请问在程序里面怎么读取这个ID码,用什么指令,这个ID码存在什么地方?可以的话给个范例,谢谢了!
McuPlayer 发表于 2010-10-8 10:45 | 显示全部楼层
客户ID和Rolling Code不是一码
McuPlayer 发表于 2010-10-8 10:46 | 显示全部楼层
elan在option区域有客户ID的位置,是运行时是不能读的
但Rolling Code是运行时可以读取的
 楼主| dly001 发表于 2010-10-8 11:00 | 显示全部楼层
那ROLLING CODE 怎么读取?用什么指令,这个ID码存在什么地方?可以的话给个范例,谢谢
谈的元 发表于 2010-10-9 22:14 | 显示全部楼层
ID码就相当打个标记,不能读
谈的元 发表于 2010-10-9 22:24 | 显示全部楼层
本帖最后由 谈的元 于 2010-10-9 22:28 编辑

滚动码就是改程序,

比如有一个程序:
org  0x0
nop
mov  a,@0x00;// 假如你滚动烧写的地址设在这里
mov 0x20,a
nop
nop
mov  a,0x21;//假设0x21是无线通信接收到的数据
xor   a,0x20;
jbs  3,2
jmp    aa
jmp    bb
aa:    nop
jmp  cc
bb:   打开车门
jmp  cc
cc:
nop
end
///////////
滚动烧写后就变为org  0x0
nop
mov  a,@0x01;//
mov 0x20,a
nop
nop
mov  a,0x21;//假设0x21是无线通信接收到的数据
xor   a,0x20;
jbs  3,2
jmp    aa
jmp    bb
aa:    nop
jmp  cc
bb:   打开车门
jmp  cc
cc:
nop
end
下一个烧写就变为
org  0x0
nop
mov  a,@0x02;//
mov 0x20,a
nop
nop
mov  a,0x21;//假设0x21是无线通信接收到的数据
xor   a,0x20;
jbs  3,2
jmp    aa
jmp    bb
aa:    nop
jmp  cc
bb:   打开车门
jmp  cc
cc:
nop
end
谈的元 发表于 2010-10-9 22:26 | 显示全部楼层
这么做的目的:如果变量 0X20接收到  0X00就是第1个芯片打开车门

                       如果变量 0X20接收到  0X01就是第2个芯片打开车门
...
有了序列号,实现了区别
谈的元 发表于 2010-10-9 22:46 | 显示全部楼层
本帖最后由 谈的元 于 2010-10-9 22:48 编辑

同时滚动地址只能设置在语句MOV A,@2这种与RETL  0X11这样的地方,

也只有 这些地方才有意义

同时,一般变化规律为等差数列,这样实现简单,用的也多

评分

参与人数 1威望 +2 收起 理由
McuPlayer + 2

查看全部评分

老鱼探戈 发表于 2010-10-22 12:49 | 显示全部楼层
义隆的不是很了解,

不过SONIX里读取的方法就跟汇编查表是一样的。
scytrenbin 发表于 2010-11-7 16:12 | 显示全部楼层
义隆的用户ID码,是客户在烧录时设置的,客户无法通过程式去读写。
此用户ID码,有的客户用来作程式的版本号;有的用来作烧录日期;主要看编程人员怎样用。若今后程式有问题,可以用烧录器读出此用户ID码。
desc0 发表于 2020-11-7 23:45 | 显示全部楼层
谈的元 发表于 2010-10-9 22:24
滚动码就是改程序,

比如有一个程序:

你好,请教一下。
  1. add    pc,a

这个指令,用在程序开头处,是不是可以做到读随机数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

0

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部