AT24C512中數據文件的系統化管理

發(fā)布時(shí)間:2009-8-18 13:37    發(fā)布者:lqm1111
關(guān)鍵詞: AT24C512

文件系統程序源代碼如下:

. 公用子程序:

RD24C:把DPTR所指的AT24C512單元內容讀出,放到(R1,R0)所指的RAM單元,R6為數據長(cháng)度

WR24C:把(R1,R0)所指的RAM單元內容寫(xiě)入DPTR所指的AT24C512單元,R6為數據長(cháng)度

WR_ONE:把DPTR所指的RAM單元內容寫(xiě)入DPTR所指的AT24C512單元

 

TZDPTR:       MUL       AB                ;DPTR=DPTR+A*B

ADD       A,    DPL

                     MOV      DPL,       A

                     MOV      A,    DPH

                     ADDC    A,    B

                     MOV      DPH,      A

                     RET

 

AT24C512系統格式化:把目錄區和頁(yè)面分配區初始化為0EEEEH

AT_INIT: MOV      DPTR,    #AT24C

MOV      R7,  #80H

              MOV      A,    #0EEH

ATINIT1:MOVX    @DPTR, A

              INC        DPTR

              DJNZ      R7,  ATINIT1

              MOV      R7,  #54

ATINIT2:MOV      DPTR,    #AT24C

              MOV      R1,  DPH

              MOV      R0,  DPL

              MOV      R6,  #80H

              MOV      A,    R7

              MOV      B,    #80H

              MOV      DPTR,    #0

              LCALL   TZDPTR

              PUSH     7

              LCALL   WR24C

              POP        7

              DJNZ      R7,  ATINIT2

              RET

 

為方便操作,每次開(kāi)機把目錄區和頁(yè)面分配區的內容讀入到RAM的相同地址中,程序如下:

R_HEAD:CLR       IE.7

              MOV      R5,  #0

RHEAD1:MOV     A,    R5

              MOV      B,    #80H

              MOV      DPTR,    #0

              LCALL   TZDPTR

              MOV      R1,  DPH

              MOV      R0,  DPL

              MOV      R6,  #80H

PUSH     5

              LCALL   RD24C

              POP        5

              INC        R5

              CJNE      R5,  #54, RHEAD1

              SETB      IE.7

              RET

 

添加文件程序如下:

YB_SAVE:     MOV      PAGE_NO,#0               AGES=需要的頁(yè)數

                     MOV      DPTR,    #AT_FAT        AGE_NO為空閑頁(yè)數計數

YBSAVE1:     MOVX    A,    @DPTR                ; AT_FAT 為頁(yè)面分配表開(kāi)始地址

                     CJNE      A,    #0EEH,   YBSAVE2

                     INC        PAGE_NO

YBSAVE2:     INC        DPTR

                     INC        DPTR

                     MOV      A,    PAGE_NO

                     CLR        C

                     SUBB     A,    PAGES

                     JZ           YBSAVE4

                     MOV      A,    DPH

                     CJNE      A,    #1BH,     YBSAVE1      ;1B00H為頁(yè)面分配表的結束地址

YBSAVE3:     LCALL   ERRDSP                      ;顯示錯誤信息

                     RET

 

YBSAVE4:     MOV      R7,  #0

YBSAVE5:     MOV      DPTR,    #YB_BEG             ; YB_BEG為目錄區開(kāi)始地址

                     MOV      A,    R7

                     MOV      B,    #10

                     LCALL   TZDPTR

       MOVX    A,    @DPTR

              CJNE      A,    #0EEH,   YBSAVE16

              SJMP      YBSAVE6

YBSAVE16:   INC        R7

              CJNE      R7,  #153,      YBSAVE5      ;最多可存153個(gè)文件

              SJMP      YBSAVE3                           ;已經(jīng)存滿(mǎn)

      

YBSAVE6:     CLR        IE.7

PUSH     7                          ;保存找到的空閑目錄區序號

LCALL   DO_DSP               ;顯示“正在存儲”

       MOV      DPTR,    #AT_FAT

YBSAVE7:     MOVX    A,    @DPTR

                     CJNE      A,    #0EEH,   YBSAVE8

       SJMP      YBSAVE9

YBSAVE8:     INC        DPTR

       INC        DPTR

       SJMP      YBSAVE7

YBSAVE9:     PUSH     DPH              ;找到第一個(gè)空閑頁(yè),把地址保護起來(lái)

       PUSH     DPL

       MOV      R1,  DPH

       MOV      R0,  DPL

       MOV      A,    #0FFH

       MOVX    @DPTR, A

       INC        DPTR

       MOVX    @DPTR, A     ;暫時(shí)把它看做是文件的最后一頁(yè)

       PUSH     DPH

       PUSH     DPL

       PUSH     0

       PUSH     1

       LCALL   WR_ONE

       POP        1

       POP        0

       POP        DPL

       POP        DPH

       INC        DPTR

      

                     MOV      R7,  PAGES

       DEC       R7

       MOV      A,    R7

       JZ           YBSAVE13    ;如果只需要一頁(yè),則頁(yè)面分配表修改結束

YBSAVE10:   MOVX    A,    @DPTR

       CJNE      A,    #0EEH,   YBSAVE11

       PUSH     DPH

       PUSH     DPL

       MOV      DPH,      R1          ;R1,R0為前一頁(yè)的頁(yè)面分配表地址

       MOV      DPL,       R0

       POP        0

       POP        1

       MOV      A,    R1

       MOVX    @DPTR, A

       INC        DPTR

       MOV      A,    R0

       MOVX    @DPTR, A            ;新地址寫(xiě)入前一頁(yè)的地址單元

       PUSH     0

       PUSH     1

       PUSH     7

       LCALL   WR_ONE              ;把修改信息寫(xiě)入AT24C512

       POP        7

       POP        1

       POP        0

       MOV      DPH,      R1

       MOV      DPL,       R0

       INC        DPTR

       INC        DPTR

       SJMP      YBSAVE12

YBSAVE11:   INC        DPTR

       INC        DPTR

YBSAVE12:   DJNZ      R7,  YBSAVE10

       MOV      DPH,      R1

       MOV      DPL,       R0

       MOV      A,    #0FFH

       MOVX    @DPTR, A

       INC        DPTR

       MOVX    @DPTR, A     ;寫(xiě)入0FFFFH,表示文件分配結束

       LCALL   WR_ONE

YBSAVE13:   POP        0

                     POP        1

      

       POP        0

       POP        1            ;R1R0=DPTR=找到的第一個(gè)空閑頁(yè)

POP        ACC       ;ACC=R7=空閑目錄區序號

       PUSH     ACC

MOV      DPTR,    #YB_BEG+8

       MOV      B,    #10

       LCALL   TZDPTR        ;確定目錄空閑區地址

       MOV      A, R1

本文地址:http://selenalain.com/thread-2971-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页