公交非接触IC卡读写器(8)

2019-04-21 23:00

DJNZ R4,WRITE0 ;未写完继续 RET

;************PSC校验子程序*************** COMP:

MOV R7,#31H ;设置读加密存储器命令控制字

MOV R6,#00H ;设置读加密存储器命令地址字(00H为错误计数器) MOV R5,#00H ;设置读加密存储器命令数据字(任意) LCALL COMMAND ;送读加密存储器命令 LCALL SHIN ;读错误计数器

MOV 22H,A ;错误计数器值暂存22H单元 LCALL SHIN ;继续读入加密存储器后3个字节 MOV 23H,A LCALL SHIN MOV 24H,A LCALL SHIN MOV 25H,A MOV A,22H

SETB IO ;附加一个脉冲,置数据线为高 LCALL DELAY_4μs SETB CLK

LCALL DELAY_4 μs CLR CLK

JB ACC.0,NEXT0 ;判断错误计数器中是否还有“1” JB ACC.1,NEXT1 ;如有“1”则减去一个“1” JB ACC.0,COMP2

LJMP EXIT ;错误计数器为全“0”退出 NEXT0:MOV R5,#06H MOV R4,#07H AJMP COMP0

NEXT1:MOV R5,#04H MOV R4,#06H AJMP COMP0

NEXT2: MOV R5,#00H MOV R4,#04H

COMP0: MOV R7,#39H ;设置修改加密存储器命令控制字

MOV R6,#00H ;设置修改加密存储器命令地址字(错误计数器) LCALL COMMAND ;送修改加密存储器命令(错误计数器减一个1) LCALL OPERA123 ;处理模式

MOV R7,#33H ;设置PSC校验命令控制字 MOV R6,#01H ;设置PSC校验命令地址字 MOV R5,#PSC1 ;取PSC第1个字节 LCALL COMMAND ;送PSC校验命令给卡 LCALL OPERA123 ;处理模式

MOV R7,#33H ;设置PSC校验命令控制字

MOV R6,#02H ;设置PSC校验命令地址字 MOV R5,#PSC2 ;取PSC第2个字节 LCALL COMMAND ;送PSC校验命令给卡 LCALL OPERA123 ;处理模式

MOV R7,#33H ;设置PSC校验命令控制字 MOV R6,#03H ;设置PSC校验命令地址字 MOV R5,#PSC3 ;取PSC第3个字节 LCALL COMMAND ;送PSC校验命令给卡 LCALL OPERA123 ;处理模式

MOV R7,#39H ;设置修改加密存储器命令控制字

MOV R6,#00H ;设置修改加密存储器命令地址字(错误计数器) MOV R5,R4 ;取修改加密存储器命令数据字(擦除错误计数器) LCALL COMMAND ;送修改加密存储器(擦除错误计数器)命令给卡 LCALL OPERA123 ;处理模式

MOV R7,#31H ;设置读加密存储器命令控制字

MOV R6,#00H ;设置读加密存储器命令地址字(错误计数器) MOV R5,#00H ;设置读加密存储器命令数据字(任意) LCALL COMMAND ;送读加密存储器命令给卡 LCALL SHIN ;读加密存储器的错误计数器 MOV 22H,A

LCALL SHIN ;读加密存储器的后3个字节 MOV 23H,A LCALL SHIN MOV 24H,A LCALL SHIN MOV 25H,A MOV A,22H

SETB IO ;附加一个脉冲,置数据线为高 LCALL DELAY_4μs SETB CLK

LCALL DELAY_4μs CLR CLK EXIT: RET

;************命令子程序*************** ;该子程序送出3字节的SLE4442命令

;入口参数:R7为控制字,R6为地址字,R5为数据字 ;调用时CLK为低,IO为高;返回时CLK为高,IO为高 COMMAND: SETB CLK

LCALL DELAY_12μs CLR IO

LCALL DELAY_4μs CLR CLK

LCALL DELAY_4μs

MOV A,R7 LCALL SHOUT MOV A,R6 LCALL SHOUT MOV A,R5 LCALL SHOUT LCALL DELAY_4μs

CLR IO

LCALL DELAY_4μs SETB CLK

LCALL DELAY_4 μs SETB IO RET

;*************串行输出一个字节子程序*********** SHOUT: PUSH B

MOV B,#08H X42: RRC A MOV IO,C NOP

SETB CLK

LCALL DELAY_4μs CLR CLK

LCALL DELAY_4μs DJNZ B,X42 POP B RET

;*************串行输入一个字节子程序***************** SHIN:

CLR CLK PUSH B

MOV B,#08H

X43: LCALL DELAY_4 μs SETB CLK MOV C,IO RRC A

LCALL DELAY_4 μs CLR CLK DJNZ B,X43 POP B RET

;*********处理模式1子程序************ OPERA123:

MOV R7,#123D

CLR CLK CLR IO

LCALL DELAY_4μs OPERA0:SETB CLK LCALL DELAY_4μs CLR CLK

LCALL DELAY_4μs OPERA0:SETB CLK

LCALL DELAY_4μs CLR CLK LCALL DELAY_4μs

DJNZ R7,OPERA0 SETB IO

LCALL DELAY_4 μs SETB CLK

LCALL DELAY_4 μs CLR CLK RET

;**************处理模式2子程序*********** OPERA254:

MOV R7,#254D CLR CLK CLR IO

LCALL DELAY_4 μs OPERA1:SETB CLK

LCALL DELAY_4 μs CLR CLK

LCALL DELAY_4 μs DJNZ R7,OPERA1 SETB IO

LCALL DELAY_4 μs SETB CLK

LCALL DELAY_4 μs CLR CLK RET

;*************复位子程序*************** RESET:

CLR RST CLR CLK CLR IO

LCALL DELAY_12 μs LCALL DELAY_12 μs SETB RST

LCALL DELAY_12 μs

SETB CLK

LCALL DELAY_12 μs CLR CLK

LCALL DELAY_12 μs CLR RST

LCALL DELAY_12 μs MOV B,#20H RESET0: SETB CLK

LCALL DELAY_12 μs CLR CLK

LCALL DELAY_12 μs DJNZ B,RESET0 SETB IO RET

;**************上电控制子程序*********** PWRON:

CLR RST CLR IO CLR CLK

LCALL RECOG CLR RST CLR CLK

LCALL DELAY_10 ms CLR PWR CLR IO RET

RECOG: JB ICSW,RECOG LCALL DELAY_10 ms JB ICSW,RECOG RET

;***********下电控制子程序************** PWROFF:

CLR RST CLR CLK CLR IO

LCALL DELAY_10 ms SETB PWR RET END

;***********键盘扫描程序**************** KEY: MOV P2,#0FH ;用反转法查键 MOV A,P2 ANL A,#0FH MOV B,A


公交非接触IC卡读写器(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017-2020周期竞技健美操评分规则修订、重点(1)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: