⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untitled document.htm

📁 内附IC读卡器设计方案,该设计使用89C52和MCM200,里面有详细的设计过程及程序代码,相信有一定IC卡经验
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!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--&gt;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 + -