📄 s6700.txt
字号:
基于S6700芯片与ISO/IEC25693标准的读卡器设计,起始位子程序,结束位子程序
接收一个字节,数据发送子程序
VICC通信部分程序如下:
1) 起始位子程序
S1: SETB SCLOCK
NOP
NOP
SETB DIN
NOP
NOP
CLR SCLOCK
NOP
NOP
CLR DIN
RET
2) 结束位子程序
ES1: SETB DIN
NOP
NOP
SETB SCLOCK
NOP
NOP
CLR DIN
NOP
NOP
CLR SCLOCK
RET
3) 时钟线切换子程序
TRAN1:
CLR SCLOCK
CLR DIN
NOP
NOP
SETB DIN
NOP
NOP
CLR DIN
NOP
NOP
SETB DIN
SETB SCLOCK ;MCU I/O口设成输入
RET
TRAN2:
CLR SCLOCK
CLR DIN
NOP
NOP
SETB DIN
NOP
NOP
CLR DIN
RET
4)发送一个字节子程序
S_BYTE:
MOV R7,#08H ;数据是8位
SBYTE1:
JNB DOUT, SBYTE2 ; FIFO管理
CLR DIN
AJMP SBYTE1 ;DOUT=1, WAITING......
SBYTE2:
RRC A
MOV DIN, C ;发送一位
NOP
NOP
SETB SCLOCK
NOP
NOP
CLR SCLOCK
DJNZ R7, SBYTE1
RET
5)接收一个字节
R_BYTE:
MOV R0, #08H ;数据是8位
RBYTE2:
MOV C, SCLOCK
JC RBYTE2 ;等待下降沿
RBYTE3:
MOV C, SCLOCK
JNC RBYTE3 ;等待上升沿
NOP
NOP
MOV C, DOUT ;上升沿到,采样一位
RRC A
DJNZ R0, RBYTE2
RET
5)数据发送子程序
SEND:
PUSH IE
MOV IE,#10010000B ;只开串口中断
LCALL TRAN2 ;获得SCLOCK控制权
LCALL S1 ;起始位
NOP
NOP
MOV R0,#CMDBUFFER
MOV A,@R0
LCALL SN_BYTE ;发送命令字节2D,MSB FIRST
INC R0
DEC R2 ;CMDBUFFER中欲发送数据长度
MOV R7,#64H
LCALL DELAY ;延时 100US
SEND1:
MOV A,@R0
LCALL S_BYTE ;发送其他数据,LSB FIRST
INC R0
DJNZ R2,SEND1
LCALL ES1 ;终止位
POP IE
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -