📄 untitled document.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0065)http://www.flyring.com.cn/chinese/UploadFiles/200442161217766.htm -->
<HTML><HEAD><TITLE>Untitled Document</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.2920.0" name=GENERATOR></HEAD>
<BODY background="" bgColor=#ffffff text=#000000>
<DIV align=center>
<P><FONT color=#0000ff><B>关于非接触式IC智能(射频)卡及其读写设备内核技术的研究与应用开发(连载10) <BR><BR>作者:
上海华东磁记录电子公司 张敏 <BR></B></FONT></P>
<TABLE border=1 borderColor=#ff9900 width="80%">
<TBODY>
<TR>
<TD align=left height=6491 vAlign=top>
<P><BR> ACALL DISPLAY<BR> ACALL H_DISPLAY<BR> ACALL
d500ms<BR> CLR P2.6 ;CLEAR OKLAMP P2.3<BR> ACALL
INIT_DISP_BUF<BR> ACALL DISPLAY<BR> ACALL
H_DISPLAY<BR>;++++++++++++++++++ set up register/ram for Authenticate()
++++++++++++++++++<BR> ;mov 7fh,#04h<BR>;7EH:for future use!<BR> MOV
7EH, #80H ;(7EH) = 80H-->SELECT
KEYSET0 (KS1=0;KS0=0)<BR> <BR> MOV 7DH,#82H ;(7DH): 1)SELECT
KEYA or KEYB (for auth_)<BR> ; 2)SELECT sector ADDRESS
:0-15 (for auth_)<BR> MOV 7CH,#60H ;Select: Auth_ instruction
code <BR>;=========================================================<BR> ACALL
AUTHENTICATION ;MCM AUTHENTICATE
OPERATION<BR>;=========================================================<BR> ACALL
DISPLAY<BR> ACALL H_DISPLAY<BR> ACALL D500MS<BR> CLR
P2.6 ;CLEAR OKLAMP P2.3<BR> ACALL INIT_DISP_BUF<BR> ACALL
DISPLAY<BR> ACALL H_DISPLAY<BR>;++++++++++++++++++ set up register/ram
for Write() ++++++++++++++++++<BR> ; MOV 7EH, #00H ;(7EH):The
first_address(MSB) storing the data which<BR> ;7EH:for future use!;
you want to write the data to the MCM/CARD<BR> ; MOV 7DH,#50h
;(7DH): The first_address(LSB) storing the data which<BR>
; you want to write the data to the MCM/CARD<BR> ; MOV 7CH,#0BH
;Select: written address(block no.):0~~63 <BR> ; LCALL WRITE_KEY_A
<BR>;=========================================================<BR> ;
ACALL write ;MCM write
OPERATION<BR>;=========================================================<BR>
; ACALL DISPLAY<BR> ; ACALL H_DISPLAY<BR> ; ACALL D500MS<BR> ;
CLR P2.6 ;CLEAR OKLAMP P2.3<BR> ; ACALL INIT_DISP_BUF<BR> ;
ACALL DISPLAY<BR> ; ACALL H_DISPLAY<BR>;++++++++++++++++++ set up
register/ram for Read() ++++++++++++++++++<BR> ;MOV 7EH, #00H
;(7EH):The first address(HIGH_byte) which you want to<BR> ;7EH:for
future use! ;read the data from the MCM/CARD into cpu_ram<BR> MOV
7DH,#50h ;(7DH):The first address(LOW_byte) which you want
to<BR> ; read the data from the MCM/CARD into
cpu_ram<BR> MOV 7CH,#08h ;Select:The address(block no.) you want to
read:0-63 <BR>;==========================================================<BR> LCALL
READ ;MCM READ
OPERATION<BR>;=========================================================<BR> ACALL
DISPLAY<BR> ACALL H_DISPLAY<BR> ACALL D500ms<BR> CLR
P2.6 ;CLEAR OKLAMP P2.3<BR> ACALL INIT_DISP_BUF<BR> ACALL
DISPLAY<BR> ACALL
H_DISPLAY<BR>;==========================================================<BR> LCALL
HALT ;MCM HALT
OPERATION<BR>;=========================================================<BR> ACALL
DISPLAY<BR> ACALL H_DISPLAY<BR> ACALL D500MS<BR> CLR P2.6
;CLEAR OKLAMP P2.3<BR> ACALL INIT_DISP_BUF<BR> ACALL
DISPLAY<BR> ACALL
H_DISPLAY<BR>;==========================================================<BR> LCALL
DISP_RD_BLK ;DISPLAY JUST READ BLOCK
VALUES<BR>;=========================================================<BR> LCALL
CLEAR_DISP_RD_BLK_IN_CPU ;CLEAR :FILL WITH #11H
<BR>;=========================================================<BR> CLR
P2.6 ;CLEAR OKLAMP P2.3<BR> ACALL INIT_DISP_BUF<BR> ACALL
DISPLAY<BR> ACALL H_DISPLAY<BR> ;CLR P2.5 ;RESET MCM (-RST=0)
P1.4 <BR> ;SETB P2.4 ;RESET MCM (-CS=1) P1.5 <BR> MOV
A,#80H ;SOFTWARE_RESET MCM<BR> MOV R0,#01H<BR> MOVX @R0,A<BR>
;LJMP
REPEAT<BR> RET<BR>;----------------------------------------------------</P>
<P>D500US: <BR>D500US_LOOP1: <BR> MOV R6,#05H
<BR>D500US_LOOP2:<BR> NOP<BR> NOP<BR> NOP<BR> NOP<BR> NOP<BR> NOP<BR> NOP<BR> NOP<BR> DJNZ
R6,D500US_LOOP2<BR> DJNZ
R7,D500US_LOOP1<BR> RET<BR>;----------------------------------------------------<BR>D500MS:<BR> setb
psw.3<BR> setb psw.4 <BR> MOV R3,#19H <BR>LOOP_1: MOV R4,#32H
<BR>LOOP_2: MOV R5,#64H <BR>LOOP_3: DJNZ R5,LOOP_3 <BR> DJNZ
R4,LOOP_2<BR> DJNZ R3,LOOP_1<BR> clr psw.3<BR> clr psw.4
<BR> RET<BR>;-------------------------- <BR>D2S:<BR> setb
psw.3<BR> setb psw.4 <BR> MOV R6,#06H<BR>LOOP: ACALL
D500MS<BR> DJNZ R6,LOOP<BR> clr psw.3<BR> clr psw.4
<BR> RET<BR>;--------------------------<BR>SPK_ON:<BR> setb
psw.3<BR> setb psw.4 <BR> CLR P2.7<BR> ACALL D500MS<BR> SETB
P2.7<BR> clr psw.3<BR> clr psw.4
<BR> RET<BR>;--------------------------<BR>DISPLAY:<BR> SETB
PSW.3<BR> SETB PSW.4<BR> CLR P2.2 ;SELECT MC14499'S -ENB<BR>
MOV R0,#36H ;DISPLAY BUF FIRST ADDRESS<BR> MOV R1,#05H ;R1 AS A
COUNTER<BR>NEXT_CHAR: MOV A , @R0<BR> SWAP A <BR> ACALL
DISP_ONE<BR> INC R0<BR> DJNZ R1,NEXT_CHAR<BR> SETB
P2.2 ;RELEASE MC14499'S -ENB<BR> CLR PSW.3<BR> CLR PSW.4 <BR>
RET<BR>;-------------------------- <BR>DISP_ONE:<BR> MOV
R2,#04H <BR>NEXT_BIT:SETB P2.1 ;SELECT MC14499'S CLK=1<BR> RLC
A ;ONE BIT MOVE TO PSW.C<BR> MOV P2.0, C <BR> CLR P2.1
;CLK=0<BR> DJNZ R2, NEXT_BIT<BR>
RET<BR>;--------------------------<BR>H_DISPLAY:<BR> SETB
PSW.3<BR> SETB PSW.4<BR> CLR P2.3 ; -ENB <BR> MOV
R0,#31H<BR> MOV R1,#05H<BR> NOP<BR> NOP<BR>H_NEXT_CHAR: MOV A,
@R0<BR> SWAP A<BR> ACALL H_DISP_ONE<BR> INC R0<BR> DJNZ
R1,H_NEXT_CHAR<BR> SETB P2.3 ; -ENB <BR> CLR PSW.3<BR> CLR
PSW.4<BR>
RET<BR>;----------------------------<BR>H_DISP_ONE:<BR> MOV
R2,#04H<BR>H_NEXT_BIT: SETB P2.1 ; CLK<BR> RLC A<BR> MOV P2.0,
C ; DATA <BR> CLR P2.1 ; CLK <BR> DJNZ R2,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -