<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AT24C512中數(shù)據(jù)文件的系統(tǒng)化管理

          AT24C512中數(shù)據(jù)文件的系統(tǒng)化管理

          作者: 時(shí)間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
          文件系統(tǒng)程序源代碼如下:
          . 公用子程序:
          RD24C:把DPTR所指的AT24C512單元內(nèi)容讀出,放到(R1,R0)所指的RAM單元,R6為數(shù)據(jù)長度
          WR24C:把(R1,R0)所指的RAM單元內(nèi)容寫入DPTR所指的AT24C512單元,R6為數(shù)據(jù)長度
          WR_ONE:把DPTR所指的RAM單元內(nèi)容寫入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系統(tǒng)格式化:把目錄區(qū)和頁面分配區(qū)初始化為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
          為方便操作,每次開機(jī)把目錄區(qū)和頁面分配區(qū)的內(nèi)容讀入到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=需要的頁數(shù)
          MOV DPTR, #AT_FAT AGE_NO為空閑頁數(shù)計(jì)數(shù)
          YBSAVE1: MOVX A, @DPTR ; AT_FAT 為頁面分配表開始地址
          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為頁面分配表的結(jié)束地址
          YBSAVE3: LCALL ERRDSP ;顯示錯(cuò)誤信息
          RET
          YBSAVE4: MOV R7, #0
          YBSAVE5: MOV DPTR, #YB_BEG ; YB_BEG為目錄區(qū)開始地址
          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)存滿
          YBSAVE6: CLR IE.7
          PUSH 7 ;保存找到的空閑目錄區(qū)序號(hào)
          LCALL DO_DSP ;顯示“正在存儲(chǔ)”
          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è)空閑頁,把地址保護(hù)起來
          PUSH DPL
          MOV R1, DPH
          MOV R0, DPL
          MOV A, #0FFH
          MOVX @DPTR, A
          INC DPTR
          MOVX @DPTR, A ;暫時(shí)把它看做是文件的最后一頁
          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 ;如果只需要一頁,則頁面分配表修改結(jié)束
          YBSAVE10: MOVX A, @DPTR
          CJNE A, #0EEH, YBSAVE11
          PUSH DPH
          PUSH DPL
          MOV DPH, R1 ;R1,R0為前一頁的頁面分配表地址
          MOV DPL, R0
          POP 0
          POP 1
          MOV A, R1
          MOVX @DPTR, A
          INC DPTR
          MOV A, R0
          MOVX @DPTR, A ;新地址寫入前一頁的地址單元
          PUSH 0
          PUSH 1
          PUSH 7
          LCALL WR_ONE ;把修改信息寫入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 ;寫入0FFFFH,表示文件分配結(jié)束
          LCALL WR_ONE
          YBSAVE13: POP 0
          POP 1
          POP 0
          POP 1 ;R1R0=DPTR=找到的第一個(gè)空閑頁
          POP ACC ;ACC=R7=空閑目錄區(qū)序號(hào)
          PUSH ACC
          MOV DPTR, #YB_BEG+8
          MOV B, #10
          LCALL TZDPTR ;確定目錄空閑區(qū)地址
          MOV A, R1


          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();