新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机控制AT88SC1604卡的应用实例

单片机控制AT88SC1604卡的应用实例

作者: 时间:2011-10-08 来源:网络 收藏
(2)读出操作: 在进行读出操作时,必须保证使RST脚和PGM脚同时保持为低。如果对芯片各密码区进行读出操作,只能是在FUSE2未熔断且SV标志“1”时才能进行。

本文引用地址:https://www.eepw.com.cn/article/172457.htm

  如果对芯片各标识数据区进行读出操作,除FZ和IZ区外,需要使SV标志置“1”后才能执行。

  如果对芯片各数据区进行读出操作,需要在SV=1且Rn=1(n=1,2,3,4)状态下才能执行。

  注:在CLK的下降沿时,地址计数器加1,地址计数器当前所指的地址单元的数据被输出到I/O线上。因此,在整个时钟周期Tdk期间,包含了地址加1(INC)和读出(REA)两项操作。

  读IC数据子程序(R2:需读IC卡字节数,R0:数据区存放低位首地址)

  RICDAZ: MOV A,#KXXDZ ;卡信息地址送A

  LCALL SADR ;寻卡地址

  RICDA: MOV R3,#08

  RICDA1: SETB ICSDA

  NOP

  MOV C,ICSDA ;位读到A

  RLC A

  SETB ICCLK

  NOP

  CLR ICCLK

  NOP

  DJNZ R3,RICDA1

  MOV @R0,A ;8位数据送数据区

  DEC R0

  DJNZ R2,RICDA

  RET

  ; 寻IC卡位地址子程序(调用前16进制地址送ACC)

  SADR: LCALL FWZCX

  MOV B,#08

  MUL AB ;计算位地址: 16进制地址*8

  MOV R4,A ;低位位地址送R4

  MOV R5,B ;高位位地址送R5

  JNZ SADR1 ;低位地址不为0转

  MOV A,R5

  JZ SADR3

  DEC R5

  SADR1: SETB ICREST ;复位端置1

  SETB ICSDA

  CLR ICPGM

  CLR ICCLK

  CLR ICREST

  SADR2: SETB ICCLK

  SETB ICCLK

  CLR ICCLK

  CLR ICCLK

  DJNZ R4,SADR2

  MOV A,R5

  JZ SADR3

  DEC R5

  SJMP SADR2

  SADR3: RET

  ;

  (3)比较操作:在进行比较操作时,必须保证使RST脚和PGM脚同时保持为低。比较操作只能对芯片密码区执行,且由芯片内部来判断。在FUSE2未熔断时,只能在SV=0时,对SC区进行比较操作,对其它区的比较操作均为无效操作。SV=1时,芯片不做任何比较操作。在FUSE2熔断后,只能在SV=0时,对SC区进行比较操作,对其它区的比较操作均为无效操作。

  注:上述芯片密码比较时序图中是假设密码计数器中前两位为0,第三位寻到1的处理时序。

  有关芯片SC的时序关系如图2~5图所示:

  从操作(B)到(F),地址计数器不变,密码比较的过程是:

  (A)比较安全密码/擦除密码序列

  (B)在密码输入比较计数器中找出一位为“1”的位

  (C)在这个为“1”的单元写“0”

  (D)芯片输出“0”

  (E)如果比较成功,在PGM的上升沿安全密码/擦除密码的相应标志

  (SV,Sn或En)被置“1”,同时安全密码/擦除密码输入比较计数器

  (SCAC,SnAC或EnAC)被擦除。

  (F)如果擦除成功,相应安全密码/擦除密码标志被置“1”,芯片将输出“1”,否则芯片输出“0”。

  (G)在CLK的下降沿,地址计数器加1,并输出下一位的状态。

  比较用户密码子程序(地址0AH,0BH)

  CPSC: MOV R0,#CMM+2

  MOV R1,#06

  MOV R2,#02

  LCALL MVITI

  MOV A,#0AH

  LCALL SADR ;寻址

  MOV R0,#06

  LCALL BJMMRET

  ; 比较密码程序

  BJMM: CLR ICREST

  CLR ICPGM

  MOV R2,#02

  BJMM1: MOV A,@R0

  MOV R3,#08

  BJMM2: RLC A

  MOV ICSDA,C

  NOP

  SETB ICCLK

  NOP

  CLR ICCLK

  NOP

  DJNZ R3,BJMM2

  INC R0

  DJNZ R2,BJMM1

  MOV R2,#08;查8位

  BJMM4: SETB ICSDA

  NOP

  MOV C,ICSDA

  JC BJMM5 ;是1转

  SETB ICCLK ;指向下一位

  NOP

  CLR ICCLK

  NOP

  DJNZ R2,BJMM4

  LJMP BJMM8 ;计数器为00,卡锁死转

  BJMM5: SETB ICPGM

  NOP

  CLR ICSDA ;写0

  NOP

  SETB ICCLK

  NOP

  CLR ICPGM

  NOP

  LCALL DELY5

  CLR ICCLK

  NOP

  SETB ICSDA

  NOP

  MOV C,ICSDA

  JNC BJMM6

  LJMP BJMM7 ;未写入0,转出错

  BJMM6: SETB ICPGM

  NOP

  SETB ICSDA ;写1(擦除)

  NOP

  SETB ICCLK

  NOP

  CLR ICPGM

  NOP

  LCALL DELY5

  CLR ICCLK

  NOP

  SETB ICSDA

  NOP

  MOV C,ICSDA

  NOP

  SETB ICCLK

  JNC BJMM7 ;擦除不成功(密码错)转

  SETB FGICG1 ;置已校对密码标志

  RET

  BJMM7: CLR FGICG1 ;建密码错标记

  RET

  BJMM8: SETB FGICG2 ;置卡锁死标志

  RET

液位计相关文章:磁翻板液位计原理




评论


相关推荐

技术专区

关闭