单片机 > 单片机程序设计 > 详情

AT24CXX串行EEPROM芯片读写程序

发布时间:2024-10-16 发布时间:
|

;说明:
;入口条件:数据放在ADAT_I2C中,页面放在APAG_IC2,字节地址放在AADR_I2C,如准备向AT24CXX第一页的字节地址03H中写入值0FH,则置APAG_IC2=01H,AADR_I2C=03H,ADAT_I2C=0FH。
;出口信息:读出的数据在累加器A中。
;影响资源:PSW、A、R7 堆栈需求: 6字节
;ASLK EQU P3.3           ;AT24CXX卡的SLK

;ASDA EQU P3.4       ;AT24CXX卡的SDA
ASLK EQU P1.4 ;AT24CXX芯片的SLK
ASDA        EQU P1.5 ;AT24CXX芯片的SDA
AADR_I2C    EQU 30H ; AT24CXX的字节地址
ADAT_I2C    EQU 31H ;读出、写入的地址
APAG_IC2             EQU 32H ; AT24CXX的页面
AWRTBYTE: ;向AT24C01写入一个字节---写串行E2PRAM
NOP 
LCALL ASTABIT ;初始化
MOV A,APAG_IC2 
ANL A,#0FH 
RL A 
ADD A,#0A0H 
LCALL AWRTBIT ;送出写控制字
MOV A,AADR_I2C 
LCALL AWRTBIT ;送出地址
MOV A,ADAT_I2C 
LCALL AWRTBIT ;写入数据
LCALL ASTPBIT ;停止
LCALL ADELAY 
SETB ASDA 
RET 
AREADBYTE: ;从24C01读入一个字节---读串行E2PRAM
NOP 
LCALL ASTABIT ;初始化
MOV A,APAG_IC2 
ANL A,#0FH 
RL A 
ADD A,#0A0H 
LCALL AWRTBIT ;送出写控制字
MOV A,AADR_I2C 
LCALL AWRTBIT ;送出地址
LCALL ASTABIT ;第二次初始化
MOV A,#0A1H 
LCALL AWRTBIT ;送出读控制字
LCALL AREADBIT ;读出数据
SETB ASDA 
RET 
ASTABIT: NOP 
SETB ASLK 
SETB ASDA 
LCALL ADELAY 
CLR ASDA 
LCALL ADELAY 
SETB ASDA 
RET 
AWRTBIT: NOP 
MOV R7,#08H 
AWRTLOP: NOP 
CLR ASLK 
NOP 
RLC A 
MOV ASDA,C 
NOP 
SETB ASLK 
NOP 
DJNZ R7,AWRTLOP 
CLR ASLK 
LCALL ADELAY 
SETB ASLK 
LCALL ADELAY 
CLR ASLK 
LCALL ADELAY 
SETB ASDA 
RET 
AREADBIT: NOP 
SETB ASDA 
NOP 
MOV R7,#08H 
AREADLP: NOP 
SETB ASLK 
NOP 
MOV C,ASDA 
RLC A 
NOP 
CLR ASLK 
NOP 
DJNZ R7,AREADLP 
LCALL ADELAY 
RET 
ASTPBIT: NOP 
CLR ASDA 
LCALL ADELAY 
SETB ASLK 
LCALL ADELAY 
SETB ASDA 
LCALL ADELAY1MS 
RET 
ADELAY1MS: 
MOV R7,#0FFH 
DJNZ R7,$ 
MOV R7,#0FFH 
DJNZ R7,$ 
MOV R7,#0FFH 
DJNZ R7,$ 
RET 
ADELAY: 
MOV R7,#0FH 
DJNZ R7,$ 
RET 




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32学习笔记4:外部中断