|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2010-11-15 12:39:33
|
显示全部楼层
怪不得高手会不屑回答这个问题,原来这个就不能算问题.呵呵,说下我的理解.
首先PICC中应该存在3种存储单元, 1.接收数据缓冲单元2.内部数据寄存器 3.EEPROM
卡接收到的数据保存在数据缓冲单元,再依据命令做响应.
当我们写数据时,卡接收到完整的命令和数据后,直接将其写入EEPROM就是我们指定的操作块.写入之前这个块的值是多少
我们不关心.
当我们要加减值时,卡收到完整的命令后->把命令中指定的块号对应的数据读取到内部数据寄存器(因为在寄存器里面才能
执行运算)然后等待数据的到来.->接收到数据后,将数据和寄存器里面的值加/减后,并保存在寄存器里面.然后等待下一个命令
指定操作块->接收到命令后将寄存器里面的值写入操作块.
在上例中addr为源块,trans_addr为目的块(源块 目的块可以不同).简单来说就是把某个源块的数据加减后再写入某目的块,这样做就可以实现任意块的
加减和存入.为什么要这样做?那是为了PICC的高级操作的强大备份功能.
再来看以上的代码就清楚了,第一次发送是告诉PICC我是要对哪个块的数据进行加减,第2次发送是要加减的值,第3次发送告诉
PICC.(把结果存到这个块吧!)
总算把RC500玩转了,谢谢zhangf1021 提供的资料.谢谢楼上的回复. |
|