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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機(jī)控制24C02串行E2PROM的讀寫

          51單片機(jī)控制24C02串行E2PROM的讀寫

          作者: 時間:2013-03-21 來源:網(wǎng)絡(luò) 收藏


          讀寫子程序如下:

          ;寫串行子程序EEPW
          ; R3=10100000(命令1010+器件3位地址+讀/寫。 器件地址一個芯片,是000)
          ; (R4)=片內(nèi)字節(jié)地址
          ; (R1)=欲寫數(shù)據(jù)存放地址指針
          ; (R7)=連續(xù)寫字節(jié)數(shù)n
          EEPW: MOV P1,#0FFH

            CLR  P1.0  ;發(fā)開始信號
            MOV  A,R3  ;送器件地址
            ACALL  SUBS
            MOV  A,R4  ;送片內(nèi)字節(jié)地址

          ACALL SUBS

          AGAIN: MOV A,@R1

            ACALL SUBS ;調(diào)發(fā)送單字節(jié)子程序INC   R1

            DJNZ  R7,AGAIN;連續(xù)寫n個字節(jié)

            CLR    P1.0  ;SDA置0, 準(zhǔn)備送停止信號

            ACALL DELAY ;延時以滿足傳輸速率要求

            SETB   P1.1  ;發(fā)停止信號

            ACALL DELAY

            SETB   P1.0

            RET
          SUBS: MOV R0,#08H ;發(fā)送單字節(jié)子程序

          LOOP: CLR P1.1
          RLC  A

            MOV  P1.0,

            NOP
            SETB P1.1

            ACALL DELAY

            DJNZ R0,LOOP ;循環(huán)8次送8個bit

            CLR  P1.1

            ACALL DELAY

          SETB P1.1
          REP: MOV C,P1.0

            JC  REP  ;判應(yīng)答到否,未到則
            CLR  P1.1

          RER
          DELAY: NOP

            NOP
            RET
          ;讀串行子程序EEPR

          ;(R1)=欲讀數(shù)據(jù)存放地址指針
          ;; R3=10100001(命令1010+器件3位地址+讀/寫。 器件地址一個芯片,是000)

          ;(R4)=片內(nèi)字節(jié)地址

          ;(R7)=連續(xù)讀字節(jié)數(shù)
          EEPR: MOV P1,#0FFH
          CLR  P1.0  ;發(fā)開始信號
          MOV  A,R3  ;送器件地址
            ACALL SUBS   ;調(diào)發(fā)送單字節(jié)子程序

          MOV A,R4   ;送片內(nèi)字節(jié)地址

            ACALL SUBS

            MOV P1,#0FFH
            CLR P1.0   ;再發(fā)開始信號
            MOV A,R3
            SETB ACC.0  ;發(fā)讀命令
          ACALL SUBS
          MORE: ACALL SUBR

            MOV @R1,A

            INC R1

            DJNZ R7,MORE

            CLR P1.0

            ACALL DELAY

            SETB P1.1
            ACALL DELAY

            SETB P1.0 ;送停止信號
            RE
          SUBR: MOV  R0,#08H ;接受單字節(jié)子程序

          LOOP2: SETB  P1.1
            ACALL DELAY
            MOV C,P1.0

            RLC 
            CLR P1.1

            ACALL DELAY

            DJNZ R0,LOOP2

            CJNE R7,#01H,LOW

            SETB P1.0  ;若是最后一個字節(jié)置A=1

            AJMP SETOK

          LOW: CLR P1.0  ;否則置A=0

          SETOK: ACALL DELAY

            SETB  P1.1

            ACALL DELAY

            CLR  P1.1

            ACALL DELAY

            SETB P1.0  ;應(yīng)答畢,SDA置1

            RET
            程序中多處調(diào)用了DELAY子程序(僅兩條NOP指令),這是為了滿足I2C總線上數(shù)據(jù)傳送速率的要求,只有當(dāng)SDA數(shù)據(jù)線上的數(shù)據(jù)穩(wěn)定下來之后才能進(jìn)行讀寫(即SCL線發(fā)出正脈沖)。另外,在讀最后一數(shù)據(jù)字節(jié)時,置應(yīng)答信號為“1”,表示讀操作即將完成。
          上拉電阻相關(guān)文章:上拉電阻原理

          上一頁 1 2 3 下一頁

          關(guān)鍵詞: 51單片機(jī) 24C02 E2PROM

          評論


          相關(guān)推薦

          技術(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); })();