dly001 发表于 2010-10-8 10:37

义隆单片机 用户ID寄存器

义隆单片机在烧录的时候,有个用户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 编辑

滚动码就是改程序,

比如有一个程序:
org0x0
nop
mova,@0x00;// 假如你滚动烧写的地址设在这里
mov 0x20,a
nop
nop
mova,0x21;//假设0x21是无线通信接收到的数据
xor   a,0x20;
jbs3,2
jmp    aa
jmp    bb
aa:    nop
jmpcc
bb:   打开车门
jmpcc
cc:
nop
end
///////////
滚动烧写后就变为org0x0
nop
mova,@0x01;//
mov 0x20,a
nop
nop
mova,0x21;//假设0x21是无线通信接收到的数据
xor   a,0x20;
jbs3,2
jmp    aa
jmp    bb
aa:    nop
jmpcc
bb:   打开车门
jmpcc
cc:
nop
end
下一个烧写就变为
org0x0
nop
mova,@0x02;//
mov 0x20,a
nop
nop
mova,0x21;//假设0x21是无线通信接收到的数据
xor   a,0x20;
jbs3,2
jmp    aa
jmp    bb
aa:    nop
jmpcc
bb:   打开车门
jmpcc
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这种与RETL0X11这样的地方,

也只有 这些地方才有意义

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

老鱼探戈 发表于 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
滚动码就是改程序,

比如有一个程序:


你好,请教一下。
add    pc,a
这个指令,用在程序开头处,是不是可以做到读随机数
页: [1]
查看完整版本: 义隆单片机 用户ID寄存器