IC卡计数方法
IC卡计数方法在67-103地址单元中分为5个不可重置8单元计数器,芯片初始化时,72-103地址单元所对应的4个较低的8单元计数器中可以放0到8个“1”而67-71地址单元所对应的第5个计数器可以放0到5个“1”。所谓计数一次,就是将一个单元从“1”写成“0”。一个计数器中8位全为“0”后,要计数,需借位操作,即将高位计数器的一位从“1”写成“0”而相应其低位计数器整个字节从“0”擦除成“1”。可见4个8单元计数器如此逐一递减,其最大计数为8的4次方=4096。第5个计数器中5个单元因处在最高位只能被写“0”无法擦成“1”。因此只能计数5次。故芯片总计数为5X4096=20480。当全部计数单元(地址67-103)都被写成“0”时,卡片就用完了,不过,芯片出厂初始化时,初置的计数值由国家不同和卡片面值不同而不同,如100元卡初置计数值为1000。
举例: 100元(1000计数单元预置初始值).
--------
Byte9 Byte10 Byte11 Byte12 Byte13
--------------------------------------------------------------
000000 - 00000001 - 01111111 - 00011111 - 00000000
--------------------------------------------------------------
(3)octal (6)octal (7)octal (1)octal (2)octal
--------------------------------------------------------------
Value = 0*8^4 +1*8^3 +7*8^2 +5*8^1 +0*8^
--------------------------------------------------------------
总值 = 1000 Units
Ⅰ-5)内存数据:
字节 位 二进制 十六进制
+-----------+-----+
1 1 --> 8 | | |
+-----------+-----+
2 9 -->16 | 0010 1111 | $2F | ---> 德国
| 0011 0111 | $37 | ---> 西班牙
| 0011 1011 | $3B | ---> 希腊
+-----------+-----+
3 17 -->24 | | |
4 25 -->32 | | | ---> 出厂编号(写保护)
5 33 -->40 | | |
6 41 -->48 | | |
7 49 -->56 | | |
8 57 -->64 | | |
+-----------+-----+
9 65 -->72 | | | ---> c4096)
10 73 -->80 | | | --->c512)
11 81 -->88 | | | ---> c64) 5个8进制计数区
12 89 -->96 | | | ---> c8)
13 97 --> 104 | | | ---> c0)
+-----------+-----+
14 105 --> 112 | 1111 1111 | $FF |
15 113 --> 120 | 1111 1111 | $FF | ---> 所有位都为"1"
16 120 --> 128 | 1111 1111 | $FF |
+-----------+-----+ 谢谢分享!:D
页:
[1]