AT88SC153 and AT88SC1608 encryption card
- Categories:Thesis
- Author:
- Origin:
- Time of issue:2007-12-04 17:08
(Summary description)AT88SC153 and AT88SC1608 encryption card
AT88SC153 and AT88SC1608 encryption card
(Summary description)AT88SC153 and AT88SC1608 encryption card
- Categories:Thesis
- Author:
- Origin:
- Time of issue:2007-12-04 17:08
- Views:
51 Microcontroller Program
(Quoted from Beijing Kalienton Electronic Technology Co., Ltd.)
; --------------------------------------------------------------------
; ATMEL 88SC1608 Read-Write Subroutine
; P1.0 - Power On P1.1 - SCL P1.2 - SDA P1.3 - RES
; P1.4 - P1.5 - P1.6 - P1.7
; --------------------------------------------------------------------
COUNT EQU 3AH
COUNT1 EQU 3BH
; AUTHENTICATION
RI EQU 3DH
SI EQU 3EH
TI EQU 3FHR_I_ADDRESS EQU 40H
S_I_ADDRESS EQU 40H
T_I_ADDRESS EQU 40H
R_0 EQU R_I_ADDRESS
R_1 EQU R_I_ADDRESS+1
R_2 EQU R_I_ADDRESS+2
R_3 EQU R_I_ADDRESS+3
R_4 EQU R_I_ADDRESS+4
R_5 EQU R_I_ADDRESS+5
R_6 EQU R_I_ADDRESS+6
R_7 EQU R_I_ADDRESS+7
KEY EQU 48H
TEMP EQU 49H
BIT0 EQU 4AH
SI_ EQU 4BH
LASTCALC EQU 4CH
Q1_T EQU 4DH
Q2_T EQU 4EH
NBRE EQU 4FH
R_I_O_ADDRESS EQU 0B0H
S_I_O_ADDRESS EQU 0B8H
T_I_O_ADDRESS EQU 0C0H
CRYPTO_ADDRESS EQU 0D0H ; CI
GC_ADDRESS EQU 0D8H ; GRAINE
Q0_ADDRESS EQU 0E0H ; HOST
Q1_ADDRESS EQU 0E8H
Q2_ADDRESS EQU 0F0H
; AUTHENTICATION SUBS=f2
; ----------------------------------------------
; CALCULSTATE: IN: RI/SI/TI
; OUT: R_I(0-7)/S_i(0-7)/T_i(0-4)
; USED REGISTERS:R1 R0 R2 A TEMP
; ----------------------------------------------
CALCULSTATE: MOV R1,#R_I_O_ADDRESS
MOV R0,#R_I_ADDRESS
MOV R2,#8
CALS001: MOV A,@R1
MOV @R0,A
INC R1
INC R0
DJNZ R2,CALS001 ; LOAD R_I_OUT MEMORY DATAMOV A,R_6
MOV R2,#4
CALS002: RR A
DJNZ R2,CALS002
ANL A,#1
MOV BIT0,A
MOV A,R_6
RL A ; R_6*2
ORL A,BIT0
ANL A,#1FH
MOV TEMP,A
MOV R_6,R_5
MOV R_5,R_4
MOV R_4,R_3
MOV A,R_2
XRL A,RI
MOV R_3,A
MOV R_2,R_1
MOV R_1,R_0 ; April 8, 1998
MOV A,R_4
ADD A,TEMP
MOV R_0,A
CLR C
SUBB A,#32 ; IF R_0>31
JC CALS003
MOV B,#31
MOV A,R_0
DIV AB
MOV B,#31
MUL AB
MOV TEMP,A
MOV A,R_0
CLR C
SUBB A,TEMP
MOV R_0,A ; R_0%=31
JNZ CALS003
MOV R_0,#31
CALS003:
MOV R1,#R_I_O_ADDRESS
MOV R0,#R_I_ADDRESS
MOV R2,#8
CALS004: MOV A,@R0
MOV @R1,A
INC R1
INC R0
DJNZ R2,CALS004MOV R1,#S_I_O_ADDRESS
MOV R0,#R_I_ADDRESS ; =S_I_ADDRESS
MOV R2,#8
CALS005: MOV A,@R1
MOV @R0,A
INC R1
INC R0
DJNZ R2,CALS005
MOV A,R_6
MOV R2,#6
CALS006: RR A
DJNZ R2,CALS006
ANL A,#1
MOV BIT0,A
MOV A,R_6
RL A
ORL A,BIT0
ANL A,#7FH
MOV TEMP,A
MOV R_6,R_5
MOV A,R_4
XRL A,SI
MOV R_5,A
MOV R_4,R_3
MOV R_3,R_2
MOV R_2,R_1
MOV R_1,R_0
MOV A,R_6
ADD A,TEMP
MOV R_0,A
CLR C
SUBB A,#128
JC CALS007
MOV B,#127
MOV A,R_0
DIV AB
MOV B,#127
MUL AB
MOV TEMP,A
MOV A,R_0
CLR C
SUBB A,TEMP
MOV R_0,A
JNZ CALS007
MOV R_0,#127
CALS007: MOV R1,#S_I_O_ADDRESS
MOV R0,#R_I_ADDRESS
MOV R2,#8
CALS008: MOV A,@R0
MOV @R1,A
INC R1
INC R0
DJNZ R2,CALS008
MOV R1,#T_I_O_ADDRESS ;
MOV R0,#R_I_ADDRESS ; =T_I_ADDRESS
MOV R2,#5
CALS009: MOV A,@R1
MOV @R0,A
INC R1
INC R0
DJNZ R2,CALS009
MOV TEMP,R_4
MOV R_4,R_3
MOV R_3,R_2
MOV A,R_1
XRL A,TI
MOV R_2,A
MOV R_1,R_0
MOV A,R_3
ADD A,TEMP
MOV R_0,A
CLR C
SUBB A,#32
JC CALS0010
MOV B,#31
MOV A,R_0
DIV AB
MOV B,#31
MUL AB
MOV TEMP,A
MOV A,R_0
CLR C
SUBB A,TEMP
MOV R_0,A
JNZ CALS0010
MOV R_0,#31
CALS0010: MOV R1,#T_I_O_ADDRESS
MOV R0,#R_I_ADDRESS
MOV R2,#5
CALS0011: MOV A,@R0
MOV @R1,A
INC R1
INC R0
DJNZ R2,CALS0011
RET
; ---------------------------------------
; CALCUL(VOID) OUT: RI SI TI SI_ LASTCALC
; USED REGISTERS:RI SI TI SI_ R_I(0-7) TEMP R1
; ---------------------------------------
CALCULV: MOV LASTCALC,#0
MOV SI,#0
MOV RI,#0
MOV TI,#0
LCALL CALCULSTATE
MOV R1,#R_I_O_ADDRESS
MOV A,@R1
MOV R_0,A
MOV R1,#R_I_O_ADDRESS+4
MOV A,@R1
MOV R_4,A
XRL A,R_0
ANL A,#1FH
MOV RI,A
MOV R1,#T_I_O_ADDRESS
MOV A,@R1
MOV R_0,A
MOV R1,#T_I_O_ADDRESS+3
MOV A,@R1
MOV R_3,A
XRL A,R_0
ANL A,#1FH
MOV TI,A
MOV R1,#S_I_O_ADDRESS
MOV A,@R1
MOV SI,A
; *********SI_=~S[0] ?
MOV A,#0FFH
CLR C
SUBB A,SI
MOV SI_,A
; *********SI_=~S[0] ?
MOV A,RI
ANL A,SI_
MOV TEMP,A
MOV A,SI
ANL A,TI
ORL A,TEMP
ANL A,#0FH
MOV LASTCALC,A
RET
; -------------------------------------------
; CALCUL IN: NBRE OUT: LASTCALC
; -------------------------------------------
CALCUL: ACALL CALCULV
; CALC=LASTCALC
DJNZ NBRE,CALCUL
RET
; ------------------------------------------
; CALCULKEY(KEY) USE TEMP KEY A
; IN:KEY OUT:R_I(0-7) S_I(0-7) T_I(0-4)
; ------------------------------------------
CALCULKEY: MOV A,KEY
ANL A,#1FH
MOV RI,A
MOV A,KEY
RL A
RL A
RL A
ANL A,#78H
MOV TEMP,A
MOV A,KEY
RR A
RR A
RR A
RR A
RR A
ANL A,#7
ADD A,TEMP
MOV SI,A
MOV A,KEY
RR A
RR A
RR A
ANL A,#1fh
MOV TI,A
LCALL CALCULSTATE
RET
; ------------------------------------------
; AUTHENTICATION IN CRYPTO0-7,GC0-7,Q0-7
; OUT Q1,Q2
; USED REGISTERS: A,R1,COUNT
; ------------------------------------------
AUTHENTICATION: MOV COUNT,#0
AUT001: MOV A,COUNT
RL A ; 2
MOV R1,#CRYPTO_ADDRESS
ADD A,R1
MOV R1,A
MOV A,@R1
MOV KEY,A
ACALL CALCULKEY
AUT0011: MOV R1,#CRYPTO_ADDRESS
MOV A,COUNT
RL A
ADD A,R1
MOV R1,A
INC R1
MOV A,@R1
MOV KEY,A
ACALL CALCULKEY
AUT0012: MOV R1,#Q0_ADDRESS
MOV A,COUNT
ADD A,R1
MOV R1,A
MOV A,@R1
MOV KEY,A
ACALL CALCULKEY
INC COUNT
MOV A,COUNT
CJNE A,
Scan the QR code to read on your phone
Address:Room1802, Kint Building, No. 238, Zhongshan Avenue West, Tianhe District, Guangzhou, China.
Service Hotline:020-85662866 13710680786