射频卡读模块使用说明.doc_第1页
射频卡读模块使用说明.doc_第2页
射频卡读模块使用说明.doc_第3页
射频卡读模块使用说明.doc_第4页
射频卡读模块使用说明.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 CLWG182 射频卡读模块使用说明 一 产品简介 CLWG182 为北京长龙科技开发中心的新一代门禁打卡模块 采用了最新设计的电路板 有较强的扩展功能 其特点如下 1 可以选择支持多种通信接口方式 2 复位与独特的硬件看门狗电路工作可靠 不存在死机现象 特别适用于无人值守的工作 场合下使用 3 Wiegand 和 ABA 输出方式采用了双晶体管设计的驱动 可以根据用户需求在外形尺寸 上满足需要 驱动能力较芯片驱动要强 在 9012 TO 92A 封装 驱动的情况下 输出 电流可以达到 200mA 在 SC 59 封装的情况下 输出电流可以达到 100mA 能够支持 对 100 米远的控制器进行打卡操作 4 LED 蜂鸣器均提供了外接口 供用户根据需要引出使用 5 提供了两种封装线性稳压芯片 78L05 78LM05T 的安装孔 供选择使用 6 提供了 E2PROM 的扩展安装定位 供门禁打卡头的名单下载用 需定货时商定使用条 件 7 提供了 SYRIS200 控制器兼容的 RS485 协议 在 RS485 协议下 通过硬件设置 能够 支持对 ID4001 卡或 TEMIC E5550 卡的打卡操作 最重要的是通过对 SYRIS200 协议的 扩展 能够设置 E5550 卡的主密码 辅助密码和块号 8 提供了在 RS232 协议下 利用 WIN98 平台上的用户读写界面 用唤醒后读命令一次 进行 设置 E5550 卡的主密码 辅助密码和块号 以便切换到 Wiegand26 34 和 ABA 下进行打卡操作 9 当模块处于 RS485 工作状态下时 厂家提供了一种转接器 RS232 转 RS485 供用户 选择 能够在 WIN98 平台上的用户读写界面下 利用直接的 RS485 命令 对模块进行 读写操作和系统设定 CLWG18X 系列模块对 E5550 卡的打卡操作须先核对主密码 然后核对第 6 块的辅助密码 在核对正确的情况下 将所须读取的数据 按 WG26 34 的设定 存入卡数据区 在接收到 读卡命令后 将数据发送回控制器 对 ID4001 卡的读操作较 E5550 卡的操作简单 ID4001 卡有 5 个字节 一般只传输后 3 至 4 字节 根据命令 E 而定 二 接口简要说明 在 Wiegand 和 ABA 方式下 红灯常亮 打卡正确后 传输数据 同时绿灯闪一下 蜂鸣 器响一下 在 RS232 方式下 红灯间隙闪一下 通信成功后 绿灯闪一下 同时蜂鸣器响一下 但是 蜂鸣器在鸣叫时 在有输入信号的情况下 会停止鸣叫 转向输入信号的处理 ABA 方式的说明 2 脉冲宽度为 175us 脉冲周期为 350us 第 1 位第 2 位第 3 位第 4 17 位第 18 位第 19 位第 20 位 00B10 进制 数据 FCRC0 每一位由 4 个比特组成 附加 1 个比特的奇校验 常态时 数据线为高 数据传送时 高位在前 低位在后 Serial Txd 9600bps 传送方式 数据线常态时为低 正逻辑 第 1 字节 第 2 11 字节第 12 字节第 13 字节第 14 字节备注 02ASCII 码数据0D0A03不带校验 数据传送时 高字节在前 低字节在后 常态时数据线为低 9600bps Wiegand26 的传输 脉冲宽度为 50us 脉冲间隔为 1ms 第 1 比特为前 12 位的偶校验 第 26 比特为后 12 比特的奇校验 第 2 至 25 比特的传输 为 GK4001 卡的后 3 个字节 高位在前 低位在后 在 TEMIC E5550 卡传送时 发送的数据为当前块的后 3 个字节 Wiegand34 的传输 脉冲宽度为 50us 脉冲间隔为 1ms 第 1 比特为前 16 位的偶校验 第 34 比特为后 16 比特的奇校验 第 2 至 33 比特的传输 为 GK4001 卡的后 4 个字节 高位在前 低位在后 在 TEMIC E5550 卡传送时 发送的数据为当前块的后 4 个字节 ABA 协议的传输 每个 BIT 的宽度为 350us 前 10 个比特周期和最后 5 个比特周期无数据 为 0 起始位 4 比特 为 0BH 数据为 14 位的 10 进制数 结尾是 0FH 及校验位 RS485 方式采用 SYRIS200 控制器的协议 协议见附录 4 在 RS232 方式下 对 GK4001 卡的读写 取块号为 2 使用 Read 命令 即可将数据读出 共 8 个字节 前 3 个字节为 0 后 5 个字节为数据 在 RS232 方式下 可以对 E5550 卡操作 打卡距离大于 6CM 通过硬件开关切换 支持对 ID4001 卡和 E5550 卡的操作 3 附录 1 C N 1 C N 2 CN4 J7 J6J5 CPU CN5LED 蜂鸣 器 R29 背面 图 1 CLWG182 模块外形平视图 注 R29 0R TEMIC E5550 卡 R29 空接 ID4001 卡 J5 J6 J7 的用法见后面说明 J9 J3 背 面 J3 在背面 J9 在 MAX202 的底部 4 附录 2 J5 J6 J7 三组跳线设置表 Giegand 26bit34bit ABA Serial Txd 96 00bps LD FORM RS485RS232 TTL 标准串行 口 含 Wiegand 设 置 RS232 TTL 标准串行口 不含 Wiegand 设 置 J52 3 0 1 2 1 2 3 0 1 2 1 2 3 0 1 2 1 2 3 0 1 2 1 J62 3 0 2 3 0 1 2 1 1 2 1 2 3 0 2 3 0 1 2 1 1 2 1 J72 3 0 2 3 0 2 3 0 2 3 0 1 2 1 1 2 1 1 2 1 1 2 1 红灯持续持续持续持续间隙间隙间隙间隙 绿灯打卡 成功 打卡 成功 打卡成 功 打卡成 功 通信成 功 通信成 功 通信成功通信成功 蜂鸣 器 打卡 成功 打卡 成功 打卡成 功 打卡成 功 备注 CN1 的定义 RS232说明RS485说明LD FORM说明 1 5V电源 5V电源 5V电源 2GND地GND地GND地 3GND地GND地GND地 4PCTXD接 PC 机接收端485ARS485 ASDA数据线 J3 短路 5PCRXD接 PC 机发送端485BRS485 BSCK时钟线 J9 短路 6无 MAX1487无 MAX202无 MAX202 及 MAX1487 CN2 的定义 WG26 34说明ABA说明Serial Txd说明 1 5V电源 5V电源 5V电源 2GND地GND地GND地 3GND地GND地GND地 4BIT0数据 0 线SDA数据线Txd数据发送 5BIT1数据 1 线SCK时钟线 6CP选通线 CN4 1 12V 左边 2 GND 右边 CN5 天线接口 1 AN1 2 AN2 5 R29 0R TEMIC E5550 卡 R29 空接 ID4001 卡 附录 3 RS232 LD FORM 使用的命令 1 初始化 主控模块或 PC 机与 CLWG182 模块建立通讯联接 发送的命令序列 命令码命令块长度命令块校验码 A 00H00H无00H 正确返回的数据序列 返回码数据块长度数据块校验码 B 00H00H无00H 2 从 E5550 射频卡读取自块一到指定块的数据 发送的命令序列 命令码命令块长度命令块 64H01H块号 校验码 A 块号 1 读块一的数据 2 读块一到块二的数据 3 读块一到块三的数据 4 读块一到块四的数据 5 读块一到块五的数据 6 读块一到块六的数据 7 读块一到块七的数据 正确返回的数据序列 返回码数据块长度数据块 00H块号 4块一到指定块的数据 校验码 B 举例 命令序列 64H 01H 02H 67H 返回数据 00H 08H 00H 01H 02H 03H 04H 05H 06H 07H 08H 例子说明 读 E5550 射频卡块一和块二的数据 块一的数据为 00H 01H 02H 03H 块二的数据为 04H 05H 06H 07H 3 向 E5550 射频卡的指定块写入数据 发送的命令序列 命令码命令块长度命令块 65H0AH4 字节长 的密码 块号4 字节长的 数据系列 是否需要密 码 校验码 A 在对 E5550 射频卡进行设置时 有一字位 USEPSW 如果 USEPSW 1 向 E5550 射频卡写入 数据时需要密码 如果 USEPSW 0 向 E5550 射频卡写入数据时 可以不需要密码 命令块中 是否 需要密码 的定义如下 00H 不需要密码 此时命令块中的密码可以为任意值 6 01H 需要密码 其他 无效 块号 1 7 禁止写块 0 正确返回的数据序列 返回码数据块长度数据块校验码 B 00H04H写后再读的数据 举例 命令序列 65H 0AH 88H 88H 88H 88H 01H 00H 01H 02H 03H 01H 6FH 返回数据 00H 04H 00H 01H 02H 03H 04H 例子说明 向 E5550 射频卡的块 1 写入数据系列 00H 01H 02H 03H 写数据时需要密码 88888888H 4 设置 E5550 射频卡 发送的命令序列 命令码命令块长度命令块 66H06H四字节的密码设置信息是否需要密码 校验码 A 在对 E5550 射频卡进行设置时 有一字位 USEPSW 如果 USEPSW 1 对 E5550 射频卡进行 设置时需要密码 如果 USEPSW 0 对 E5550 射频卡进行设置时 可以不需要密码 命令块中 是否 需要密码 的定义如下 00H 不需要密码 此时命令块中的密码可以为任意值 01H 需要密码 其他 无效 设置信息 D7D6D5D4D3D2D1D0 MAXBLK USEPSWAOR无定义无定义无定义 MAXBLK E5550 射频卡发射数据时的最大数据块数 000 E5550 射频卡发射块零 配置区 001 E5550 射频卡发射块一 010 E5550 射频卡发射块一到块二 011 E5550 射频卡发射块一到块三 100 E5550 射频卡发射块一到块四 101 E5550 射频卡发射块一到块五 110 E5550 射频卡发射块一到块六 111 E5550 射频卡发射块一到块七 USEPSW 块七的数据是否作为密码 0 不作为密码 1 作为密码 AOR E5550 射频卡离开天线的作用范围后是否进入睡眠状态 0 不进入睡眠状态 1 进入睡眠状态 当 AOR 1 时 E5550 射频卡刚进入天线的作用范围时 必须先使用唤醒命令 命令码 67H 将 E5550 射频卡唤醒 才能进行正常的读写操作 卡片唤醒后至离开天线的作用范围之前 一直处于唤醒状 态 为了减少命令的使用次数 对于刚进入天线作用范围的 E5550 射频卡 也可使用唤醒后读卡 命令 码 68H 或唤醒后写卡 命令码 69H 直接对卡片进行读写操作 正确返回的数据序列 7 返回码数据块长度数据块校验码 B 00H00H无00H 举例 命令序列 66H 06H 88H 88H 88H 88H E0H 01H 81H 返回数据 00H 00H 00H 例子说明 设置 E5550 射频卡 MAXBLK 7 USEPSW 0 AOR 0 设置时需要密码 密码为 88888888H 5 唤醒 E5550 射频卡 发送的命令序列 命令码命令块长度命令块 67H04H四字节的密码 校验码 A 在对 E5550 射频卡进行设置时 有一字位 AOR 如果 AOR 1 对 E5550 射频卡进行读写之前必须将卡唤 醒 正确返回的数据序列 返回码数据块长度数据块校验码 B 00H00H无00H 举例 命令序列 67H 04H 88H 88H 88H 88H 63H 返回数据 00H 00H 00H 例子说明 唤醒 E5550 射频卡 需要密码为 88888888H 6 唤醒后读 E5550 射频卡 发送的命令序列 命令码命令块长度命令块 68H05H四字节的密码块号 校验码 A 此命令实际上是唤醒 E5550 射频卡和读 E5550 射频卡的组合 先唤醒 然后再读 正确返回的数据序列 返回码数据块长度数据块校验码 B 00H块号 4块一到指定块的数据 举例 命令序列 68H 04H 88H 88H 88H 88H 02 6EH 返回数据 00H 08H 00H 01H 02H 03H 04H 05H 06H 07H 08H 例子说明 先唤醒 E5550 射频卡 然后读块一和块二的数据 块一的数据为 00H 01H 02H 03H 块二的数据为 04H 05H 06H 07H 7 唤醒后写 E5550 射频卡的指定块 命令码为 69H 其它部分与 向 E5550 射频卡的指定块写入数据 的命令完全相同 8 取模块号 8 发送的命令序列 命令码命令块长度命令块校验码 A A1H00H无00H 正确返回的数据序列 返回码数据块长度数据块校验码 B 00H02H46H00H47H 9 读软件版本号 发送的命令序列 命令码命令块长度命令块校验码 A 22H00H无22H 正确返回的数据序列 返回码数据块长度数据块 00H08H版本信息 校验码 B 举例 命令序列 22H 00H 22H 返回数据 00H 08H 56H 45H 52H 31H 2EH 30H 30H 20H 76H 例子说明 读版本号 返回的版本信息为 VER1 00 10 控制红灯 绿灯或蜂鸣器的状态 发送的命令序列 命令码命令块长度命令块 7AH04H设备号单次动作时间动作间隙时间动作次数 设备号 字节的 D0 D1 D2 位分别表示红灯 绿灯和蜂鸣器的选择状态 如果相应位为 1 则对应设 备被选中 1 红灯 2 绿灯 3 红灯和绿灯 4 蜂鸣器 5 红灯和蜂鸣器 6 绿灯和蜂鸣器 7 红灯 绿灯和蜂鸣器 其他 无效 单次动作时间 单位为 10ms 最大值为 2560ms 00H 对应最大值 动作间隙时间 单位为 10ms 最大值为 2560ms 00H 对应最大值 动作次数 最大值为 256 次 00H 对应最大值 正确返回的数据序列 返回码数据块长度数据块校验码 B 00H00H无00H 举例 命令序列 78H 04H 01H 0AH 0AH 05H 78H 返回数据 00H 00H 00H 例子说明 控制红灯先亮 100ms 再灭 100ms 如此动作重复 5 次 注意 返回数据在命令执行完毕后才发给主控方 其等待时间可能很长 11 从 ID4001 射频卡读取数据 9 发送的命令序列 命令码命令块长度命令块 63H01H2 校验码 A 正确返回的数据序列 返回码数据块长度数据块 00H8000 5 字节数据 校验码 B 举例 命令序列 63H 01H 02H 60H 返回数据 00H 08H 00H 00H 00H 062H 0E3H 06H 070H 0C0H 03FH 例子说明 读 ID4001 射频卡的数据为 062H 0E3H 006H 070H 0C0H 10 附录附录 4 4 CLWG182 对于 RS485 的通訊技術手冊 通訊協定通訊協定 Protocol 本通訊協定 Protocol 的主要部分出自於 SYRIS 的一種標準通訊協定 HEAD SOHTYPEIDFC DATA BCC CHECK 8 BITS BCC END 0 x09BCC1BCC20 x0D 起始碼模組型 式 模組型 式 功能碼資料錯誤檢查碼結束碼 1 SOH 和 END 都是一個位元組的控制字元 SOH 控制器端定義為 模組端定義為 END 控制器及模組端均固定為 其中 為十六進位表示法 2 TYPE 為模組型式編號 固定為一個位元組 本型式編號固定為 A 3 ID 為模組端的識別代碼 這一位元組的 ASCII 字元必須是在 1 到 8 的範圍內 假如控制器端傳送之 ID 值與模組位址編號相同時 則該模組將會 接收控制器端所傳送的資料 而模組回應時 也會傳回相同的位址編號 4 FC 是通訊功能碼 Function Code 和資料 DATA 有相關性 固定為一個位元組 這 些資料請參考通訊協定表及相關說明 5 錯誤訊息判斷代碼 Error Code 為兩個位元組 第一個位元組為固定為 第二個位元組為錯誤代碼 請參考錯誤訊息代碼表 6 8 BITS BCC 是所有字元的檢查欄位 為二個位元組 有關 8 BITS BCC 的資訊和 範例程式 請參考附錄 A 7 RS485 傳輸協定請設定為 E 8 1 速率為 19200 錯誤訊息代碼表錯誤訊息代碼表 Error Code Table 11 Data Field Error Code 2 Error Description A無效控制碼 Invalid Function Code Received B資料或訊息格式錯誤 Data or Message Format Error C資料庫錯誤訊息 Database Error Message D同位元檢查碼錯誤 Check Sum Error E記憶體錯誤 Memory Error F設定或讀取保護中資料 Set or Get Protection Data G其他錯誤訊息 Other Error Message Error Code 1 固定為固定為 控制器與模組通訊協定表控制器與模組通訊協定表 Controller 此程序演示主控模块如何以标准通讯方式或 LD FORM 往 CLWG182 模块发送命令 从而 达到操作 E55500 卡的目的 常量定义 ByteWait5us EQU 100 串行口读写重试次数 Cpu1RsqNum EQU 240 CPU1 发命令的重试次数 Cpu1WaitNum EQU 240 CPU1 接收应答的重试次数 FrCPU1Cmd EQU 23h CPU1 的命令帧头 FrCPU2Ack EQU 45H CPU2 的响应帧头 FrCpu2Asw EQU 67H CPU2 的应答帧头 FrCPU1Ack EQU 89H CPU1 的响应帧头 ByteWait2 EQU 240 CommandOK EQU 00H 命令执行成功 输入 输出口线 SPCLK EQU P3 0 软件串行口时钟线 SPBIT EQU P3 1 软件串行口数据线 LEDRED EQU P2 2 LEDGRE EQU P1 7 字节地址 BYTE DEFINITE ICCMD EQU 26H 命令代码寄存器 RETCODE EQU 27H Cpu1CmdLen EQU 28H CPU1 命令帧长度寄存器 Cpu2AswLen EQU 29H CPU2 应答帧长度寄存器 Cpu2AswBuf EQU 2AH CPU2 应答帧存放缓冲区 40H 4FH Cpu1CmdBuf EQU 2AH 数据块 A 寄存器 CNTREG1 EQU 7DH CNTREG2 EQU 7EH OK EQU 00H FAILED EQU 01H 位地址 BIT DEFINITE ORG0000H LJMPMAIN ORG0030H MAIN MOV IE 00H 清中断允许寄存器 20 MOV SP 08H 设置堆栈指针 CLREA LCALLSPTINIT SETBSPBIT SETBSPCLK LINK MOV ICCMD 0 LINK MOV CPU1CMDLEN 0 LCALL SENDCOM NOP LJMP MAIN DEMO MOVICCMD 100 READ E5550 MOVCPU1CMDLEN 1 MOVCPU1CMDBUF 0 6 READ BLOCK 1 TO BLOCK 6 LCALLSENDCOM 此命令执行后 数据保存在 Cpu2AswBuf 中 MOVICCMD 101 WRITE E5550 MOVCPU1CMDLEN 10 MOVCPU1CMDBUF 0 66H SECRET CODE USED IN WRITING MOVCPU1CMDBUF 1 66H MOVCPU1CMDBUF 2 66H MOVCPU1CMDBUF 3 66H MOVCPU1CMDBUF 4 4 BLOCK No MOVCPU1CMDBUF 5 88H DATA WILL BE WRITEN MOVCPU1CMDBUF 6 88H MOVCPU1CMDBUF 7 88H MOVCPU1CMDBUF 8 88H MOVCPU1CMDBUF 9 0 THE FLAG OF NEED SECRET LCALLSENDCOM 此命令执行后 写后回读的数据保存在 Cpu2AswBuf 中 NOP MOVICCMD 100 READ E5550 MOVCPU1CMDLEN 1 MOVCPU1CMDBUF 0 6 READ BLOCK 1 TO BLOCK 6 LCALLSENDCOM 此命令执行后 数据保存在 Cpu2AswBuf 中 MOVICCMD 104 READ E5550 AFTER WAKE UP MOVCPU1CMDLEN 5 MOVCPU1CMDBUF 0 66H SECRET CODE USED IN WAKE UP MOVCPU1CMDBUF 1 66H MOVCPU1CMDBUF 2 66H MOVCPU1CMDBUF 3 66H 21 MOVCPU1CMDBUF 4 6 BLOCK No LCALLSENDCOM 此命令执行后 数据保存在 Cpu2AswBuf 中 MOVICCMD 105 WRITE E5550 AFTER WAKE UP MOVCPU1CMDLEN 10 MOVCPU1CMDBUF 0 66H SECRET CODE USED IN WRITING MOVCPU1CMDBUF 1 66H MOVCPU1CMDBUF 2 66H MOVCPU1CMDBUF 3 66H MOVCPU1CMDBUF 4 1 BLOCK No MOVCPU1CMDBUF 5 88H DATA WILL BE WRITEN MOVCPU1CMDBUF 6 88H MOVCPU1CMDBUF 7 88H MOVCPU1CMDBUF 8 88H MOVCPU1CMDBUF 9 1 THE FLAG OF NEED SECRET LCALLSENDCOM 此命令执行后 写后回读的数据保存在 Cpu2AswBuf 中 MOVICCMD 102 SETUP E5550 MOVCPU1CMDLEN 6 MOVCPU1CMDBUF 0 66H SECRET CODE USED IN WAKE UP MOVCPU1CMDBUF 1 66H MOVCPU1CMDBUF 2 66H MOVCPU1CMDBUF 3 66H MOVCPU1CMDBUF 4 0E0H INFORMATION SETUP MAXBLK 7 USEPSW 0 AOR 0 MOVCPU1CMDBUF 5 1 THE FLAG OF NEED SECRET LCALLSENDCOM MAIN DEMO MOVICCMD 103 WAKE UP E5550 MOVCPU1CMDLEN 4 MOVCPU1CMDBUF 0 66H SECRET CODE USED IN WAKE UP MOVCPU1CMDBUF 1 66H MOVCPU1CMDBUF 2 66H MOVCPU1CMDBUF 3 66H LCALLSENDCOM MOVICCMD 100 READ E5550 MOVCPU1CMDLEN 1 MOVCPU1CMDBUF 0 6 READ BLOCK 1 TO BLOCK 6 LCALLSENDCOM 此命令执行后 数据保存在 Cpu2AswBuf 中 MOVICCMD 101 WRITE E5550 MOVCPU1CMDLEN 10 MOVCPU1CMDBUF 0 66H SECRET CODE USED IN WRITING 22 MOVCPU1CMDBUF 1 66H MOVCPU1CMDBUF 2 66H MOVCPU1CMDBUF 3 66H MOVCPU1CMDBUF 4 1 BLOCK No MOVCPU1CMDBUF 5 88H DATA WILL BE WRITEN MOVCPU1CMDBUF 6 88H MOVCPU1CMDBUF 7 88H MOVCPU1CMDBUF 8 88H MOVCPU1CMDBUF 9 1 THE FLAG OF NEED SECRET LCALLSENDCOM 此命令执行后 写后回读的数据保存在 Cpu2AswBuf 中 MOVICCMD 104 READ E5550 AFTER WAKE UP MOVCPU1CMDLEN 5 MOVCPU1CMDBUF 0 66H SECRET CODE USED IN WAKE UP MOVCPU1CMDBUF 1 66H MOVCPU1CMDBUF 2 66H MOVCPU1CMDBUF 3 66H MOVCPU1CMDBUF 4 6 BLOCK No LCALLSENDCOM 此命令执行后 数据保存在 Cpu2AswBuf 中 MOVICCMD 105 WRITE E5550 AFTER WAKE UP MOVCPU1CMDLEN 10 MOVCPU1CMDBUF 0 66H SECRET CODE USED IN WRITING MOVCPU1CMDBUF 1 66H MOVCPU1CMDBUF 2 66H MOVCPU1CMDBUF 3 66H MOVCPU1CMDBUF 4 1 BLOCK No MOVCPU1CMDBUF 5 88H DATA WILL BE WRITEN MOVCPU1CMDBUF 6 88H MOVCPU1CMDBUF 7 88H MOVCPU1CMDBUF 8 88H MOVCPU1CMDBUF 9 1 THE FLAG OF NEED SECRET LCALLSENDCOM 此命令执行后 写后回读的数据保存在 Cpu2AswBuf 中 MOVICCMD 102 SETUP E5550 MOVCPU1CMDLEN 6 MOVCPU1CMDBUF 0 66H SECRET CODE USED IN WAKE UP MOVCPU1CMDBUF 1 66H MOVCPU1CMDBUF 2 66H MOVCPU1CMDBUF 3 66H MOVCPU1CMDBUF 4 0E0H INFORMATION SETUP MAXBLK 7 USEPSW 0 AOR 0 MOVCPU1CMDBUF 5 1 THE FLAG OF NEED SECRET LCALLSENDCOM 23 NOP 读 IC 卡 命令 Cpu1CmdBuf CmdRdIcCard IC 卡首地址 读取字节数 返回 Cpu2AswBuf CommandOK 数据 数据 sendcom LCALLCpu1SendCommand JCRdIcCd err MOVA RETCODE CJNEA CommandOK RdIcCd err RdicCd OK CLRC SJMPRdIcCd exit RdIcCd err SETBC RdIcCd exit RET CPU10 命令 CPU2 执行命令并将处理结果返回给 CPU1 01 R0 R1 R7 Cpu1SendCommand LCALLInitSP CLREA SETBSPBIT SETBSPCLK MOVR4 Cpu1RsqNum 第一次握手 Cpu1SD1 MOVR5 FrCpu1Cmd 发送 Cpu1 的命令帧头 LCALLSendCharSP JCCpu1SD3 LCALLReceCharSP 接收 CPU2 的响应帧头 JCCpu1SD3 CJNER5 FrCpu2Ack Cpu1SD3 LJMPCpu1SD4 握手成功 Cpu1SD3 DJNZR4 Cpu1SD1 重复握手过程 LJMPCpu1SD Err 握手失败 24 Cpu1SD4 MOVA ICCMD MOVR5 A LCALLSendCharSP MOVR5 CPU1CMDLEN 取 CPU1 命令帧长度 XCHA R5 MOVR4 A XCHA R5 XRLA R5 LCALLSendCharSP 发送 CPU1 的命令 XCHA R4 JZCPU1SD6 XCHA R4 MOVR0 Cpu1CmdBuf Cpu1SD5 XCHA R0 MOVR5 A XCHA R0 XRLA R5 INC R0 LCALL SendCharSP 发送 CPU1 的命令帧 JC Cpu1SD Err DJNZ R4 Cpu1SD5 LJMPCPU1SD7 CPU1SD6 XCHA R4 CPU1SD7 MOVR5 A SEND CHECKSUM LCALL SendCharSP JC Cpu1SD Err Wait Some Moment CPU1 PROCESS PROCEDURE MOVR4 Cpu1WaitNum Cpu1SD10 MOVR1 20 Cpu1SD11 LCALLReceCharSP 第二次握手 JCCpu1SD12 CJNER5 FrCPU2Asw Cpu1SD12 判是否收到 CPU2 的应答帧头 MOVR5 FrCPU1Ack 25 LCALLSendCharSP 发送 CPU1 的响应帧头 JCCpu1SD ErrA LJMPCpu1SD13 Cpu1SD12 DJNZR1 Cpu1SD11 DJNZR4 Cpu1SD10 SJMPCpu1SD ErrB Cpu1SD13 LCALLReceCharSP 接收 CPU2 应答帧长度 JCCpu1SD Err1 CLRA XRLA R5 MOVRETCODE A LCALLReceCharSP 接收 CPU2 应答帧长度 MOVCPU2ASWLEN R5 XRLA R5 MOVR4 CPU2ASWLEN XCHA R4 JZCPU1SD15 XCHA R4 MOVR0 Cpu2AswBuf CPU2 应答帧首地址 Cpu1SD14 LCALLReceCharSP 接收命令帧 JCCpu1SD Err2 XCHA R5 MOV R0 A XCHA R5 XRLA R5 INC R0 DJNZR4 Cpu1SD14 LJMPCPU1SD16 CPU1SD15 XCHA R4 CPU1SD16 LCALLReceCharSP 收校验和 JCCpu1SD Err3 XRLA R5 JNZ Cpu1SD Err4 校验和不对 Cpu1SD OK 成功 CLRC MOVRETCODE OK 26 LJMPCpu1SD Exit Cpu1SD ErrA 失败 SETBC MOVRETCODE FAILED LJMPCPU1SD EXIT Cpu1SD ErrB 失败 SETBC MOVRETCODE FAILED LJMPCPU1SD EXIT Cpu1SD Err 失败 SETBC MOVRETCODE FAILED LJMPCPU1SD EXIT Cpu1SD Err1 失败 SETBC MOVRETCODE FAILED SJMPCPU1SD EXIT Cpu1SD Err2 失败 SETBC MOVRETCODE FAILED SJMPCPU1SD EXIT Cpu1SD Err3 失败 SETBC MOVRETCODE FAILED SJMPCPU1SD EXIT Cpu1SD Err4 失败 SETBC MOVRETCODE FAILED SJMPCPU1SD EXIT Cpu1SD Exit 退出 RET 初始化软件串行口 InitSP SETB SPCLK SETB SPBIT RET 硬件串行口发送子程序 27 入口 R5 待发字符 出口 C 0 成功 C 1 失败 A R6 SendCharSP PUSHACC SETBSPCLK 发起始位 CLRSPBIT LCALL RSClkDownUp MOVA R5 MOVR6 08 SdcSP1 RRCA MOVSPBIT C LCALL RSClkDownUp DJNZR6 SdcSP1 Send 8 data Bits SETBSPBIT Send 1 stop bits LCALL RSClkDownUp CLRC POPACC RET 硬件串行口接收子程序 出口 A 字符 C 0 成功 C 1 失败 R5 R6 ReceCharSP PUSHACC SETBSPCLK SETBSPBIT MOVR6 ByteWait2 Wait Start Bit RecSP1 NOP JBSPCLK RecSP10 JBSPBIT RecSPErr SJMPRecSP11 RecSP10 DJNZR6 RecSP1 SJMPRecSPErr RecSP11 MOVR5 08 8 Data Bits SdcSP2 MOVR6 ByteWait2 Wait CLK from 0 To 1 RecSP20 NOP JBSPCLK RecSP21 DJNZR6 RecSP20 SJMPRecSPErr 28 RecSP21 MOVR6 ByteWait2 RecSP22 JBSPCLK RecSP23 Wait CLK from 1 TO 0 MOVC SPBIT RRCA SJMPRecSP24 RecSP23 DJNZR6 RecSP22 SJMPRecSPErr RecSP24 DJNZR5 SdcSP2 MOVR5 A MOVR6 ByteWait2 Wait CLK from 0 To 1 RecSP3 NOP JBSPCLK RecSP30 DJNZR6 RecSP3 SJMPRecSPErr RecSP30 MOVR6 ByteWait2 RecSP31 JBSPCLK RecSP32 Wait CLK from 1 TO 0 JBSPBIT RecSPOK Stop Bit SJMPRecSPErr RecSP32 DJNZR6 RecSP31 SJMPRecSPErr RecSPOK CLRC SJMPRecSPExit RecSPErr SETBC SJMPRecSPExit RecSPExit POPACC RET RSCLKDownUp NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP 29 NOP NOP CLRSPCLK NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP SETBSPCLK NOP RET rsCLKDownUp1 时钟先置 0 后置 1 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP CLRSPCLK NOP NOP NOP NOP NOP NOP NOP NOP 30 NOP NOP NOP NOP NOP NOP nop nop SETBSPCLK ret CLKDownUp 时钟先置 0 后置 1 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论