51單片機控制24C02串行E2PROM的讀寫
AT24C02是美國ATMEL公司的低功耗CMOS串行EEPROM,它是內含256×8位存儲空間,具有工作電壓寬(2.5~5.5V)、擦寫次數多(大于10000次)、寫入速度快(小于10ms)等特點。
AT24C02的1、2、3腳是三條地址線,用于確定芯片的硬件地址。在AT89C51試驗開發板上它們都接地,第8腳和第4腳分別為正、負電源。第5腳SDA為串行數據輸入/輸出,數據通過這條雙向I2C總線串行傳送,在AT89C51試驗開發板上和單片機的P3.5連接。第6腳SCL為串行時鐘輸入線,在AT89C51試驗開發板上和單片機的P3.6連接。SDA和SCL都需要和正電源間各接一個5.1K的電阻上拉。第7腳需要接地。
這是將0600H地址中以下的8個數據寫到24C02的01H為首址單元中去的匯編程序
ORG 0000H
SCL BIT P3.4;定義24C02的串行時鐘線
SDA BIT P3.5;定義24C02的串行數據
SDA BIT P3.5;定義24C02的串行數據
LJMP START
START:LCALL STAR;調用
MOV R2,#08H;一個數據有8位
MOV DPTR,#0600H;定義源數據的位置
LOOP:MOV A,#00H
MOVC A,@A+DPTR
LCALL SDATA
LCALL ACK
JC LOOP
INC DPTR
DJNZ R2,LOOP
START:LCALL STAR;調用
MOV R2,#08H;一個數據有8位
MOV DPTR,#0600H;定義源數據的位置
LOOP:MOV A,#00H
MOVC A,@A+DPTR
LCALL SDATA
LCALL ACK
JC LOOP
INC DPTR
DJNZ R2,LOOP
LCALL STOP;調用停止子程序
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 上拉電阻相關文章:上拉電阻原理
評論