51單片機控制24C02串行E2PROM的讀寫
AT24C02是美國ATMEL公司的低功耗CMOS串行EEPROM,它是內(nèi)含256×8位存儲空間,具有工作電壓寬(2.5~5.5V)、擦寫次數(shù)多(大于10000次)、寫入速度快(小于10ms)等特點。
AT24C02的1、2、3腳是三條地址線,用于確定芯片的硬件地址。在AT89C51試驗開發(fā)板上它們都接地,第8腳和第4腳分別為正、負電源。第5腳SDA為串行數(shù)據(jù)輸入/輸出,數(shù)據(jù)通過這條雙向I2C總線串行傳送,在AT89C51試驗開發(fā)板上和單片機的P3.5連接。第6腳SCL為串行時鐘輸入線,在AT89C51試驗開發(fā)板上和單片機的P3.6連接。SDA和SCL都需要和正電源間各接一個5.1K的電阻上拉。第7腳需要接地。
24C02中帶有片內(nèi)地址寄存器。每寫入或讀出一個數(shù)據(jù)字節(jié)后,該地址寄存器自動加1,以實現(xiàn)對下一個存儲單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時間,一次操作可寫入多達8個字節(jié)的數(shù)據(jù)。
這是將0600H地址中以下的8個數(shù)據(jù)寫到24C02的01H為首址單元中去的匯編程序
ORG 0000H
SCL BIT P3.4;定義24C02的串行時鐘線
SDA BIT P3.5;定義24C02的串行數(shù)據(jù)
SDA BIT P3.5;定義24C02的串行數(shù)據(jù)
LJMP START
START:LCALL STAR;調(diào)用
MOV R2,#08H;一個數(shù)據(jù)有8位
MOV DPTR,#0600H;定義源數(shù)據(jù)的位置
LOOP:MOV A,#00H
MOVC A,@A+DPTR
LCALL SDATA
LCALL ACK
JC LOOP
INC DPTR
DJNZ R2,LOOP
START:LCALL STAR;調(diào)用
MOV R2,#08H;一個數(shù)據(jù)有8位
MOV DPTR,#0600H;定義源數(shù)據(jù)的位置
LOOP:MOV A,#00H
MOVC A,@A+DPTR
LCALL SDATA
LCALL ACK
JC LOOP
INC DPTR
DJNZ R2,LOOP
LCALL STOP;調(diào)用停止子程序
STAR:SETB SDA
SETB SCL
NOP
NOP
NOP
NOP
CLR SDA
NOP
NOP
NOP
NOP
CLR SCL
RET
SDATA:MOV R0,#08H
LOOP0:RLC A
MOV SDA,C
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
CLR SCL
DJNZ R0,LOOP0
RET
ACK:SETB SDA
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
MOV C,SDA
CLR SCL
RET
STOP:CLR SDA
NOP
NOP
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
SETB SDA
NOP
NOP
NOP
NOP
RET
ORG 0600H
DB 0A0H,10H,01H,02H,03H,04H,05H,06H
END 上拉電阻相關文章:上拉電阻原理
SETB SCL
NOP
NOP
NOP
NOP
CLR SDA
NOP
NOP
NOP
NOP
CLR SCL
RET
SDATA:MOV R0,#08H
LOOP0:RLC A
MOV SDA,C
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
CLR SCL
DJNZ R0,LOOP0
RET
ACK:SETB SDA
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
MOV C,SDA
CLR SCL
RET
STOP:CLR SDA
NOP
NOP
NOP
NOP
SETB SCL
NOP
NOP
NOP
NOP
SETB SDA
NOP
NOP
NOP
NOP
RET
ORG 0600H
DB 0A0H,10H,01H,02H,03H,04H,05H,06H
END 上拉電阻相關文章:上拉電阻原理
評論