在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

            作者: 時間:2016-11-10 來源:網絡 收藏
            24C02字節(jié)讀寫時序

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

            選擇性讀時序

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


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

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

            ORG 0000H
            SJMP MAIN
            ORG 0030H
            MAIN: CLR WP;開寫保護
            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ù)據表指針加一
            INC ADDR;24C02寫入地址加一
            LCALL D50U;寫入數(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;不需要讀應答案信號

            MOV A,RDDA
            MOV P0,A
            LCALL DE1S
            INC ADDR;讀24C02數(shù)據地址加一
            DJNZ R0,D5
            RET
            ;24C02開始子程序
            START:SETB SDA
            SETB SCL
            LCALL DE5U
            CLR SDA
            LCALL DE5U
            CLR SCL
            RET
            ;24C02寫一個字節(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讀一個字節(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寫應答子程序
            SACK: SETB SDA
            LCALL DE5U
            SETB SCL
            LCALL DE5U
            D4:MOV C,SDA
            JC D4
            CLR SCL
            RET
            ;24C02通信結束子程序
            STOP: CLR SDA
            LCALL DE5U
            SETB SCL
            LCALL DE5U
            SETB SDA
            LCALL DE5U
            CLR SCL
            RET
            ;5US延時子程序
            DE5U: NOP
            NOP
            NOP
            NOP
            NOP
            RET
            ;1S延時子程序
            DE1S: MOV R3,#100
            E1:MOV R4,#20
            E2:MOV R5,#248
            DJNZ R5,$
            DJNZ R4,E2
            DJNZ R3,E1
            RET
            ;50US延時,讓24C02寫入片內ROM;
            D50U:MOV R6,250
            E3:NOP
            NOP
            NOP
            NOP
            DJNZ R6,E3
            RET
            ;顯示數(shù)據表
            TAB:DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H
            DB 0F8H,080H,090H,088H,083H,0C6H,0A1H
            DB 086H,08EH,089H,08CH

            END

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

            /////////////////////////////
            ;此程序可歷遍整個EEPROM(256個字節(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



            評論


            技術專區(qū)

            關閉