论坛风格切换切换到宽版
  • 3314阅读
  • 5回复

请教24c01a的读写地址问题 [复制链接]

上一主题 下一主题
离线BG4ABM
 
发帖
1139
只看楼主 倒序阅读 0楼 发表于: 2007-08-09
在学习24c01a的程序时,我发现读写地址从0到255都可以,24c01a不是只有128个读写地址吗?为什么会从0到255都可以呢?
离线BG4UVR
发帖
11288
只看该作者 1楼 发表于: 2007-08-10
写入后可以正确读出?

如果是,那你发财了,呵呵
离线bellstudio
发帖
2820
只看该作者 2楼 发表于: 2007-08-11
:p
猜测前一半和后一半是重复的
离线BG4ABM
发帖
1139
只看该作者 3楼 发表于: 2007-08-11
sclk24   equ p3.4
sda24   equ p3.5

  org 0000h
  ajmp main
  org 0030h
main:
  mov dptr,#tab
  mov a,#00h ;读2401时的地址放入a
  lcall   rd24
  cjne a,#10,tt ;满10后,重新变为0,因为只显示0-9
  mov a,#00h
tt:mov 30h,a
  movc a,@a+dptr
  clr p2.6   ;开数码管
  mov p1,a   ;送显示
  mov a,30h
  inc a
  mov b,a ;开机次数放入b中
mov a,#00h; 写2401时的地址放入a
  lcall   wt24
  ajmp $

tab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h

rd24:   push acc     ;读24c02子程序。
    call start24   ;启动
    mov a,#0a0h   ;写控制字放入a
      call shift8   ;8位数据逐位移入sda24
      call ack   ;应答
    pop acc ;弹出要读入的数据的地址
    call shift8
      call ack
      call start24
      mov a,#0a1h ;读控制字放入a
      call shift8
      call ack
   
    mov r7,#8 ;接下来的这几行是把2401中的数据从sda24逐位移入a
    clr a
rd00:rl a ;8个位
    mov c,sda24
    setb sclk24
    clr sclk24
    mov acc.0,c
    djnz r7,rd00
    ret

wt24:push acc;写入24c02程序:
    call start24
    mov a,#0a0h
    call shift8
    call ack
    pop acc ;弹出要写入的数据的地址
  call shift8
    call ack
    mov a,b
    call shift8
    call ack
    call stop
    call delay2
    ret

start24:clr sda24;开始条件
      setb sda24
        setb sclk24
        clr sda24
        clr sclk24
        ret

stop:clr sda24;停止条件
    setb sclk24
    setb sda24
    ret

ack: setb sclk24;应答信号
    clr sclk24
    ret

shift8: mov r7,#8;读、写数据
sh01:rlc a
    mov sda24,c
    setb sclk24
    clr sclk24
    djnz r7,sh01
    ret

delay2: nop
        ret

end
上面这个就是我做2401试验时用的程序,实现的功能是数码管显示单片机复位的次数,有条件的可以做一下这个试验。我用的数码管是共阳极的,如果是共阴的,需把tab后的段码改一下。我在做试验时同时改动了加下划线的2行(读和写的地址),结果从0到255都可以,所以我想不通:为什么2401有256个地址呢?
离线anybody-hf
发帖
1083
只看该作者 4楼 发表于: 2007-08-11
是不是厂家觉得麻烦啊,把24C01,24C02用同样的东西贴不同的型号????
离线bellstudio
发帖
2820
只看该作者 5楼 发表于: 2007-08-11
你把0~255写不同的书,写完了再读一遍就知道了
代码我不会,看不懂。。。