No.63611 作者:zhongqiu 邮件:xsz8866@126.com ID:26192 登陆:26次 文章数:10篇 最后登陆IP:221.215.99.85 最后登陆:2005/2/22 17:08:56 注册:2004/9/28 10:54:03 财富:161 发帖时间:2004/9/29 16:43:20 发贴者IP:221.215.99.80 标题:zhongqiu:24C02为何仅能连续存入28个字节 摘要:No.6361124C02为何仅能连续存入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:N ......
>>返回讨论的主题
|