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

📄 sle4.asm

📁 c语言和汇编语言混合编程实例详解.rar
💻 ASM
字号:
;这是写SLE4442卡程序,文件名为SLE4.ASM
;功能: 校验密码(55AA55),将88H写入地址f5H,或将ea60H写入地址f0H和f1H,
;     或将F4240H(1000000)写入地址f0H和f1H,f2H,f3H; ram(00-FFH,0-31BIT,0-03H)
;要写存储器,首先必须校验密码,密码校验通过后,方可写入.
;(1) 密码校验程序是 VERIFI --校验密码(55AA55)
;(2) 写主存储器程序是 WRMAI1(1 BYTE),WRMAI2(2 BYTE),WRMAI4(4 BYTE)
;(3) 写保护存储器程序是 WRPROT
;CODE 55AA55H

RST BIT P1.0
CLK BIT P1.1
IO  BIT P1.2
VDD BIT P1.3
FLAG BIT 0D5H

CBYTE1 EQU 30H
ABYTE2 EQU 00H
DBYTE3 EQU 55H

                 ORG 0000H
   	         LJMP MAIN
	         ORG 0040H
MAIN:            MOV SP,#30H
                 CLR EA
                 CLR VDD
                 CLR FLAG
                 LCALL RESET
                 LCALL VERIFI
                 LCALL WRMAI1
                 ;LCALL WRMAI2
                 ;LCALL WRMAI4
                 ;LCALL WRPROT
                 SETB VDD
                 SJMP $
RESET:    MOV R1, #32
	  CLR        RST
	  CLR        CLK
	  LCALL      DY
	  SETB       RST
	  LCALL      DY
	  SETB       CLK
	  LCALL      DY
	  CLR        CLK
	  LCALL      DY
	  CLR        RST
RESET0:   SETB       CLK
	  LCALL      DY
	  CLR        CLK
	  LCALL      DY
	  DJNZ       R1, RESET0
	  RET
WCOMM:    LCALL      START
	  MOV A, #CBYTE1
	  LCALL      WBYTE
	  MOV A, #ABYTE2
          LCALL      WBYTE
          MOV A, #DBYTE3
          LCALL      WBYTE
	  LCALL      STOP
	  RET
START:    SETB       IO
          LCALL      DY
          SETB       CLK
          LCALL      DY
          CLR        IO
          LCALL      DY
          CLR        CLK
          RET
STOP:     CLR        CLK
	  LCALL      DY
	  CLR        IO
	  LCALL      DY
	  SETB       CLK
	  LCALL      DY
	  SETB       IO
	  RET
WBYTE:    MOV        R3,#08H
WBYTE1:   RRC        A
	  MOV        IO,C
	  SETB       CLK
	  LCALL      DY
	  CLR        CLK
	  LCALL      DY
	  DJNZ       R3,WBYTE1
	  RET
PCLOCK:   MOV        R1,#32
PCLOCK1:  CLR        CLK
	  LCALL      DY
	  SETB       CLK
	  LCALL      DY
	  DJNZ       R1,PCLOCK1
	  CLR        CLK
	  LCALL      DY
          RET
RRQ:      MOV R0,#40H
          MOV R4,#10H
RDATA:    LCALL      RBYTE
	  MOV        @R0,A
	  INC        R0
	  DJNZ       R4,RDATA
	  CLR        CLK
	  LCALL      DY
          RET
RRQ1:     LCALL      RBYTE
	  MOV        R7,A
          LCALL      RBYTE
	  MOV        R6,A
          LCALL      RBYTE
	  LCALL      RBYTE
	  CLR        CLK
	  LCALL      DY
          RET
RBYTE:    MOV        R3,#08H
RBYTE1:   CLR        CLK
	  LCALL      DY
	  SETB       CLK
	  MOV        C,IO
	  RRC        A
	  LCALL      DY
	  DJNZ       R3,RBYTE1
	  RET
DY:       MOV        R2,#40H
DY1:      NOP
          DJNZ       R2,DY1
	  RET
WCOMM2:   LCALL      START
	  MOV A, R4
	  LCALL      WBYTE
	  MOV A, R5
          LCALL      WBYTE
          MOV A, R6
          LCALL      WBYTE
	  LCALL      STOP
	  RET

NOPASS:   SETB FLAG
          RET
VERIFI:   MOV R4,#31H    ;校验密码(55aa55)
          MOV R5,#00H
          MOV R6,#00H
          LCALL WCOMM2
          LCALL  RRQ1
          MOV A,R7
          JZ NOPASS
          MOV R4,#39H
          MOV R5,#00H
          MOV R6,#05H   ;5
          LCALL WCOMM2
          MOV R1,#123
          LCALL PCLOCK1
          MOV R4,#33H
          MOV R5,#01H
          MOV R6,#055H
          LCALL WCOMM2
          MOV R1,#02
          LCALL PCLOCK1
          MOV R4,#33H
          MOV R5,#02H
          MOV R6,#0AAH
          LCALL WCOMM2
          MOV R1,#02
          LCALL PCLOCK1
          MOV R4,#33H
          MOV R5,#03H
          MOV R6,#055H
          LCALL WCOMM2
          MOV R1,#02
          LCALL PCLOCK1
          MOV R4,#39H
          MOV R5,#00H
          MOV R6,#0FFH
          LCALL WCOMM2
          MOV R1,#254
          LCALL PCLOCK1
          MOV R4,#31H
          MOV R5,#00H
          MOV R6,#00H
          LCALL WCOMM2
          LCALL  RRQ1
          MOV A,R7
          ANL A,#07H
          CJNE A,#07H,NOPASS
          RET
 WRMAI1:  MOV R4,#38H   ;将88H写入地址f5h
          MOV R5,#0F5H
          MOV R6,#088H
          LCALL WCOMM2
          MOV R1,#254
          LCALL PCLOCK1
          MOV R4,#30H
          MOV R5,#0F0H
          MOV R6,#00H
          LCALL WCOMM2
          MOV R0,#40H
          MOV R4,#16
          LCALL   RDATA
          RET
  WRMAI2: MOV R4,#38H    ;将ea60h写入地址f0h和f1h
          MOV R5,#0F0H
          MOV R6,#60H
          LCALL WCOMM2
          MOV R1,#254
          LCALL PCLOCK1
          MOV R4,#38H
          MOV R5,#0F1H
          MOV R6,#0EAH  ;60000=EA60H
          LCALL WCOMM2
          MOV R1,#254
          LCALL PCLOCK1
          MOV R4,#30H
          MOV R5,#0F0H
          MOV R6,#00H
          LCALL WCOMM2
          LCALL   RRQ1
          RET
  WRMAI4: MOV R4,#38H    ;将F4240H(1000000)写入地址f0h和f1h,f2h,f3h
          MOV R5,#0F0H
          MOV R6,#40H
          LCALL WCOMM2
          MOV R1,#254
          LCALL PCLOCK1
          MOV R4,#38H
          MOV R5,#0F1H
          MOV R6,#42H
          LCALL WCOMM2
          MOV R1,#254
          LCALL PCLOCK1
          MOV R4,#38H
          MOV R5,#0F2H
          MOV R6,#0FH
          LCALL WCOMM2
          MOV R1,#254
          LCALL PCLOCK1
          MOV R4,#38H
          MOV R5,#0F3H
          MOV R6,#00H
          LCALL WCOMM2
          MOV R1,#254
          LCALL PCLOCK1
          MOV R4,#30H
          MOV R5,#0F0H
          MOV R6,#00H
          LCALL WCOMM2
          LCALL   RRQ1
          RET
  WRPROT: MOV R4,#3CH    ;将0ffh写入保护存储器(地址00h)
          MOV R5,#00H
          MOV R6,#0FFH
          LCALL WCOMM2
          MOV R1,#254
          LCALL PCLOCK1
          MOV R4,#34H
          MOV R5,#00H
          MOV R6,#00H
          LCALL WCOMM2
          MOV R0,#40H
          MOV R4,#4
          LCALL   RDATA
          RET
          END

⌨️ 快捷键说明

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