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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 24C02(EEPROM)以字節(jié)讀寫程序(ASM)

          24C02(EEPROM)以字節(jié)讀寫程序(ASM)

          作者: 時(shí)間:2016-11-10 來源:網(wǎng)絡(luò) 收藏
          24C02字節(jié)讀寫時(shí)序

          本文引用地址:http://www.ex-cimer.com/article/201611/317445.htm

          選擇性讀時(shí)序

          .................24c02字節(jié)讀寫程序(已調(diào)試過).......................


          ;////////////////////////////////////////////////////
          ;AT89C52與AT24C02的IIC通信
          ;控制數(shù)碼管顯示0-P
          ;AT24C02采用字節(jié)寫和選擇性讀
          ;////////////////////////////////////////////////////
          DAUN EQU 18 ;寫入字節(jié)數(shù),對24C02(256BK)最大為255
          ADDR EQU 41H ;24C02操作數(shù)據(jù)地址
          WRDA EQU 42H ;寫入數(shù)據(jù)暫存器
          RDDA EQU 43H ;讀出數(shù)據(jù)暫存器

          WP BIT P1.0
          SCL BIT P1.1
          SDA BIT P1.2

          ORG 0000H
          SJMP MAIN
          ORG 0030H
          MAIN: CLR WP;開寫保護(hù)
          MOV SP,70H
          MOV P2,#0F7H
          MOV P0,#0FFH
          LCALL WRIIC;寫24C02
          LCALL DE1S
          D1:LCALL RDIIC;讀24C02
          LJMP D1

          ;寫24C02子程序
          WRIIC:MOV DPTR,#TAB
          MOV R0,#DAUN
          MOV ADDR,#00H;地址賦初值
          D2:LCALL START
          MOV WRDA,#0AEH
          LCALL SEND
          LCALL SACK
          MOV A,ADDR
          MOV WRDA,A
          LCALL SEND
          LCALL SACK
          CLR A
          MOVC A,@A+DPTR
          MOV WRDA,A
          LCALL SEND
          LCALL SACK
          LCALL STOP
          INC DPTR;數(shù)據(jù)表指針加一
          INC ADDR;24C02寫入地址加一
          LCALL D50U;寫入數(shù)據(jù)延時(shí),這個(gè)時(shí)間很重要
          DJNZ R0,D2
          RET
          ;讀24C02子程序
          RDIIC:MOV R0,#DAUN
          MOV ADDR,#00H
          D5:LCALL START
          MOV WRDA,#0AEH
          LCALL SEND
          LCALL SACK
          MOV A,ADDR
          MOV WRDA,A
          LCALL SEND
          LCALL SACK

          LCALL START
          MOV WRDA,#0AFH
          LCALL SEND
          LCALL SACK
          LCALL READ
          LCALL STOP;不需要讀應(yīng)答案信號

          MOV A,RDDA
          MOV P0,A
          LCALL DE1S
          INC ADDR;讀24C02數(shù)據(jù)地址加一
          DJNZ R0,D5
          RET
          ;24C02開始子程序
          START:SETB SDA
          SETB SCL
          LCALL DE5U
          CLR SDA
          LCALL DE5U
          CLR SCL
          RET
          ;24C02寫一個(gè)字節(jié)子程序
          SEND: MOV R1,#08H
          MOV A,WRDA
          D3:RLC A
          MOV SDA,C
          LCALL DE5U
          SETB SCL
          LCALL DE5U
          CLR SCL
          DJNZ R1,D3
          RET
          ;24C02讀一個(gè)字節(jié)子程序
          READ: MOV R1,#08H
          D6:SETB SDA
          LCALL DE5U
          SETB SCL
          LCALL DE5U
          MOV C,SDA
          RLC A
          CLR SCL
          DJNZ R1,D6
          MOV RDDA,A
          RET
          ;24c03寫應(yīng)答子程序
          SACK: SETB SDA
          LCALL DE5U
          SETB SCL
          LCALL DE5U
          D4:MOV C,SDA
          JC D4
          CLR SCL
          RET
          ;24C02通信結(jié)束子程序
          STOP: CLR SDA
          LCALL DE5U
          SETB SCL
          LCALL DE5U
          SETB SDA
          LCALL DE5U
          CLR SCL
          RET
          ;5US延時(shí)子程序
          DE5U: NOP
          NOP
          NOP
          NOP
          NOP
          RET
          ;1S延時(shí)子程序
          DE1S: MOV R3,#100
          E1:MOV R4,#20
          E2:MOV R5,#248
          DJNZ R5,$
          DJNZ R4,E2
          DJNZ R3,E1
          RET
          ;50US延時(shí),讓24C02寫入片內(nèi)ROM;
          D50U:MOV R6,250
          E3:NOP
          NOP
          NOP
          NOP
          DJNZ R6,E3
          RET
          ;顯示數(shù)據(jù)表
          TAB:DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H
          DB 0F8H,080H,090H,088H,083H,0C6H,0A1H
          DB 086H,08EH,089H,08CH

          END

          =====================================================================================

          /////////////////////////////
          ;此程序可歷遍整個(gè)EEPROM(256個(gè)字節(jié))
          ////////////////////////////
          wp equ p1.0
          scl equ p1.1
          sda equ p1.2

          wrda equ 40h
          rdda equ 41h

          org 0000h
          sjmp main
          org 0030h
          main:clr wp
          clr p2.0
          clr a
          mov r2,a
          mov r3,a
          mov p0,#020h
          mov sp,#70h
          mov 42H,#020h//要讀寫的字節(jié)數(shù)
          mov dptr,#tab
          n1:lcall wriic
          lcall d10m
          djnz 42,n1
          mov 43,#020h
          n2:lcall rdiic
          lcall d10m
          djnz 43,n2
          sjmp $

          wriic:lcall start
          mov wrda,#10101110b
          lcall send
          mov wrda,r2
          inc r2
          lcall send

          w1:clr a
          movc a,@a+dptr
          mov wrda,a
          lcall send
          inc dptr
          lcall stop
          ret

          rdiic:lcall start
          mov wrda,#10101110b
          lcall send
          mov wrda,r3
          inc r3
          lcall send
          lcall start
          mov wrda,#10101111b
          lcall send
          lcall read
          mov p0,rdda
          lcall d1s
          lcall stop
          ret

          read: mov r1,#08h
          d1:setb sda
          lcall d3u
          setb scl
          lcall d3u
          mov c,sda
          rlc a
          clr scl
          lcall d3u
          djnz r1,d1
          mov rdda,a
          lcall stop
          ret

          start:setb sda
          setb scl
          lcall d3u
          clr sda
          lcall d3u
          clr scl
          ret

          send: mov r0,#08h
          mov a,wrda
          s1:rlc a
          mov sda,c
          LCALL D3U
          setb scl
          lcall d3u
          clr scl
          lcall d3u
          djnz r0,s1

          setb sda
          lcall d3u
          setb scl
          lcall d3u
          s2:mov c,sda
          jc s2
          clr scl
          ret

          stop: clr sda
          lcall d3u
          setb scl
          lcall d3u
          setb sda
          lcall d3u
          clr scl
          ret

          d3u: nop
          nop
          ret

          TAB: DB 0C0H,0F9H,0A4H,0B0H
          DB 99H,92H,82H,0F8H
          DB 80H,90H,88H,83H
          DB 0C6H,0A1H,86H,8EH
          DB 0C0H,0F9H,0A4H,0B0H
          DB 99H,92H,82H,0F8H
          DB 80H,90H,88H,83H
          DB 0C6H,0A1H,86H,8EH

          D10m: ;誤差 0us
          MOV R7,#01H
          DL1:
          MOV R6,#26H
          DL0:
          MOV R5,#82H
          DJNZ R5,$
          DJNZ R6,DL0
          DJNZ R7,DL1
          RET

          D1s: ;誤差 0us
          MOV R7,#0A7H
          DL4:
          MOV R6,#0ABH
          DL3:
          MOV R5,#01H
          DJNZ R5,$
          DJNZ R6,DL3
          DJNZ R7,DL4
          NOP
          RET

          END



          關(guān)鍵詞: 24C02EEPROM字節(jié)讀

          評論


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