單片機(jī)控制AT88SC1604卡的應(yīng)用實(shí)例
如果對芯片各標(biāo)識數(shù)據(jù)區(qū)進(jìn)行讀出操作,除FZ和IZ區(qū)外,需要使SV標(biāo)志置“1”后才能執(zhí)行。
如果對芯片各應(yīng)用數(shù)據(jù)區(qū)進(jìn)行讀出操作,需要在SV=1且Rn=1(n=1,2,3,4)狀態(tài)下才能執(zhí)行。
注:在CLK的下降沿時,地址計(jì)數(shù)器加1,地址計(jì)數(shù)器當(dāng)前所指的地址單元的數(shù)據(jù)被輸出到I/O線上。因此,在整個時鐘周期Tdk期間,包含了地址加1(INC)和讀出(REA)兩項(xiàng)操作。
讀IC數(shù)據(jù)子程序(R2:需讀IC卡字節(jié)數(shù),R0:數(shù)據(jù)區(qū)存放低位首地址)
RICDAZ: MOV A,#KXXDZ ;卡信息地址送A
LCALL SADR ;尋卡地址
RICDA: MOV R3,#08
RICDA1: SETB ICSDA
NOP
MOV C,ICSDA ;位讀到A
RLC A
SETB ICCLK
NOP
CLR ICCLK
NOP
DJNZ R3,RICDA1
MOV @R0,A ;8位數(shù)據(jù)送數(shù)據(jù)區(qū)
DEC R0
DJNZ R2,RICDA
RET
; 尋IC卡位地址子程序(調(diào)用前16進(jìn)制地址送ACC)
SADR: LCALL FWZCX
MOV B,#08
MUL AB ;計(jì)算位地址: 16進(jìn)制地址*8
MOV R4,A ;低位位地址送R4
MOV R5,B ;高位位地址送R5
JNZ SADR1 ;低位地址不為0轉(zhuǎn)
MOV A,R5
JZ SADR3
DEC R5
SADR1: SETB ICREST ;復(fù)位端置1
SETB ICSDA
CLR ICPGM
CLR ICCLK
CLR ICREST
SADR2: SETB ICCLK
SETB ICCLK
CLR ICCLK
CLR ICCLK
DJNZ R4,SADR2
MOV A,R5
JZ SADR3
DEC R5
SJMP SADR2
SADR3: RET
;
(3)比較操作:在進(jìn)行比較操作時,必須保證使RST腳和PGM腳同時保持為低。比較操作只能對芯片密碼控制區(qū)執(zhí)行,且由芯片內(nèi)部來判斷。在FUSE2未熔斷時,只能在SV=0時,對SC區(qū)進(jìn)行比較操作,對其它區(qū)的比較操作均為無效操作。SV=1時,芯片不做任何比較操作。在FUSE2熔斷后,只能在SV=0時,對SC區(qū)進(jìn)行比較操作,對其它區(qū)的比較操作均為無效操作。
注:上述芯片密碼比較時序圖中是假設(shè)密碼計(jì)數(shù)器中前兩位為0,第三位尋到1的處理時序。
有關(guān)芯片SC的時序關(guān)系如圖2~5圖所示:
從操作(B)到(F),地址計(jì)數(shù)器不變,密碼比較的過程是:
(A)比較安全密碼/擦除密碼序列
(B)在密碼輸入比較計(jì)數(shù)器中找出一位為“1”的位
(C)在這個為“1”的單元寫“0”
(D)芯片輸出“0”
(E)如果比較成功,在PGM的上升沿安全密碼/擦除密碼的相應(yīng)標(biāo)志
(SV,Sn或En)被置“1”,同時安全密碼/擦除密碼輸入比較計(jì)數(shù)器
(SCAC,SnAC或EnAC)被擦除。
(F)如果擦除成功,相應(yīng)安全密碼/擦除密碼標(biāo)志被置“1”,芯片將輸出“1”,否則芯片輸出“0”。
(G)在CLK的下降沿,地址計(jì)數(shù)器加1,并輸出下一位的狀態(tài)。
比較用戶密碼子程序(地址0AH,0BH)
CPSC: MOV R0,#CMM+2
MOV R1,#06
MOV R2,#02
LCALL MVITI
MOV A,#0AH
LCALL SADR ;尋址
MOV R0,#06
LCALL BJMMRET
; 比較密碼程序
BJMM: CLR ICREST
CLR ICPGM
MOV R2,#02
BJMM1: MOV A,@R0
MOV R3,#08
BJMM2: RLC A
MOV ICSDA,C
NOP
SETB ICCLK
NOP
CLR ICCLK
NOP
DJNZ R3,BJMM2
INC R0
DJNZ R2,BJMM1
MOV R2,#08;查8位
BJMM4: SETB ICSDA
NOP
MOV C,ICSDA
JC BJMM5 ;是1轉(zhuǎn)
SETB ICCLK ;指向下一位
NOP
CLR ICCLK
NOP
DJNZ R2,BJMM4
LJMP BJMM8 ;計(jì)數(shù)器為00,卡鎖死轉(zhuǎn)
BJMM5: SETB ICPGM
NOP
CLR ICSDA ;寫0
NOP
SETB ICCLK
NOP
CLR ICPGM
NOP
LCALL DELY5
CLR ICCLK
NOP
SETB ICSDA
NOP
MOV C,ICSDA
JNC BJMM6
LJMP BJMM7 ;未寫入0,轉(zhuǎn)出錯
BJMM6: SETB ICPGM
NOP
SETB ICSDA ;寫1(擦除)
NOP
SETB ICCLK
NOP
CLR ICPGM
NOP
LCALL DELY5
CLR ICCLK
NOP
SETB ICSDA
NOP
MOV C,ICSDA
NOP
SETB ICCLK
JNC BJMM7 ;擦除不成功(密碼錯)轉(zhuǎn)
SETB FGICG1 ;置已校對密碼標(biāo)志
RET
BJMM7: CLR FGICG1 ;建密碼錯標(biāo)記
RET
BJMM8: SETB FGICG2 ;置卡鎖死標(biāo)志
RET
液位計(jì)相關(guān)文章:磁翻板液位計(jì)原理
評論