1-wire系统中TM卡的单片机等效替换方案介绍
本文引用地址:https://www.eepw.com.cn/article/171119.htm
对应于从机,是等待主机命令。从机等待主机命令的中断服务程序流程如图6所示。
图6 从机等待主机命令的中断服务程序流程
最后是主机读数据时序,如图7所示。主机总线在开始时刻从高电平拉至低电平时,总线只需保持低电平1~7 μs。之后在tLOWR时刻释放总线,一般在tRDV时刻采样总线(15 μs处),读时间隙在tLOWR与tRDV之间有效。从机必须在tRDV时刻前拉高或拉低总线,主机在tRDV时刻采样,并在60~120 μs内释放总线。
图7 主机读数据时序
对从机来说,则为发送64位ID处理。程序处理的难点在于从机必须在15 μs之前拉高或拉低总线,以供主机在15 μs处采样总线。程序通过判断位地址00H处的状态来实现此功能。通过判断位地址01H处的状态来确定发送位0或发送位1。从机发送64位ID处理的中断服务程序流程如图8所示。
图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//判断字节发送完否
评论