微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 1wire系统中TM卡的单片机等效替换

1wire系统中TM卡的单片机等效替换

时间:04-18 来源:常州轻工职业技术学院 点击:

图8 从机发送64位ID处理的中断服务程序流程

  在完整地实现一次ROM功能的过程中,从机首先等待主机发送的复位脉冲,待检测到后发图9实现ROM功能的流程送存在脉冲应答。随后,从机开始接收主机发送的ROM命令,并将其保存,以判断随后的操作。最后,从机发送TM卡的64位标识码,完成一次ROM命令的执行。实现ROM功能的流程如图9所示。

  单片机的汇编程序如下:

  ORG0000H

  AJMPInit//跳到Init段

  ORG0003H

  AJMPJudge//跳到中断服务程序

  Init: //初始化

  MOVDPTR,#ID//ID表地址

  MOVR5,#001H

  MOVR7,#000H

  CLR00H

  SETB01H

  SETBP3.2

  LCALLDelay10s

  CLRP3.2//拉低总线叫醒主机

  LCALLDelay100us

  SETBP3.2

  SETBEA

  SETBIT0

  SETBEX0

  MAIN: AJMPMAIN//主循环

  Judge:CLREX0//判断执行动作,关中断

  JNB00H,SecondJ//跳到二次判断

  ID_IN:JB01H,SEND1//从机发送TM卡64位标识码

  CLRP3.2//发送位0

  SEND1:SETBP3.2 //发送位1

  LCALLDelay30us

  MOVA,R5//R5循环左移

  RLA

  MOVR5,A

  MOVA,#00H

  MOVCA,@A+DPTR

  ANLA,R5

  CLR01H//设置01H状态

  JZRelease1

  SETB01H

  Release1:SETBP3.2

  MOVA,R5

  ANLA,#080H//判断字节发送完否

  JZINTEND

  INCDPTR

  AJMPINTEND//跳到中断结束

  SecondJ:MOVA,R7//二次判断

  JZWaitReply//跳到执行应答判断是否命令接收结束

  ANLA,#008H

  JZWaitOrder//跳到执行接收命令

  SETB00H

  WaitOrder: LCALLDelay15us//接收命令

  NOP

  NOP

  MOVA,P3//采样P3.2

  ANLA,#004H

  JZSAVE_R6

  MOVA,#001H

  SAVE_R6:

  ORLA,R6 //保存命令到R6

  RRA

  MOVR6,A

  RLOOP1:

  MOVA,P3//判断主机的发送状态,是否返回

  ANLA,#004H

  JZRLOOP1

  AJMPINTEND//跳到中断结束

  WaitReply://执行应答

  RLOOP:MOVA,P3//判断主机的复位信号

  ANLA,#004H

  JZRLOOP

  LCALLDelay30us

  CLRP3.2//从机拉低电平应答

  LCALLDelay150us

  SETBP3.2//释放总线

  NOP

  NOP

  NOP

  NOP

  INTEND:

  INCR7

  CLRIE0

  SETBEX0//开中断

  RETI//中断返回

  ID:DB001H//ID表

  DB0C3H

  DB04DH

  DB057H

  DB033H

  DB022H

  DB000H

  DB0D2H

  本文代码在实际运用中得到了很好的验证,能够稳定地替代SMC1990A1实现TM卡的ROM功能,极大地方便了权限管理人员用于丢失或损坏的TM卡的权限管理。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top