📄 sle4442.asm
字号:
;*******************************************************************
;注意:单片机的晶振频率选用11.0592MHZ
;在使用本程序前应先写好IC卡和EEPROM的数据
;在插入合法的卡(IC卡内从20H处开始的数据与EEPROM中20H开始的数据相同)
;则继电器通电LED亮,否则继电器断电LED灭
;*******************************************************************
SLA DATA 70h ;器件从地址
SUBA DATA 71h ;器件子地址
NUMBYTE DATA 72h ;读/写的字
ACK BIT 20H ;位变量ACK
;定义常量:
SDA BIT P1.5
SCL BIT P1.6 ; 总线位
SW BIT P1.7 ;继电器控制脚
MTD EQU 40H ;发送数据缓冲区首址
MRD EQU 40H ;接收数据缓冲区首址
ORG 8000H
AJMP MAIN
ORG 8100H
MAIN:
MOV SP,#60H ;设置栈底
Read_Insert_Card:
MOV ByteNum,#04H
MOV StartAdr,#20H ;从主存储区的20地址读4个字节
LCALL ReadCard
;在此可查看内存ReadBuf中的数据是否合法
MOV SLA,#0a0H ;24WC02的器件地址
MOV SUBA,#20h
MOV NUMBYTE,#4h
LCALL IRDNBYTE ;从24WC02的20单元开始处读取4字节的数据
;放在MRD内
;在此可查看内存中MRD的数据是否合法
MOV R7,#4
MOV R1,#MRD
MOV R0,#ReadBuf
;-----------------------------------------------
;以下为比较从EEPROM中读出的数据和IC卡中读出的数
;据是否相同
;-----------------------------------------------
CMPLOOP:
MOV A,@R0
MOV R6,A
MOV A,@R1
XRL A,R6
INC R0
INC R1
JNZ NOEQU
DJNZ R7,CMPLOOP
;------------数据相同则开继电器
SNEQU:
CLR SW
JMP TESTEND
NOEQU:
;------------数据不同则关继电器
SETB SW
JMP TESTEND
TESTEND:
JMP TESTEND
$INCLUDE(SLE4442.INC) ;包含SLE4442驱动程序
$INCLUDE(VI2C_24A.inc) ;包含IIC驱动程序
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -