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

📄 1991.asm

📁 ds1991 读写 加密 解密 经过验证 可以使用
💻 ASM
字号:
;将RAM中30H-37H的数据写入01区SUBKEY的10H-17H中,然后读到RAM中40H-47H。且用串口输出到计算机
;将RAM中60H-67H的数据写入SCRATCHPAD中20H-27H,然后读到RAM中70H-77H中,且用串口输出到计算机
;将RAM中60H-67H的数据写入SCRATCHPAD中20H-27H,然后COPY到密码区1 20H-27H中,然后读RAM中的80H-87H,且用串口输出到计算机
ORG 00h
AJMP MAIN
ORG 0023H
AJMP INTT1	
ORG 40h

DIO BIT p1.0
MAIN:
     MOV R0,#30H     ;存放8个数据到30H-37H
     MOV R1,#01H
     MOV R5,#08H
   WRAM:MOV A,R1
        MOV @R0,A
	INC R1
	INC R0
	DJNZ R5,WRAM
        
        MOV R0,#60H     ;存放8个数据到60H-67H
        MOV R1,#09H
        MOV R5,#08H           

    WRAM2:MOV A,R1
          MOV @R0,A
	  INC R1
	  INC R0
	  DJNZ R5,WRAM2

	LCALL WPASSW
	LCALL WSUBKEY
	LCALL RSUBKEY
        LCALL WSCRATCHPAD   
        LCALL RSCRATCHPAD
	LCALL CSCRATCHPAD
	LCALL RSUBKEY1
 SHOW:                                        ;利用串口通信检验试验的结果
       
       LCALL DELAY
       LCALL DELAY
       LCALL DELAY
       LCALL DELAY
       
       MOV TMOD,#20H                   
       MOV SCON,#40H
        MOV TH1,#0fdH 
        mov tl1,th1
        MOV PCON,#80H
        SETB TR1

        MOV  R6,#08H                         ;******显示40H-47H中的数据
	MOV  R0,#40H
       SEND1: 
              LCALL DELAY
              LCALL DELAY
             MOV A,@R0                       
             MOV SBUF,A
             INC R0
	     
	     LCALL DELAY
	     LCALL DELAY
	     DJNZ R6,SEND1

	MOV R6,#08H                            ;******显示70H-77H中的数据
	MOV R0,#70H
	SEND2: 
	     LCALL DELAY
             LCALL DELAY
	     MOV A,@R0
             MOV SBUF,A
             INC R0
	     
	     LCALL DELAY
	     LCALL DELAY
	     DJNZ R6,SEND2
	     
          MOV R6,#08H                        ;******显示80H-87H中的数据
	  MOV R0,#80H
         SEND3: 
	      LCALL DELAY
             LCALL DELAY
	      MOV A,@R0
             MOV SBUF,A
             INC R0
	     
	     LCALL DELAY
	     LCALL DELAY
	     DJNZ R6,SEND3

      AJMP MAIN
;*********************************************
DELAY:
       MOV R3,#230
      DELAY1:MOV R4,#240
      DELAY2: DJNZ R4,DELAY2
            DJNZ R3,DELAY1
RET
;*********************************************        
INTT1:
   CLR TI
RETI
 
;********************************************
RESET:               ;初始化DS1991
     CLR DIO           ;将P1。0口置低,开始初始化
     MOV R4,#210
  LOOP:NOP   
     DJNZ R4,LOOP

     SETB DIO
     MOV R4,#12H
   
   RESET1: DJNZ R4,RESET1
           MOV R4,#30
   RESET2:
	JNB DIO,RESET3
	DJNZ R4,RESET2
	RERESET:SETB DIO
        MOV A,#0EH
	RET

   RESET3:MOV R4,#64H
          DJNZ R4,$
          MOV R4,#54
   RESET4:JB DIO,RESET5
          DJNZ R4,RESET4
          
   RESET5:SETB DIO
          MOV R4,#180
          DJNZ R4,$
	  MOV A,#0H
	  RET

;***********************************************************
WBYTE: MOV R6,#08H             ;向DS1991写一字节数据
    WB1: CLR DIO
         MOV R4,#05H
         DJNZ R4,$
         CLR C
         RRC A
         MOV DIO,C
	 MOV R4,#50
	 DJNZ R4,$
 	 SETB DIO
	 NOP
	 NOP
         NOP
	 NOP
        DJNZ R6,WB1
       RET
;*******************************************************************
RBYTE: MOV R6,#08H              ;从DS1991读一字节数据
      RB1:CLR DIO
          MOV R4,#02H
          DJNZ R4,$
	  SETB DIO
	  MOV R4,#3
	  DJNZ R4,$
          MOV C,DIO
	  RRC A
	  SETB DIO
          MOV R4,#32
          DJNZ R4,$
          SETB DIO
          MOV R4,#3
	  DJNZ R4,$
          DJNZ R6,RB1
      RET
;***************************************************************************  
RROM:                                   ;读ROM
     INIT: LCALL RESET                            
      ;JNZ INIT                          ;判断初始化是否成功
      MOV A,#33H
      LCALL WBYTE
      MOV R5,#08H
    RCOM1: LCALL RBYTE
	   DJNZ R5,RCOM1
       RET

;*********************************************************************************
WPASSW:  LCALL RROM                       ;向DS1991写密码
      MOV A,#5AH
      LCALL WBYTE 
      MOV A,#40H
      LCALL WBYTE
      MOV A,#40H
      CPL A
      LCALL WBYTE  
      MOV R5,#08H
      MOV R0,#50H
   ROID: LCALL RBYTE           ;存放读出的SUBKEY -1的ID号
        MOV @R0,A
       INC R0
       DJNZ R5,ROID

       MOV R0,#50H           ;写回读出的SUBKEY -1的ID号
       MOV R5,#08H
   WOID:MOV A,@R0
        LCALL WBYTE
        INC R0
        DJNZ R5,WOID

  WNID:                     ;写入新的ID号
         MOV DPTR,#IDTAB
         MOV R3,#00H
         MOV R5,#08H
     WNID1:MOV A,R3
           MOVC A,@A+DPTR  
           LCALL WBYTE
           INC R3
           DJNZ R5,WNID1
  WNPS:                    ;写入新的密码
        MOV DPTR,#PSTAB
        MOV R3,#00H
        MOV R5,#08H
     WNPS1:MOV A,R3
           MOVC A,@A+DPTR
           LCALL WBYTE
           INC R3
           DJNZ R5,WNPS1
      LCALL RESET 
   RET  

     IDTAB: DB 10H,11H,12H,00H,00H,00H,00H,44H
     PSTAB: DB 12H,13H,14H,15H,16H,17H,11H,12H
 ;*****************************************************************************************
  
  
WSUBKEY:LCALL RROM                     ;向SUBKEY 01区10H-17H 的数据写入RAM中30H-37H 的数据
       

        MOV A,#99H
	LCALL WBYTE
	MOV A,#50H
	LCALL WBYTE
        MOV A,#50H
	CPL A
	LCALL WBYTE
        LCALL IDPS

        MOV R0,#30H
        MOV R5,#08H 
   WDATA:MOV A,@R0
         LCALL WBYTE
	 INC R0
         DJNZ R5,WDATA

	 LCALL RESET

RET

;************************************************************************************  
RSUBKEY:                            ;从SUBKEY 01区10H-17H中读取数据存放在RAM 40H-47H
       
       
       LCALL RROM
       MOV A,#66H
       LCALL WBYTE
       MOV A,#50H
       LCALL WBYTE
       MOV A,#50H
       CPL A
       LCALL WBYTE
       LCALL IDPS

       MOV R0,#40H
       MOV R5,#08H
    RDATA:LCALL RBYTE
          MOV @R0,A
          INC R0
	  DJNZ R5,RDATA
     LCALL RESET
 RET
;****************************************************************************************
RSUBKEY1:                            ;从SUBKEY 01区20H-27H中读取数据存放在RAM 80H-87H
       
       
       LCALL RROM
       MOV A,#66H
       LCALL WBYTE
       MOV A,#60H
       LCALL WBYTE
       MOV A,#60H
       CPL A
       LCALL WBYTE
       LCALL IDPS

       MOV R0,#80H
       MOV R5,#08H
    RDATA1:LCALL RBYTE
          INC A
          MOV @R0,A
          INC R0
	  DJNZ R5,RDATA1
     LCALL RESET
 RET
;****************************************************************************************
WSCRATCHPAD:                                               ;写暂存器,20H-27H
           LCALL RROM
   	   MOV A,#96H
	   LCALL WBYTE
	   MOV A,#0E0H
	   LCALL WBYTE
	   MOV A,#0E0H
	   CPL A
	   LCALL WBYTE
	   MOV R0,#60H
	   MOV R5,#08H
       WSC:MOV A,@R0
           LCALL WBYTE
	   INC R0
	   DJNZ R5,WSC
	 LCALL RESET
RET
;*******************************************************************************************
RSCRATCHPAD:                                                  ;读暂存器,存放到70H-77H
        LCALL RROM
	MOV A,#69H
	LCALL WBYTE
	MOV A,#0E0H
	LCALL WBYTE
	MOV A,#0E0H
	CPL A
	LCALL WBYTE
	MOV R0,#70H
	MOV R5,#08H
    RWS:LCALL RBYTE
        MOV @R0,A
	INC R0
	DJNZ R5,RWS
      LCALL RESET
  RET
;*******************************************************************************************
CSCRATCHPAD:                                       ;COPY暂存器中20H-27H到密码区1中20H -27H中
       LCALL RROM
       MOV A,#3CH
       LCALL WBYTE
       MOV A,#40H
       LCALL WBYTE
       MOV A,#40H
       CPL A
       LCALL WBYTE  
   
       MOV A,#95H                     ;写选区代码
       LCALL WBYTE
       MOV A,#95H
       LCALL WBYTE
       MOV A,#0BCH
       LCALL WBYTE
       MOV A,#92H
       LCALL WBYTE
       MOV A,#94H
       LCALL WBYTE
       MOV A,#9EH
       LCALL WBYTE
       MOV A, #99H
       LCALL WBYTE
       MOV A,#0BCH
       LCALL WBYTE

       MOV DPTR,#PSTAB
       MOV R1,#00H
       MOV R5,#08H
   WPSS:MOV A,R1
       MOVC A,@A+DPTR
       LCALL WBYTE
       INC R1
       DJNZ R5,WPSS

       LCALL RESET
 RET

;*******************************************************************************************
 IDPS:MOV R5,#08H                           ;验证密码和ID
      RID: LCALL RBYTE
           DJNZ R5,RID

	   MOV DPTR,#PSTAB
	   MOV R1,#00H
	   MOV R5,#08H
      WPS:MOV A,R1
          MOVC A,@A+DPTR
	  LCALL WBYTE
	  INC R1
          DJNZ R5,WPS

	  RET
      
;********************************************************************************************
END



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -