导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→24C02为何仅能连续存入28个字节

* 63611: 24C02为何仅能连续存入28个字节

   zhongqiu 
zhongqiu发表的帖子 

 24C02为何仅能连续存入28个字节
各位老兄好,冒昧打搅了,我碰到了一个难题,目前非常困难,真的希望各位能给指点一下,问题这样的,通过串口接收不定数目字节的数据,我的编程思路是这样的,接收一个字节,存入24C02中,再接收,再存入,直到串口没有字节,判断串口有无字节,根据RI在一定时间内是否置位,在24C02的00H最后写入总共接收的字节数,此为其他程序读取24C02的需要,经过反复实验,串口没有问题,问题出在24C02中,问题是这样的,28个字节以内,可以正常接收,保存,超过28个字节,就不能正常保存了,我很不解,反复查阅资料,还是没有解决,所以冒昧再次跟各位请教了,谢谢!
附程序
;该程序为N个字节的串口接收程序,串口采用方式1,并将接收到的数据写到24C02的00H起始的地址中
MAINSCON:MOV 40H,#0A0H
      MOV 41H,#00H
      MOV 42H,#30H 
      SLAW EQU 40H
      NUMBYT EQU 41H
      NWD EQU 42H
      VSDA EQU P0.4
      VSCL EQU P0.5
SDL1:MOV TMOD,#20H;定时器T1作波特率发生器,工作于方式2
     MOV TL1,#0F3H;设定T1的初值确定波特率为4800
     MOV TH1,#0F3H;
     CLR ET1;T1作波特率发生器时应禁止中断
     SETB TR1;启动TR1计数
     MOV SCON,#52H;串行口设置方式1
     ORL PCON,#80H;SMOD=1
     MOV R0,NWD;待接收数据首地址
               ;待接收数据字节数量
     MOV R5,#5
     MOV R3,#50
     MOV R7,NUMBYT
     CJNE R7,#00H,WAIT
WAIT0:JBC RI,SSS
      AJMP WAIT0
WAIT:
     JBC RI,SSS

     DJNZ R5,WAIT
     DJNZ R3,WAIT
     AJMP WAIT1

SSS: CLR RI
     MOV A,SBUF
     MOV @R0,A
     MOV R7,NUMBYT
     INC R7
     MOV NUMBYT,R7

;该程序为将RAM30H-37H中的内容写到24C02的00H
      WRADD:LCALL STA
      MOV A,SLAW
      LCALL WRBYT
      LCALL CACK
      JB F0,WRADD
      MOV A,R7;写入EEPROM单元地址
      LCALL WRBYT
      LCALL CACK
      JB F0,WRADD
      MOV R0,NWD

WRDA:MOV A,@R0
     LCALL WRBYT
     LCALL CACK
     JB F0,WRADD
     LCALL STOP;至此将数据0AAH写入了EEPROM地址单元00中
PROGRAM:LCALL SDL1
        JB RI,SSS
        AJMP WAIT1

WAIT1:LCALL DIR
      CLR P1.4
      SETB P2.6
      CLR P2.6
      JB RI,SSS
      CLR P1.4
      SETB P2.6
      CLR P2.6

      AJMP WRITEONE
DIR:NOP
    NOP
    NOP
    RET
STA:SETB VSDA
    NOP
    SETB VSCL
    NOP
    NOP
    NOP
    NOP
    NOP
    CLR VSDA
    NOP
    NOP
    NOP
    NOP
    NOP
    CLR VSCL
    NOP
    RET
STOP:CLR VSDA
     NOP
     SETB VSCL
     NOP
     NOP
     NOP
     NOP
     NOP
     SETB VSDA
     NOP
     NOP
     NOP
     NOP
     NOP
     CLR VSCL
     CLR VSDA
     RET
MNACK:SETB VSDA
      SETB VSCL
      NOP
      NOP
      CLR VSCL
      CLR VSDA
      RET
MACK:CLR VSDA
     SETB VSCL
     NOP
     NOP
     CLR VSCL
     SETB VSDA
     RET
CACK:SETB VSDA
     NOP
     NOP
     SETB VSCL
     CLR F0
     NOP
     NOP
     MOV C,VSDA
     JNC CEND
     SETB F0
CEND:NOP
     CLR VSCL
     NOP
     RET
WRBYT:MOV R6,#08H
WLP:RLC A
    JC WR1
    SJMP WR0
WLP1:DJNZ R6,WLP
     NOP
     RET
WR1:SETB VSDA
    NOP
    SETB VSCL
    NOP
    NOP
    NOP
    NOP
    NOP
    CLR VSCL
    SJMP WLP1
WR0:CLR VSDA
    NOP
    SETB VSCL
    NOP
    NOP
    NOP
    NOP
    NOP
    CLR VSCL
    SJMP WLP1
RDBYT:MOV R6,#08H
RLP:SETB VSDA
    NOP
    SETB VSCL
    NOP
    NOP
    MOV C,VSDA
    MOV A,R2
    CLR VSCL
    RLC A
    MOV R2,A
    NOP
    NOP
    NOP
    DJNZ R6,RLP
    RET
WRITEONE:
         LCALL STA
      MOV A,SLAW
      LCALL WRBYT
      LCALL CACK
      JB F0,WRITEONE
      MOV A,#00H;写入EEPROM单元地址
      LCALL WRBYT
      LCALL CACK
      JB F0,WRITEONE
         MOV A,NUMBYT
         LCALL WRBYT
         LCALL CACK
         JB F0,WRITEONE
         LCALL STOP;至此将数据0AAH写入了EEPROM地址单元00中
        NOP
LL:END


发表时间:2004年9月29日16:43:20

  
回复该帖

本主题共有 9 帖,分页:>>>>>该主题的所有内容[9]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  63668.[详细]老古,该帖子这么长时间没人理了,作为解疑授惑之处,这种现象,很伤人心!!!!!!..
摘要:老古,该帖子这么长时间没人理了,作为解疑授惑之处,这种现象,很伤人心!!!!!!......(80字)
- [zhongqiu][1023次] 2004年9月30日

  63677.[详细]24C02如果连续写入的话,要分页写入的,每页为8个字节
摘要:......(无内容)
- [middle-rui][1415次] 2004年9月30日

  63742.[详细][quote][b]以下是引用[i]middle-rui在2004-9-30 20:22..
摘要:[quote][b]以下是引用[i]middle-rui在2004-9-30 20:22:28[/i]的发言:[/b] 24C02如果连续写入的话,要分页写入的,每页为8个字节 [/quote] &n......(210字)
- [zhongqiu][1125次] 2004年10月3日

[上一篇帖子]:谁知道信号隔离器ADUM1400CRW的电路?请帮帮忙!!!!谁知道信号隔离器ADUM1400CRW
[下一篇帖子]:[求助]VC高手指点有个问题想那们高手指点一下,在使用VC中不知道怎么回事,在头文件中定过的对象,在