新聞中心

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

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

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

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

選擇性讀時(shí)序

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


;////////////////////////////////////////////////////
;AT89C52與AT24C02的IIC通信
;控制數(shù)碼管顯示0-P
;AT24C02采用字節(jié)寫(xiě)和選擇性讀
;////////////////////////////////////////////////////
DAUN EQU 18 ;寫(xiě)入字節(jié)數(shù),對(duì)24C02(256BK)最大為255
ADDR EQU 41H ;24C02操作數(shù)據(jù)地址
WRDA EQU 42H ;寫(xiě)入數(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;開(kāi)寫(xiě)保護(hù)
MOV SP,70H
MOV P2,#0F7H
MOV P0,#0FFH
LCALL WRIIC;寫(xiě)24C02
LCALL DE1S
D1:LCALL RDIIC;讀24C02
LJMP D1

;寫(xiě)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寫(xiě)入地址加一
LCALL D50U;寫(xiě)入數(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)答案信號(hào)

MOV A,RDDA
MOV P0,A
LCALL DE1S
INC ADDR;讀24C02數(shù)據(jù)地址加一
DJNZ R0,D5
RET
;24C02開(kāi)始子程序
START:SETB SDA
SETB SCL
LCALL DE5U
CLR SDA
LCALL DE5U
CLR SCL
RET
;24C02寫(xiě)一個(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寫(xiě)應(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寫(xiě)入片內(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//要讀寫(xiě)的字節(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é)讀

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉