共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 跳转至页
回复
| 有奖活动 | |
|---|---|
| 这个春节你犒赏自己什么了?分享你的故事,有奖征集 | |
| 2026年“我要开发板活动”第三季,开始了! | |
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
我要赚赏金打赏帖 |
|
|---|---|
| Gravity:中英文语音合成模块V2.0及其串口控制被打赏¥24元 | |
| 全彩色度变化图的绘制被打赏¥27元 | |
| 【FreeRtos】FreeRtos任务栈的生长方向管理方式被打赏¥20元 | |
| 【瑞萨RA8D1 LVGL/LWIP评测】LVGL添加输入设备:EC11旋转编码器被打赏¥39元 | |
| 【瑞萨RA8D1 LVGL/LWIP评测】RA8D1部署FreeRTOS+LVGL被打赏¥33元 | |
| 空气质量检测器设计与实现被打赏¥24元 | |
| 【瑞萨RA8D1 LVGL/LWIP评测】LWIP进行UDP、TCP、HTTP、MQTT功能联合测试被打赏¥41元 | |
| 【瑞萨RA8D1 LVGL/LWIP评测】RA8D1部署FreeRTOS+LWIP被打赏¥36元 | |
| RTOS怎么选?让我来给你答案!被打赏¥15元 | |
| 【S32K3XX】Flash驱动使用被打赏¥26元 | |
我要赚赏金
