久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8019|回復: 5
收起左側

測試鐵電存儲器FM24C128A 附單片機程序源碼

[復制鏈接]
ID:27770 發表于 2018-10-10 06:21 來自手機 | 顯示全部樓層 |閱讀模式
    自從有了存儲器93C46,24C01,終于有了比較理想的不擔心失電丟數據的存儲器了!
單片機也有了內部儲存用戶數據區域,通過IAP操作,可實現數據長久保存,不用外掛存儲器啦!
而市場上也有了號稱與單片機系統速度同步的鐵電存儲器!
百花齊放的時代,有了更多選擇!
單片機內部的可改寫儲存區,對一些大量的一次性寫入數據來說,的確很不錯!但是,寫入之前必須擦除,且一次擦除512字節!對一些經常性需要改這改那的場合,就遇上一個小小的不方便,哪怕修改一個數,也得擦除512字節!與鐵電存儲器比較一下,才發現24C之類的覆蓋改寫是多么的寶貴!它不需任何擦除就可任意改寫任一個數據!完全可以按照需要去選擇.
最近做項目時,就遇上了這個問題.儲存區域保存有幾個手機號碼,及一些語句,運行中隨時需要更改某一個號碼,或某一語句,處理起來不方便啦! --- 這時,覆蓋改寫是一大優勢!
其次,存儲器與單片機可以分離,也就方便通過其它工具(例如電腦或者編程器)進行批量操作與數據更新!
于是,也買來些FM24C128A鐵電存儲器,并且進行實際測試.
盡管網上有許多文章以及器件手冊,可以參考學習,但是,沒有實踐的知識就都是人家的!
在測試中,按照最快速度去寫入/讀出,結果,一開始就發現有錯誤出現,(見圖).
過去做一些儀表項目,存儲器都是24C02便足夠,而24C128容量就大了許多,前者僅僅256字節,后者是16000字節!并且,說是很快很快也心存疑惑,到底有多快?
經過多次實驗,我使用的單片機一條指令執行時間為0.25us,首先發現是讀出不用任何延時也沒有什么問題,足夠快!隨后發現是每一次寫完8位數據后,需要有一個延時! 于是.從小到大,逐步增加延時時間,當時間到達近1ms時,就完全正常了!
實驗程序如下:
;==============================
;//FM24C128A讀寫測試程序 bjxs1508 2018-10-10 4:08
;-----------------------------------------------------------
P24DA        EQU        P12 ;引腳
P24CK        EQU        P13
P24DAM        EQU        P12M;工作模式寄存器
P24CKM        EQU        P13M
FC      EQU        C   ;系統C標志
;--------------------------------
ARDSH        DS        1;地址H
ARDSL        DS        1;地址L
R        DS        1;延時
TEMP        DS        1;延時
RE24        DS        1;存放讀出數據
WR24        DS        1;存放待寫數據
;==============================
;******程序開始*******
.CODE
;;;;;; 初始化略;;;;;;;;;
;==============================
B_LOOP:
        @RST_WDT
        CALL        B_WR24C  ;寫入256個字節:連續寫入成功!
        CALL        B_RED24C ;讀取256個字節;連續讀出成功!
        JMP        B_LOOP
;================================
B_RED24C:
        ZMN        ARDSH,#3FH ;24C128最后1頁256字節!
        ZMN        ARDSL,#0   ;低8位地址00開始使用
        ZHLN        #1,#00H
        ZB0         FGIE;開中斷
@@:
        CALL        B_RED24Z
        MOV_        @HL,RE24
        ZM0        RE24
        INCMS        L
        INCMS        ARDSL
        JMP        @B
        RET
;===============================
B_WR24C:;寫入數據
        ZB0         FGIE;禁止中斷
        ZMN        ARDSH,#3FH;24C128最后1頁256字節!
        ZMN        ARDSL,#0
@@:
        MOV_        WR24,#3EH ;256字節連續寫入3EH
        CALL        B_WRE24C
        CALL        B_Delms ;960us延時僅此處調用!
        INCMS        ARDSL
        JMP        @B
        RET
;============================
;FM24C128A讀寫子程序
;============================
B_WRE24C:
        MOV_        R,#08H;防止出錯,重復次數
B_WR24START:
        CALL        B_START
        BS0        FC
        JMP        B_RETESWR;如果總線無效跳轉
        MOV        A,#0A0H ;0A0H 指定寫操作
        CALL        B_Send        ;發送器件地址
        BS0        FC
        JMP        B_WRTOP        ;沒有應答跳轉
        MOV        A,ARDSH        ;發送地址高字節
        CALL        B_Send
        BS0        FC
        JMP        B_WRTOP        ;沒有應答跳轉
        MOV        A,ARDSL        ;發送低字節地址
        CALL        B_Send
        BS0        FC
        JMP        B_WRTOP        ;沒有應答跳轉
        MOV        A,WR24        ;得到數據
        CALL        B_Send        ;發送數據
        BS0        FC
        JMP        B_WRTOP        ;沒有應答跳出
        ZB0        FC        ;清除錯誤標志
B_WRTOP:
        CALL        B_STOP
        BS1        FC
        JMP        B_EXIT24B
B_RETESWR:
        DECMS        R
        JMP        B_WR24START
B_EXIT24B:
        RET
;===============================
B_RED24Z:
        MOV_        R,#08H ;重復次數
B_Reta:
        CALL        B_START
        BS0        FC
        JMP        B_RET255
        MOV        A,#0A0H ;指定寫操作
        CALL        B_Send
        BS0        FC
        JMP        B_RETOP
        MOV        A,ARDSH
        CALL        B_Send
        BS0        FC
        JMP        B_RETOP
        MOV        A,ARDSL
        CALL        B_Send
        BS0        FC
        JMP        B_RETOP
        JMP        B_CRERE
B_RETOP:
        CALL        B_STOP
        BS1        FC
        JMP        B_EXITB
B_RET255:
        DECMS        R
        JMP        B_Reta
B_EXITB:
        RET
;==============================
B_CRERE:
        MOV_        R,#08H ;防止出錯,重復次數
B_CRE24:
        CALL        B_START
        BS0        FC
        JMP        B_CRE250
        MOV        A,#0A1H;指定讀操作
        CALL        B_Send
        BS0        FC
        JMP        B_CTOP
        CALL        B_RE8B
        CALL        B_NAK
        ZB0        FC
B_CTOP:
        CALL        B_STOP
        BS1        FC
        JMP        B_EndRE
B_CRE250:
        DECMS        R
        JMP        B_CRE24
B_EndRE:
        RET
;===============================
B_Send:
        MOV        RE24,A
        MOV_        SSS,#8
        ZB1        P24DAM
B_Sen01:
        RLCM        RE24
        BS0        FC
        ZB1        P24DA
        BS1        FC
        ZB0        P24DA
        NOP
        ZB1        P24CK
        NOP
        ZB0        P24CK
        DECMS        SSS
        JMP        B_Sen01
        ZB0        P24DAM
        NOP
        ZB1        P24CK
        NOP
        ZB0        FC
        BS0        P24DA
        ZB1        FC
        ZB0        P24CK
        RET
;----------------------------------------------------------------
B_RE8B:
        ZB0        P24DAM
        MOV_        SSS,#8
B_RE8S:
        NOP
        ZB1        P24CK
        NOP
        ZB0        FC
        BS0        P24DA
        ZB1        FC
        RLCM        RE24
        ZB0        P24CK
        DECMS        SSS
        JMP        B_RE8S
        RET
;===============================
B_START:
        ZB1        P24DAM
        ZB1        P24CKM
        ZB1        P24DA
        ZB1        P24CK
        NOP
        BS1        P24DA
        JMP        B_ErrE
        ZB0        P24DA
        NOP
        ZB0        P24CK
        NOP
        ZB0        FC
        RET
B_ErrE:
        NOP
        ZB1        FC
        RET
;----------------------------------------------------------
B_STOP:
        ZB1        P24DAM
        ZB0        P24DA
        NOP
        ZB1        P24CK
        NOP
        ZB1        P24DA
        NOP
        RET
;=============================
B_NAK:
        ZB1        P24DAM
        ZB1        P24DA
        NOP
        ZB1        P24CK
        NOP
        ZB0        P24CK
        RET
;=============================
B_Delms:;時間太短會失敗!---僅僅一處調用!
        Z2MN        TEMP,R,#15,#0H ;這個才會成功! 2018-10-10 0:42
@@: ;15*256*0.25=960us
        DECMS        R
        JMP        @B
        DECMS        TEMP
        JMP        @B
        RET
;**********************************
        ENDP
;**********************************
IMG_20181009_083033.jpg
IMG_20181009_083950.jpg
IMG_20181009_083011.jpg
24128A_00.jpg
24128_3E.jpg
FM24C128A_2(1).jpg
24128_MS1.jpg
24128_3E.jpg
FM24C128A_1(1).jpg
24128A_02.jpg
24128A_03.jpg

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:433329 發表于 2018-11-26 12:14 | 顯示全部樓層
編好的程序可以共享一下嗎
回復

使用道具 舉報

ID:199427 發表于 2018-12-12 12:24 | 顯示全部樓層
請問總工:您有C語言的源碼可以分享嗎?匯編看不懂。
回復

使用道具 舉報

ID:478757 發表于 2019-2-21 10:07 | 顯示全部樓層
大師能給個代碼嗎,用用的芯片,線路圖,
回復

使用道具 舉報

ID:478757 發表于 2019-3-3 11:14 來自手機 | 顯示全部樓層
1126401079@qq.com
回復

使用道具 舉報

ID:64765 發表于 2019-10-25 15:59 | 顯示全部樓層
好資料,正在學習,謝謝分享。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 女同久久另类99精品国产 | 国产精品二区三区 | 欧美国产精品久久久 | 欧美一区二区三区在线观看 | 亚洲精品一区二区三区四区高清 | 亚洲二区在线 | 国产黄色在线观看 | 成人精品鲁一区一区二区 | 国产精品日女人 | 国产高清在线视频 | 欧美福利精品 | av资源中文在线天堂 | 久久精品国产亚洲 | 国产精品视频网址 | 国产精品久久久久久婷婷天堂 | 97超碰在线播放 | 久久综合一区二区三区 | 久久久中文 | 久草免费在线视频 | 亚洲 欧美 日韩在线 | 999在线精品| 免费观看成人鲁鲁鲁鲁鲁视频 | 久久精品免费观看 | 欧美日韩在线免费观看 | 久久久久久电影 | 国产精品视频一区二区三区 | 在线看一区二区三区 | 日韩在线中文 | 国产精品久久久久久中文字 | 成人午夜激情 | 日日操操 | 成年人在线视频 | 国产精品国产精品国产专区不片 | 欧美啪啪| 日韩精品专区在线影院重磅 | 亚洲视频在线看 | 天天澡天天操 | 国产一区欧美 | 日韩在线91| 毛片免费看 | 久久噜 |