歡迎您訪問鄭州興邦電子股份有限公司官方網(wǎng)站!
    阿里巴巴誠(chéng)信通企業(yè)
    全國(guó)咨詢熱線:40000-63966
    興邦電子,中國(guó)水控機(jī)第一品牌

    聯(lián)系興邦電子

    全國(guó)咨詢熱線:40000-63966

    售后:0371-55132951/55132952

    工廠:河南省 鄭州市 高新區(qū)蓮花街電子電器產(chǎn)業(yè)園

    邏輯加密存儲(chǔ)卡芯片AT88SC1604卡的應(yīng)用

    文章出處:http://www.xujuanpiju.com 作者:北京長(zhǎng)空機(jī)械有限責(zé)任公司 秦嚴(yán)定 王麗霞   人氣: 發(fā)表時(shí)間:2011年09月15日

    [文章內(nèi)容簡(jiǎn)介]:本文介紹了目前應(yīng)用較為廣泛的AT88SC1604邏輯加密卡的特點(diǎn)和工作原理,同時(shí)給出了通過單片機(jī)控制操作IC卡的的應(yīng)用實(shí)例及程序。



      前言

      IC卡按結(jié)構(gòu)劃分,可分為存儲(chǔ)器卡和微處理器卡(CPU card)兩大類。邏輯加密卡與普通存儲(chǔ)卡相比,內(nèi)部結(jié)構(gòu)較復(fù)雜,其存儲(chǔ)區(qū)可以分成卡片設(shè)置區(qū)和應(yīng)用區(qū)??ㄆO(shè)置區(qū)內(nèi)存放與卡片廠商及發(fā)卡者相關(guān)代碼和卡片密碼;應(yīng)用區(qū)又可以根據(jù)需要分為不同的分區(qū)。邏輯加密卡的安全性相對(duì)較高,體現(xiàn)在:卡片設(shè)立主密碼、每個(gè)應(yīng)用分區(qū)具有各自獨(dú)立的操作密碼。邏輯加密卡主要控制作用是:對(duì)數(shù)據(jù)存儲(chǔ)區(qū)開放/關(guān)閉的控制;對(duì)數(shù)據(jù)存儲(chǔ)區(qū)讀/寫的控制;對(duì)數(shù)據(jù)存儲(chǔ)區(qū)擦除操作的控制以及對(duì)密碼校驗(yàn)和錯(cuò)誤次數(shù)計(jì)數(shù)及鎖閉功能控制。

      AT88SC1604卡的工作原理

      AT88SC1604是由美國(guó)ATMEL公司設(shè)計(jì)的邏輯加密存儲(chǔ)卡芯片。它具有15704位的存儲(chǔ)容量,是目前邏輯加密存儲(chǔ)卡中容量較大的一種產(chǎn)品芯片。

      芯片特點(diǎn)

      (1) AT88SC1604芯片屬于單存儲(chǔ)器多邏輯分區(qū)結(jié)構(gòu)。主存儲(chǔ)器除劃分了特定的標(biāo)志數(shù)據(jù)區(qū)和控制數(shù)據(jù)區(qū)之外,還將應(yīng)用數(shù)據(jù)區(qū)分成四個(gè)完全隔離的子區(qū),并在每個(gè)子區(qū)中配備了各自的讀、寫控制標(biāo)志和寫入/擦除密碼以及密碼輸入錯(cuò)誤計(jì)數(shù)器等邏輯控制。

      (2) 芯片為串行傳輸方式,并滿足ISO7816-3同步傳輸協(xié)議。

      (3)芯片采用低功耗的CMOS工藝制造,每字位的讀取時(shí)間為 s,寫周期為5ms。

      (4) 芯片內(nèi)部的存儲(chǔ)單元具有至少10000次的擦除/改寫循環(huán)次數(shù)。數(shù)據(jù)保存期為10年。

      芯片存儲(chǔ)分區(qū)結(jié)構(gòu)及定義

      AT88SC1604芯片分為制造商代碼區(qū)、發(fā)行商代碼區(qū)、用戶安全密碼區(qū)、用戶密碼比較計(jì)數(shù)區(qū)、個(gè)人代碼區(qū)以及四個(gè)應(yīng)用區(qū)。每個(gè)應(yīng)用區(qū)都由密碼區(qū),密碼比較計(jì)數(shù)區(qū),擦除密碼區(qū)和擦除密碼比較計(jì)數(shù)區(qū)、應(yīng)用數(shù)據(jù)區(qū)和存儲(chǔ)器測(cè)試區(qū)組成。

      (1) 制造商代碼區(qū)(FZ)

      該區(qū)里記錄的卡芯片生產(chǎn)商的特定信息(例如:生產(chǎn)批號(hào)、日期、以及特別制定的特征代碼),由制造商在芯片出廠前寫入。在控制本區(qū)的熔絲(FUSHl)沒有熔斷時(shí),該區(qū)的存儲(chǔ)單元可以象普通的EEPROM存儲(chǔ)單元一樣進(jìn)行擦除和改寫。一旦熔絲熔斷,所寫入的制造商代碼就不可再更改。

      (2) 發(fā)行商代碼區(qū)(IZ)

      該區(qū)用于記錄卡片發(fā)行商的特定信息(例如:發(fā)行批號(hào)、日期、地區(qū)范圍編號(hào)以及特定用戶編號(hào)等特征代碼)。當(dāng)控制本區(qū)的熔絲沒有熔斷時(shí),該區(qū)的存儲(chǔ)單元內(nèi)容可以自由的擦除或改寫。在個(gè)人化處理過程完成之后,控制該區(qū)的熔絲(FUSH2)熔斷,即可將注入的“發(fā)行商代碼”完全固化。這一代碼也是識(shí)別卡片的真?zhèn)危瑓^(qū)分卡片應(yīng)用類別的重要標(biāo)識(shí)。

      (3) 個(gè)人代碼區(qū)(CPZ)

      該區(qū)用于存放個(gè)人身份標(biāo)識(shí)數(shù)據(jù)。該區(qū)使用上受芯片的“用戶密碼”的保護(hù)。當(dāng)“用戶密碼”比較成功,該區(qū)可讀可寫可擦除。“用戶密碼”比較不成功,該區(qū)只能讀而不能寫入和擦除。

      (4) 用戶密碼區(qū)(SC)

      這個(gè)密碼區(qū)是整個(gè)存儲(chǔ)器的“總控制開關(guān)”。使用前,由授權(quán)持卡人預(yù)先輸入的一個(gè)安全代碼作為“參照字”儲(chǔ)存在這個(gè)存儲(chǔ)區(qū)里。使用時(shí),必須輸入一個(gè)“校驗(yàn)密碼”。芯片將輸入的“校驗(yàn)密碼”與內(nèi)部存儲(chǔ)器的“參照字”一一比較。如果比較結(jié)果一致,IC卡將開放整個(gè)芯片儲(chǔ)存器(包括各分區(qū)的控制密碼和各應(yīng)用數(shù)據(jù)區(qū))。各區(qū)的“安全密碼”區(qū)SCn(n=l,2,3,4)與SC的作用是完全類似的。

      對(duì)于各分區(qū)的密碼區(qū)SCn (n=1,2,3,4)來說,其比較操作要受到對(duì)應(yīng)“應(yīng)用區(qū)密碼”比較計(jì)數(shù)器(SnAC)的計(jì)數(shù)控制。當(dāng)連續(xù)8次輸入密碼錯(cuò)誤,SCn將被鎖死。

      (5) 密碼比較計(jì)數(shù)區(qū)(SCAC)

      該區(qū)對(duì)連續(xù)輸入的錯(cuò)誤密碼的次數(shù)進(jìn)行累計(jì)。當(dāng)連續(xù)8次不正確的比較操作之后,芯片將被鎖死。芯片被鎖死之后,將拒絕任何的擦除、寫入和比較的操作命令。

      該區(qū)是8位長(zhǎng),按位寫入方式操作。在芯片初始化時(shí)是全“1”狀態(tài),即讀出值為“FFH”。在每次比較輸入的密碼時(shí),先按從高位到低位的順序找第一個(gè)為“1”的位,將此位寫“0”,然后將新輸入的“校驗(yàn)密碼”與原存儲(chǔ)在SC區(qū)的“參照字”進(jìn)行比較。比較操作本身由芯片內(nèi)部自行完成,而比較結(jié)果則通過置SV標(biāo)志來判別,即比較成功時(shí)SV被置“1”。比較不成功,SV保持原來的“0”狀態(tài)。在連續(xù)8次比較錯(cuò)誤過程中每次比較操作之后計(jì)數(shù)器的計(jì)數(shù)值分別為“7FH”、“3FH”、“1FH”、“0FH”、“07H”、“03H”、“01H”、“00H”。當(dāng)計(jì)數(shù)器為“00H”后,后續(xù)的比較操作命令由于無法在“SCAC”區(qū)中找到一個(gè)為“1”的位,因而芯片拒絕繼續(xù)執(zhí)行比較操作。

      SnAC(n=1,2,3,4)的作用與SCAC是類似的。操作控制也完全一樣。只是SCAC是限制對(duì)SC區(qū)的比較操作。而SnAC則限制對(duì)SCn區(qū)的比較操作。SCAC的控制級(jí)別最高。當(dāng)SCAC為“00H”后,芯片內(nèi)部封鎖了對(duì)SC區(qū)的比較操作,從而使對(duì)SCn的比較也被禁止。如果SCAC為非“00H”值,在對(duì)SC區(qū)的比較密碼操作成功之后,SCn能否進(jìn)行比較操作就由SnAC區(qū)的狀態(tài)值來決定。SnAC區(qū)在連續(xù)8次比較輸入過程中,每次比較操作之后計(jì)數(shù)器的計(jì)數(shù)值與SCAC的8個(gè)值一樣。(即分別為“7FH”、“3FH”、“1FH”、“0FH”、“07H”、“03H”、“OlH”、“00H”)當(dāng)SnAC為“00H”時(shí),則“應(yīng)用n區(qū)”將被鎖死。

      (6)擦除密碼區(qū)(EZn ,n=l.2,3,4)

      該區(qū)用于存儲(chǔ)擦除應(yīng)用區(qū)操作的控制密碼。這些密碼一般由發(fā)行商使用。在個(gè)人化處理時(shí)輸入的最后一組“擦除密碼”,在芯片熔絲FUSE2熔斷之后將使“擦除密碼”保存在該區(qū)內(nèi)。該區(qū)不再能讀出、寫入和擦除,只能進(jìn)行比較操作。在使用過程中如需對(duì)應(yīng)用區(qū)進(jìn)行擦除操作,都必須首先對(duì)相應(yīng)的EZ區(qū)輸送一個(gè)“擦除密碼”與之比較,在“擦除密碼比較計(jì)數(shù)器”不為“00H”的情況下,如果相比較的兩代碼完全一致,則相應(yīng)的應(yīng)用區(qū)的單元允許擦除,否則將禁止執(zhí)行擦除操作。

      (7) 擦除密碼比較計(jì)數(shù)區(qū)(EnAC ,n=l,2,3,4)

      擦除密碼比較計(jì)數(shù)區(qū)的作用與SCAC的作用相類似。它對(duì)各應(yīng)用區(qū)擦除密碼連續(xù)輸入錯(cuò)誤的次數(shù)進(jìn)行累計(jì)。最多連續(xù)8次不正確的密碼比較之后,該區(qū)所控制的應(yīng)用區(qū)的擦除操作即被鎖死,從而導(dǎo)致該應(yīng)用區(qū)有可能成為只讀和允許單次寫入的狀態(tài)。

      (8) 應(yīng)用數(shù)據(jù)區(qū)(AZn ,n=1,2,3,4)

      該區(qū)主要給用戶使用。用于存儲(chǔ)系統(tǒng)的相關(guān)數(shù)據(jù)記錄和卡片標(biāo)識(shí)等信息。應(yīng)用數(shù)據(jù)區(qū)的寫入與讀出分別由該區(qū)的前兩位Pn和Rn以及SV標(biāo)志的狀態(tài)控制,擦除操作則由該區(qū)的擦除密碼控制。AT88SC1604設(shè)計(jì)了四個(gè)完全隔離的分區(qū),其中1至3分區(qū)的單元容量分別是4K位、第4分區(qū)的單元容量為3.6K位。

      (9) 存儲(chǔ)區(qū)測(cè)試區(qū)(MTZ)

      該區(qū)主要用于芯片生產(chǎn)后對(duì)EEPROM單元陣列進(jìn)行各項(xiàng)性能測(cè)試該區(qū)不受任何控制區(qū)狀態(tài)和標(biāo)志狀態(tài)的保護(hù),允許對(duì)這個(gè)區(qū)進(jìn)行讀出、寫人和擦除操作,但不能進(jìn)行比較操作。

      應(yīng)用實(shí)例

      基于上述1604芯片的特點(diǎn),在石化系統(tǒng)的加油電路設(shè)計(jì)中,我們利用單片機(jī)芯片89C2051與IC卡電路組成一個(gè)獨(dú)立系統(tǒng),控制IC卡芯片的各項(xiàng)操作,該系統(tǒng)通過標(biāo)準(zhǔn)RS232通訊接口,與主控制板實(shí)現(xiàn)數(shù)據(jù)交換,這種電路設(shè)計(jì)在硬件方面兼容性較好,只要通過協(xié)調(diào)雙方的IC卡通訊協(xié)議,可與任何帶有RS232接口的控制板或微機(jī)相連接。

      單片機(jī)芯片89C2051的6個(gè)端口通過IOC卡座與IC卡相連接,P1.2口控制IC卡5V電源的通斷,上電時(shí)單片機(jī)芯片處于復(fù)位狀態(tài), 6個(gè)端口均輸出“1”,IC卡電源處于斷開狀態(tài),ICSW為IC卡的檢測(cè)端,當(dāng)IC卡插入后,該端口與地相接,P1.3口檢測(cè)到IC 卡已插入卡座,即接通IC卡電源,IC卡操作完畢后,切斷IC卡電源,并提示用戶可以拔卡。單片機(jī)芯片其他4個(gè)端口在接通IC卡電源后,根據(jù)對(duì)卡操作的需要,對(duì)IC卡進(jìn)行復(fù)位、讀卡、校對(duì)密碼、擦卡、寫卡等操作。

      硬件電路

      芯片的操作模式時(shí)序及設(shè)計(jì)程序

      AT88SCl604芯片的操作模式有五種。它們是通過配PGM、RST、CLK等引腳信號(hào)及內(nèi)部地址計(jì)數(shù)器(IAC)的狀態(tài)組合來實(shí)現(xiàn)。

      (1) 芯片復(fù)位操作: AT88SCl604有兩種復(fù)位方式:上電復(fù)位和控制復(fù)位。
    上電復(fù)位: 上電復(fù)位是當(dāng)芯片加電時(shí)的最初狀態(tài)。上電復(fù)位屬于芯片

      內(nèi)部復(fù)位。它將使芯片內(nèi)部所有的隱含標(biāo)志復(fù)位到0狀態(tài)。并使地址計(jì)數(shù)器復(fù)位到0位。

      控制復(fù)位: 當(dāng)CLK為低時(shí),在RST腳上的一個(gè)下降沿將便芯片產(chǎn)生復(fù)位操作。控制復(fù)位是將地址計(jì)數(shù)器復(fù)位到0位,而不影響任何內(nèi)部標(biāo)志的狀態(tài)。

      注:1)RST為高時(shí)禁止計(jì)數(shù)

      2)在CLK端降低之后,延遲一個(gè)復(fù)位維持時(shí)間Trh(min 0.1 s)RST端復(fù)位(下降沿),同時(shí)地址計(jì)數(shù)器清零。地址計(jì)數(shù)器清零后延遲一個(gè)“數(shù)據(jù)復(fù)位有效時(shí)間”Tdvr(max 2 s)第0位單元的數(shù)據(jù)被送上I/O線。

    FWZCX: CLR ICPGM ;復(fù)位子程序
    NOP
    SETB ICREST
    NOP
    SETB ICSDA
    NOP
    CLR ICCLK ;時(shí)鐘端清0
    NOP
    CLR ICREST ;復(fù)位端清0
    NOP
    RET

     ?。?)讀出操作: 在進(jìn)行讀出操作時(shí),必須保證使RST腳和PGM腳同時(shí)保持為低。如果對(duì)芯片各密碼控制區(qū)進(jìn)行讀出操作,只能是在FUSE2未熔斷且SV標(biāo)志“1”時(shí)才能進(jìn)行。

      如果對(duì)芯片各標(biāo)識(shí)數(shù)據(jù)區(qū)進(jìn)行讀出操作,除FZ和IZ區(qū)外,需要使SV標(biāo)志置“1”后才能執(zhí)行。

      如果對(duì)芯片各應(yīng)用數(shù)據(jù)區(qū)進(jìn)行讀出操作,需要在SV=1且Rn=1(n=1,2,3,4)狀態(tài)下才能執(zhí)行。

      注:在CLK的下降沿時(shí),地址計(jì)數(shù)器加1,地址計(jì)數(shù)器當(dāng)前所指的地址單元的數(shù)據(jù)被輸出到I/O線上。因此,在整個(gè)時(shí)鐘周期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
    ;

     ?。?)比較操作:在進(jìn)行比較操作時(shí),必須保證使RST腳和PGM腳同時(shí)保持為低。比較操作只能對(duì)芯片密碼控制區(qū)執(zhí)行,且由芯片內(nèi)部來判斷。在FUSE2未熔斷時(shí),只能在SV=0時(shí),對(duì)SC區(qū)進(jìn)行比較操作,對(duì)其它區(qū)的比較操作均為無效操作。SV=1時(shí),芯片不做任何比較操作。在FUSE2熔斷后,只能在SV=0時(shí),對(duì)SC區(qū)進(jìn)行比較操作,對(duì)其它區(qū)的比較操作均為無效操作。

      注:上述芯片密碼比較時(shí)序圖中是假設(shè)密碼計(jì)數(shù)器中前兩位為0,第三位尋到1的處理時(shí)序。

      有關(guān)芯片SC的時(shí)序關(guān)系如圖2~5圖所示:

      從操作(B)到(F),地址計(jì)數(shù)器不變,密碼比較的過程是:

    (A)比較安全密碼/擦除密碼序列

    (B)在密碼輸入比較計(jì)數(shù)器中找出一位為“1”的位

    (C)在這個(gè)為“1”的單元寫“0”

    (D)芯片輸出“0”

    (E)如果比較成功,在PGM的上升沿安全密碼/擦除密碼的相應(yīng)標(biāo)志

    (SV,Sn或En)被置“1”,同時(shí)安全密碼/擦除密碼輸入比較計(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)出錯(cuò)
    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 ;擦除不成功(密碼錯(cuò))轉(zhuǎn)
    SETB FGICG1 ;置已校對(duì)密碼標(biāo)志
    RET
    BJMM7: CLR FGICG1 ;建密碼錯(cuò)標(biāo)記
    RET
    BJMM8: SETB FGICG2 ;置卡鎖死標(biāo)志
    RET

      (4)寫入操作:寫入操作實(shí)際包含著兩種:當(dāng)寫入的數(shù)據(jù)為“0”時(shí),本次操作稱為“寫入操作”。當(dāng)寫入的數(shù)據(jù)為“1”時(shí),本次操作稱為“擦除操作”?!皩懭氩僮鳌笨梢园次贿M(jìn)行。但“擦除操作”只能按字節(jié)進(jìn)行。即使操作時(shí)只對(duì)單獨(dú)一位進(jìn)行擦除,但執(zhí)行的結(jié)果將使這一位所在的字節(jié)的所有8位全部置成“1”。

      對(duì)芯片的任何一個(gè)允許寫入或擦除的區(qū)域,其執(zhí)行寫入和擦除的必要條件是芯片的SV標(biāo)志為“1”狀態(tài)。

      注:在CLK為低的狀態(tài)下,PGM端從“0”到“1”,并延時(shí)一段“編程建立時(shí)間”(Tspr)之后,CLK端從“0”到“1”(這時(shí)是寫入/擦除操作的開始),在此刻之前的Tds(數(shù)據(jù)建立時(shí)間)由外部向I/O線給出寫入數(shù)據(jù)。CLK端在“1”狀態(tài)應(yīng)至少保持5ms(Tchp)之后,CLK端從“1”到“0”(這時(shí)是寫入/擦除操作的結(jié)束)。應(yīng)特別注意結(jié)束寫入操作的CLK端的下降沿并不會(huì)使地址計(jì)數(shù)器加1,而只是將剛寫入的“數(shù)據(jù)”讀出, 以便外部驗(yàn)證剛才的“寫入操作”。

    WICD: MOV A,#KDWDZ ;送擦除卡低位首地址
    LCALL SADR ;尋位地址
    MOV R2,#30 ;擦除30字節(jié)
    LCALL CPESC3 ;擦除
    MOV R0,#RAMDZ ;CPU的RAM中待寫
    入數(shù)據(jù)地址
    MOV R2,#30 ;寫入30字節(jié)
    WICDA: MOV A,@R0
    LCALL WICDAA
    INC R0
    DJNZ R2,WICDA
    RET
    ; 向IC卡寫入子程序
    WICDAA: MOV R3,#08
    WICDAB: RLC A
    JC WICDAC ;該位為1,轉(zhuǎn)
    SETB ICPGM ;打開編程位
    SETB ICPGM
    MOV ICSDA,C
    MOV ICSDA,C
    SETB ICCLK
    SETB ICCLK
    CLR ICPGM ;關(guān)閉編程位
    CLR ICPGM ;關(guān)閉編程位
    LCALL DELY5 ;延時(shí)5MS
    CLR ICCLK
    CLR ICCLK
    WICDAC: SETB ICCLK
    SETB ICCLK
    CLR ICCLK
    DJNZ R3,WICDAB
    RET
    ; 擦除應(yīng)用區(qū)1
    CPESC3: SETB ICPGM ;打開編程位,擦除灰名
    單入口
    SETB ICPGM
    SETB ICSDA
    SETB ICSDA
    SETB ICCLK
    SETB ICCLK
    CLR ICPGM ;關(guān)閉編程位
    LCALL DELY5 ;延時(shí)5MS
    CLR ICCLK
    CLR ICCLK
    SETB ICCLK
    SETB ICCLK
    CLR ICCLK
    MOV R3,#07
    CPESC4: SETB ICCLK
    SETB ICCLK
    CLR ICCLK
    CLR ICCLK
    DJNZ R3,CPESC4
    DJNZ R2,CPESC3
    RET
    ; 延時(shí)(R7)
    DELY5: MOV R7,#0AH ;5毫秒延時(shí)
    DELY: PUSH 07
    DLY1: PUSH 07
    DLY2: PUSH 07
    DLY3: DJNZ R7,DLY3
    POP 07
    DJNZ R7,DLY2
    POP 07
    DJNZ R7,DLY1
    POP 07
    DJNZ R7,DELY
    RET

      結(jié)束語

      隨著IC卡技術(shù)的飛速發(fā)展,金融機(jī)構(gòu)、國(guó)家機(jī)關(guān)、公司企業(yè)、教育部門等領(lǐng)域的需求越來越迫切,應(yīng)用越來越廣泛。我們已在石化系統(tǒng)加氣站實(shí)現(xiàn)了使用IC卡進(jìn)行加氣的業(yè)務(wù),現(xiàn)將調(diào)試成功的部分實(shí)用子程序提供給大家,供同行朋友們參考。

    本文關(guān)鍵詞:邏輯加密存儲(chǔ)卡,AT88SC1604
    回到頂部