共2条
1/1 1 跳转至页
问
我做的24C02的存取实验中:
为什么第二次读数据的时候,会接着第一次的读?(程序重新运行了)
谢谢指点!
程序如下:BITCNT EQU 40H
SUBADR EQU 41H
SDA BIT P1.6
SCL BIT P1.5
ORG 00H
JMP MAIN
ORG 0100H
MAIN:
SETB P1.0
MOV R6,#4
LOPP:
ACALL DELAY
ACALL READ_24C02
INC SUBADR
ACALL DELAY
MOV P2,A
ACALL DELAY
MOV P2,#0FFH
ACALL DELAY
DJNZ R6,LOPP
;JMP MAIN
;===================================
DELAY: MOV R0,#0FFH
DELAY0: MOV R1,#0FFH
DELAY1: NOP
NOP
NOP
DJNZ R1,DELAY1
DJNZ R0,DELAY0
RET
;=======================================
READ_24C02:
ACALL START
MOV A,#0A0H
ACALL SENTBYTE
JB F0,RCVRETURN
MOV A,SUBADR
ACALL SENTBYTE
JB F0,RCVRETURN
ACALL START
MOV A,#0A0H
SETB ACC.0
ACALL SENTBYTE
JB F0,RCVRETURN
ACALL RCVBYTE
RCVRETURN:
RET
;=========================================
START:
SETB SDA
NOP
NOP
NOP
SETB SCL
NOP
NOP
NOP
CLR SDA
NOP
NOP
NOP
CLR SCL
RET
;==================================
STOP:
CLR SDA
NOP
NOP
NOP
SETB SCL
NOP
NOP
NOP
SETB SDA
NOP
NOP
NOP
NOP
RET
;===============================
SENTBYTE:
MOV BITCNT,#08H
SENTB:
RLC A
MOV SDA,C
NOP
NOP
NOP
SETB SCL
NOP
NOP
NOP
CLR SCL
DJNZ BITCNT,SENTB
NOP
NOP
SETB SDA
NOP
NOP
SETB SCL
NOP
NOP
CLR F0
JNB SDA,ACKEND
SETB F0
ACKEND:
NOP
CLR SCL
RET
;=================================
RCVBYTE:
SETB SDA
MOV BITCNT,#08H
RCV:
NOP
CLR SCL
NOP
NOP
NOP
NOP
NOP
SETB SCL
NOP
NOP
MOV C,SDA
RLC A
NOP
NOP
DJNZ BITCNT,RCV
CLR SCL
NOP
NOP
CLR SDA
SETB SDA
NOP
NOP
SETB SCL
NOP
NOP
SETB SDA
NOP
NOP
NOP
CLR SCL
RET
END
答 1: 有没有人能帮帮我???? 答 2: 你能不能先把IIC写好,写24c02不就很简单了 答 3: 仿真看看是不是第2次读的时候SUBADR没改变?READEEPROM:
CALL STARTE2 ;开始
LD R1,#0A0H
CALL WR_BYTE
LD R1,R2 ;R2是需要读取数据的地址
CALL WR_BYTE
CALL STARTE2
LD R1,#0A1H
CALL WR_BYTE
CALL RD_BYTE ;输出r0是读取的数据
LD R3,R0
CALL SNACK
CALL EPSTOP
CALL DELAY20MS
RET
重复调用的时候只需要增加r2,r3的地址就ok
为什么第二次读数据的时候,会接着第一次的读?(程序重新运行了)
谢谢指点!
程序如下:BITCNT EQU 40H
SUBADR EQU 41H
SDA BIT P1.6
SCL BIT P1.5
ORG 00H
JMP MAIN
ORG 0100H
MAIN:
SETB P1.0
MOV R6,#4
LOPP:
ACALL DELAY
ACALL READ_24C02
INC SUBADR
ACALL DELAY
MOV P2,A
ACALL DELAY
MOV P2,#0FFH
ACALL DELAY
DJNZ R6,LOPP
;JMP MAIN
;===================================
DELAY: MOV R0,#0FFH
DELAY0: MOV R1,#0FFH
DELAY1: NOP
NOP
NOP
DJNZ R1,DELAY1
DJNZ R0,DELAY0
RET
;=======================================
READ_24C02:
ACALL START
MOV A,#0A0H
ACALL SENTBYTE
JB F0,RCVRETURN
MOV A,SUBADR
ACALL SENTBYTE
JB F0,RCVRETURN
ACALL START
MOV A,#0A0H
SETB ACC.0
ACALL SENTBYTE
JB F0,RCVRETURN
ACALL RCVBYTE
RCVRETURN:
RET
;=========================================
START:
SETB SDA
NOP
NOP
NOP
SETB SCL
NOP
NOP
NOP
CLR SDA
NOP
NOP
NOP
CLR SCL
RET
;==================================
STOP:
CLR SDA
NOP
NOP
NOP
SETB SCL
NOP
NOP
NOP
SETB SDA
NOP
NOP
NOP
NOP
RET
;===============================
SENTBYTE:
MOV BITCNT,#08H
SENTB:
RLC A
MOV SDA,C
NOP
NOP
NOP
SETB SCL
NOP
NOP
NOP
CLR SCL
DJNZ BITCNT,SENTB
NOP
NOP
SETB SDA
NOP
NOP
SETB SCL
NOP
NOP
CLR F0
JNB SDA,ACKEND
SETB F0
ACKEND:
NOP
CLR SCL
RET
;=================================
RCVBYTE:
SETB SDA
MOV BITCNT,#08H
RCV:
NOP
CLR SCL
NOP
NOP
NOP
NOP
NOP
SETB SCL
NOP
NOP
MOV C,SDA
RLC A
NOP
NOP
DJNZ BITCNT,RCV
CLR SCL
NOP
NOP
CLR SDA
SETB SDA
NOP
NOP
SETB SCL
NOP
NOP
SETB SDA
NOP
NOP
NOP
CLR SCL
RET
END
答 1: 有没有人能帮帮我???? 答 2: 你能不能先把IIC写好,写24c02不就很简单了 答 3: 仿真看看是不是第2次读的时候SUBADR没改变?READEEPROM:
CALL STARTE2 ;开始
LD R1,#0A0H
CALL WR_BYTE
LD R1,R2 ;R2是需要读取数据的地址
CALL WR_BYTE
CALL STARTE2
LD R1,#0A1H
CALL WR_BYTE
CALL RD_BYTE ;输出r0是读取的数据
LD R3,R0
CALL SNACK
CALL EPSTOP
CALL DELAY20MS
RET
重复调用的时候只需要增加r2,r3的地址就ok
共2条
1/1 1 跳转至页
回复
| 有奖活动 | |
|---|---|
| 【“龙虾”创意工坊征集令——用XClaw玩出最出乎意料的智能终端】有奖活动~ | |
| 2026年“我要开发板活动”第三季,开始了! | |
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
我要赚赏金打赏帖 |
|
|---|---|
| OK1126B-S开发板下函数构建及步进电机驱动控制被打赏¥25元 | |
| 【S32K3XX】LPI2C 参数配置说明被打赏¥20元 | |
| OK1126B-S开发板的脚本编程及应用设计被打赏¥27元 | |
| 5v升压8.4v两节锂电池充电芯片,针对同步和异步的IC测试被打赏¥35元 | |
| 【S32K3XX】S32DS LPI2C 配置失败问题解决被打赏¥22元 | |
| 【S32K3XX】FLASH 的 DID 保护机制被打赏¥19元 | |
| OK1126B-S开发板串口通信及其使用被打赏¥18元 | |
| 【S32K3XX】多核 CORE ID 获取被打赏¥18元 | |
| OK1126B-S开发板的GPIO资源及其使用被打赏¥20元 | |
| 【分享开发笔记,赚取电动螺丝刀】三分钟快速上手驱动屏幕(Arduino IDE环境)被打赏¥23元 | |
我要赚赏金
