24C02(EEPROM)以字节读写程序(ASM)

发布者:笑脸猫最新更新时间:2016-09-29 来源: eefocus关键字:24C02  EEPROM  字节读写 手机看文章 扫描二维码
随时随地手机看文章
24C02以字节读写时序

24C02(EEPROM)以字节读写程序 - 随梦飞翔 - 随梦飞翔

选择性读时序

24C02(EEPROM)以字节读写程序 - 随梦飞翔 - 随梦飞翔

.................24c02字节读写程序(已调试过24C02(EEPROM)以字节读写程序 - 随梦飞翔 - 随梦飞翔).......................

 


;////////////////////////////////////////////////////
;AT89C52与AT24C02的IIC通信
;控制数码管显示0-P
;AT24C02采用字节写和选择性读
;////////////////////////////////////////////////////
DAUN EQU 18  ;写入字节数,对24C02(256BK)最大为255
ADDR EQU 41H ;24C02操作数据地址
WRDA EQU 42H ;写入数据暂存器
RDDA EQU 43H ;读出数据暂存器

WP BIT P1.0
SCL BIT P1.1
SDA BIT P1.2

ORG 0000H
SJMP MAIN
ORG 0030H
MAIN: CLR WP;开写保护
      MOV SP,70H
      MOV P2,#0F7H
      MOV P0,#0FFH
      LCALL WRIIC;写24C02
      LCALL DE1S
   D1:LCALL RDIIC;读24C02
      LJMP D1
      
;写24C02子程序
WRIIC:MOV DPTR,#TAB
      MOV R0,#DAUN
      MOV ADDR,#00H;地址赋初值
   D2:LCALL START
      MOV WRDA,#0AEH
      LCALL SEND
      LCALL SACK
      MOV A,ADDR
      MOV WRDA,A
      LCALL SEND
      LCALL SACK
      CLR A
      MOVC A,@A+DPTR
      MOV WRDA,A
      LCALL SEND
      LCALL SACK
      LCALL STOP
      INC DPTR;数据表指针加一
      INC ADDR;24C02写入地址加一
      LCALL D50U;写入数据延时,这个时间很重要
      DJNZ R0,D2
      RET
;读24C02子程序
RDIIC:MOV R0,#DAUN
      MOV ADDR,#00H
   D5:LCALL START
      MOV WRDA,#0AEH
      LCALL SEND
      LCALL SACK
      MOV A,ADDR
      MOV WRDA,A
      LCALL SEND
      LCALL SACK
      
      LCALL START
      MOV WRDA,#0AFH
      LCALL SEND
      LCALL SACK
      LCALL READ
      LCALL STOP;不需要读应答案信号
      
      MOV A,RDDA
      MOV P0,A
      LCALL DE1S
      INC ADDR;读24C02数据地址加一
      DJNZ R0,D5
      RET     
;24C02开始子程序
START:SETB SDA
      SETB SCL
      LCALL DE5U
      CLR SDA
      LCALL DE5U
      CLR SCL
      RET
;24C02写一个字节子程序
SEND: MOV R1,#08H
      MOV A,WRDA
   D3:RLC A
      MOV SDA,C
      LCALL DE5U
      SETB SCL
      LCALL DE5U
      CLR SCL
      DJNZ R1,D3
      RET
;24C02读一个字节子程序
READ: MOV R1,#08H
   D6:SETB SDA
      LCALL DE5U
      SETB SCL
      LCALL DE5U
      MOV C,SDA
      RLC A
      CLR SCL
      DJNZ R1,D6
      MOV RDDA,A
      RET              
;24c03写应答子程序
SACK: SETB SDA
      LCALL DE5U
      SETB SCL
      LCALL DE5U
   D4:MOV C,SDA
      JC D4
      CLR SCL
      RET
;24C02通信结束子程序
STOP: CLR SDA
      LCALL DE5U
      SETB SCL
      LCALL DE5U
      SETB SDA
      LCALL DE5U
      CLR SCL
      RET
;5US延时子程序
DE5U: NOP
      NOP
      NOP
      NOP
      NOP
      RET
;1S延时子程序
DE1S: MOV R3,#100
   E1:MOV R4,#20
   E2:MOV R5,#248
      DJNZ R5,$
      DJNZ R4,E2
      DJNZ R3,E1
      RET
;50US延时,让24C02写入片内ROM;      
D50U:MOV R6,250
  E3:NOP
     NOP
     NOP
     NOP
     DJNZ R6,E3
     RET      
;显示数据表
TAB:DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H
    DB 0F8H,080H,090H,088H,083H,0C6H,0A1H
    DB 086H,08EH,089H,08CH

    END 

=====================================================================================

/////////////////////////////
;此程序可历遍整个EEPROM(256个字节)
////////////////////////////
wp equ p1.0  
scl equ p1.1
sda equ p1.2

wrda equ 40h
rdda equ 41h

org 0000h
sjmp main
org 0030h
main:clr wp
  clr p2.0
  clr a
  mov r2,a
  mov r3,a
  mov p0,#020h
  mov sp,#70h
  mov 42H,#020h//要读写的字节数
  mov dptr,#tab
  n1:lcall wriic
  lcall d10m
  djnz 42,n1
     mov 43,#020h
  n2:lcall rdiic
     lcall d10m
  djnz 43,n2
  sjmp $
  
wriic:lcall start
   mov wrda,#10101110b
   lcall send
   mov wrda,r2
   inc r2
   lcall send
   
   w1:clr a   
      movc a,@a+dptr
   mov wrda,a
   lcall send
   inc dptr
   lcall stop
   ret

rdiic:lcall start
   mov wrda,#10101110b
   lcall send
   mov wrda,r3
   inc r3
   lcall send
   lcall start
   mov wrda,#10101111b
   lcall send
   lcall read
   mov p0,rdda
   lcall d1s
   lcall stop
   ret

read: mov r1,#08h
   d1:setb sda
   lcall d3u
   setb scl
   lcall d3u
   mov c,sda
   rlc a
   clr scl
   lcall d3u
   djnz r1,d1
   mov rdda,a
   lcall stop
   ret

start:setb sda
   setb scl
   lcall d3u
   clr sda
   lcall d3u
   clr scl
   ret

send: mov r0,#08h
   mov a,wrda
   s1:rlc a
      mov sda,c
   LCALL D3U
   setb scl
   lcall d3u
   clr scl
   lcall d3u
   djnz r0,s1
   
      setb sda
   lcall d3u
   setb scl
   lcall d3u
   s2:mov c,sda
   jc s2
   clr scl
   ret

stop: clr sda
   lcall d3u
   setb scl
   lcall d3u
   setb sda
   lcall d3u
   clr scl
   ret

d3u: nop
  nop
   ret

TAB:    DB 0C0H,0F9H,0A4H,0B0H
        DB 99H,92H,82H,0F8H
        DB 80H,90H,88H,83H
        DB 0C6H,0A1H,86H,8EH
  DB 0C0H,0F9H,0A4H,0B0H
        DB 99H,92H,82H,0F8H
        DB 80H,90H,88H,83H
        DB 0C6H,0A1H,86H,8EH      
   
D10m:   ;误差 0us
    MOV R7,#01H
DL1:
    MOV R6,#26H
DL0:
    MOV R5,#82H
    DJNZ R5,$
    DJNZ R6,DL0
    DJNZ R7,DL1
    RET

D1s:   ;误差 0us
    MOV R7,#0A7H
DL4:
    MOV R6,#0ABH
DL3:
    MOV R5,#01H
    DJNZ R5,$
    DJNZ R6,DL3
    DJNZ R7,DL4
    NOP
    RET
       
 END

关键字:24C02  EEPROM  字节读写 引用地址:24C02(EEPROM)以字节读写程序(ASM)

上一篇:LCD12864图片显示
下一篇:24C02(EEPROM)以字节读写程序(ASM)

推荐阅读最新更新时间:2024-03-16 15:12

【STM32CubeMX】9,STM32之I2C,EEPROM
if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==GPIO_PIN_SET) { HAL_Delay(500); testarr +=3; if(HAL_I2C_Mem_Write(&hi2c1,0xa0,60,I2C_MEMADD_SIZE_8BIT,&testarr ,1,3000)==HAL_OK) { printf ( testarr =%drn ,testarr ); printf ( write OK !!!rn ); HAL_Delay(5); } else printf ( write false !!!rn ); // HAL_I2
[单片机]
STC单片机内部EEPROM的使用-记录上电次数
大多数情况下,大家存储掉电的数据都是用的24C02,在一些需要考虑成本的场合,内部的EEPROM也是可以考虑使用的,这个程序介绍一下,STC内部的EEPROM的使用,程序的功能是记录上电次数,然后加1,在数码管上显示出来。 /******************************************************************************* * 文件名: 数码管显示上电计数值 * 描 述: 上电计数 * 功 能:数码管的使用 11.0592MHZ * 作 者:大核桃 * 版本号:1.0.1(2017.05.23) ************************************
[单片机]
STC12C2052及11/10xx系列单片机通用EEPROM测试程序
近日研究STC12C2051的EEPROM的应用,发现官方只给出其汇编语言版本的程序。只有其公司最新推出的STC11/10xx系列的单片机有EEPROM的C语言测试程序。在网上搜索未果后,便自己动手修改,并将STC12C2052系列和STC11/10xx系列单片机的EEPROM测试程序整合起来,制作了一个适用性更好的程序。经在STC12C2052单片机硬件上测试正常,特此与大家分享! /********************************************************************************************* 程序名:STC系列单片机内部EEPROM 测试程序 编写人:杜
[单片机]
STM32L0 系列 EEPROM 读写,程序卡死?
前言 使用 STM32L051 和 STM32L071 替换 STM32 有一年多了,替换完成以后还根据自己产品的需求写了几篇记录博文: STM32L0 系列产品都自带了 EEPROM ,使用保存数据起来特别方便,因为写 EEPROM 并不需要删除一篇扇区,可以直接在指定地址写入。 但是最近有某个产品反馈,有时候会莫名其妙的“死机”,这是最直观的现象: 如果在初次配置完成(配置需要对 EEPROM 进行读写)后上电没问题,那么就一直没问题,如果断电重启,有可能遇到问题,遇到问题也是可以靠多重启几次解决(上电会读取 EEPROM 的数据)。 这个问题花了一些时间,其实就是 EEPROM 的读写问题。 我更新了好多次可以看出来,E
[单片机]
单片机小白学习之路(二十七)---EEPROM-IIC总线理解(二)
目标:EEPROM-IIC总线理解(二) 在实际的应用中,保存在单片机RAM中的数据,掉电后数据就丢失了,保存在单片机的FLASH中的数据,又不能随意改变,也就是不能用它来记录变化的数值。但是在某些场合,我们又确实需要记录下某些数据,而它们还时常需要改变或更新,掉电之后数据还不能丢失,比如我们的家用电表度数,我们的电视机里边的频道记忆,一般都是使用EEPROM来保存数据,特点就是掉电后不丢失。我们板子上使用的这个器件是24C02,是一个容量大小是2Kbit位,也就是256个字节的EEPROM。一般情况下,EEPROM拥有30万到100万次的寿命,也就是它可以反复写入30-100万次,而读取次数是无限的。 24C02是一个基于I
[单片机]
单片机小白学习之路(二十七)---<font color='red'>EEPROM</font>-IIC总线理解(二)
STM32F429--I2C通信(读写EEPROM,串口返回测试数据)
一、I2C介绍 I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息,SDA数据线和SCL时钟信号线。    主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。 如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送; 如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。 二、I2C的通信状态 总线空
[单片机]
STM32F429--I2C通信(<font color='red'>读写</font><font color='red'>EEPROM</font>,串口返回测试数据)
9.STC15W408AS单片机EEPROM
STC15系列单片机内部集成了大容量的EEPROM,与其程序空间是分开的。利用ISP/IAP技术可将内部Data Flash当EEPROM,擦写次数在10W次以上。EEPROM可分为若干个扇区,每个扇区包含512字节。使用时,建议同一次修改的数据放在同一个扇区,不是同一次修改的数据放在不同扇区,不一定要用满。数据存储器的擦除操作是按扇区进行的。 EEPROM可用于保存一些需要在应用中修改并且掉电不易丢失的参数数据。在用户程序中,可以对EEPROM进行子节读/字节编程/扇区擦除操作。在工作电压Vcc偏低时,建议不要进行EEPROM/IAP操作。 一、IAP及EEPROM相关寄存器 1.1 数据寄存器IAP_D
[单片机]
9.STC15W408AS单片机<font color='red'>EEPROM</font>
奥地利微电子推带Hi-EPR EEPROM的8位数字电位器 可进行10M写入
采用独特的Hi-EPR EEPROM,AS1506可提供卓越的直流性能,以及150年数据保持时间和10M写入次数等世界领先性能 中国—— 全球领先的通信、工业、医疗及汽车应用集成电路设计者和制造商奥地利微电子公司(SWX股票代码:AMS)今天推出256抽头、SPI接口、非易失数字电位器AS1506,可提供10、50和100kΩ电阻,进一步扩展了数字电位器产品系列。 AS1506的最大待机电流为500nA,包括CMOS写操作电流在内的最大工作电流只有200μA,因此是低功耗应用的理想选择。AS1506采用2.7至 5.5V单电源工作,端到端电阻的温度系数为90ppm/°C。AS1506具有±0.5LSB(最大值)的积分非线性(
[新品]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved