看个AT89C51ED2读取EEPROM数据问题//

[复制链接]
4007|5
 楼主| 俺从头来 发表于 2007-5-29 18:28 | 显示全部楼层 |阅读模式
帮俺分析分析,谢谢各位了////////////<br />在初始化程序中,从EEPROM中取出数据,存在片内XDATA中.在主程序中,从XDATA中取出保存数据,放在显示缓冲区,显示数据.<br />&nbsp;子程序如下<br />;********************************************************************<br />init_prg:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;dptr,&nbsp;#eei_menu_a_para&nbsp;&nbsp;&nbsp;&nbsp;;菜单参数调入&nbsp;eeprom-&gt&nbsp;xdata<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;r0,&nbsp;&nbsp;#menu_a_buff<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;r7,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#eei_menu_para_lth<br />&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;eei_xseq_read&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ret<br />;********************************************************************<br />;&nbsp;功能:&nbsp;&nbsp;&nbsp;&nbsp;从内部EEPROM存储器中读取一串数据,目标地址为XRAM<br />;&nbsp;输入:&nbsp;&nbsp;&nbsp;&nbsp;R7&nbsp;&nbsp;-&nbsp;&nbsp;被读取的数据长度<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0&nbsp;&nbsp;&nbsp;-&nbsp;目标首地址<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DPTR&nbsp;-&nbsp;源首地址<br /><br />eei_xseq_read:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;a,&nbsp;&nbsp;&nbsp;&nbsp;eecon<br />&nbsp;&nbsp;&nbsp;&nbsp;jb&nbsp;&nbsp;&nbsp;&nbsp;acc.0,&nbsp;&nbsp;&nbsp;&nbsp;eei_xseq_read&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;eebusy位为1<br />&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;ien0<br />&nbsp;&nbsp;&nbsp;&nbsp;clr&nbsp;&nbsp;&nbsp;&nbsp;ea<br />eei_xseq_read_next_byte:<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;eecon,&nbsp;&nbsp;&nbsp;&nbsp;#(&nbsp;1&lt&lteee&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;选择为片内EEPROM地址<br />&nbsp;&nbsp;&nbsp;&nbsp;movx&nbsp;&nbsp;&nbsp;&nbsp;a,&nbsp;&nbsp;&nbsp;&nbsp;@dptr<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;eecon,&nbsp;&nbsp;&nbsp;&nbsp;#0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;选择为XRAM地址空间<br />&nbsp;&nbsp;&nbsp;&nbsp;movx&nbsp;&nbsp;&nbsp;&nbsp;@r0,&nbsp;&nbsp;&nbsp;&nbsp;a<br />&nbsp;&nbsp;&nbsp;&nbsp;inc&nbsp;&nbsp;&nbsp;&nbsp;r0<br />&nbsp;&nbsp;&nbsp;&nbsp;inc&nbsp;&nbsp;&nbsp;&nbsp;dptr<br />&nbsp;&nbsp;&nbsp;&nbsp;djnz&nbsp;&nbsp;&nbsp;&nbsp;r7,&nbsp;&nbsp;&nbsp;&nbsp;eei_xseq_read_next_byte<br />&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;&nbsp;&nbsp;&nbsp;ien0<br />&nbsp;&nbsp;&nbsp;&nbsp;ret<br />;********************************************************************<br />main_prg:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;init_prg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;读取参数eeprom--&gtxdata<br />main_loop:&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;para_to_dly_buff&nbsp;&nbsp;&nbsp;;送显示区<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;display_all_para&nbsp;&nbsp;&nbsp;;显示参数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sjmp&nbsp;&nbsp;&nbsp;main_loop<br />这样LED显示参数不是EEPROM中保存的参数.<br /><br />//////////////////////////////////////////<br />后把init_prg放在main_loop循环中,显示正确数据<br /><br />//////////////////////////////////////////<br />后,改变读取EEPROM的方式:EEPROM--&gtDATA,再由DATA--&gtXDATA.init_prg放在mian_loop外也能显示正确数据.<br /><br />/////////////////////////////////////////<br />原来读取数据的方式不对吗??&nbsp;&nbsp;&nbsp;&nbsp;
 楼主| 俺从头来 发表于 2007-5-29 18:33 | 显示全部楼层
 楼主| 俺从头来 发表于 2007-5-29 18:38 | 显示全部楼层
 楼主| 俺从头来 发表于 2007-5-29 18:40 | 显示全部楼层

EEPROM_2

 楼主| 俺从头来 发表于 2007-5-29 18:43 | 显示全部楼层

EEPROM_3

程序并不符合(因为是EEPEOM--&gtXDATA,所以必须随时清EEE位&nbsp;)DATASHEET上的流程,是不是这个原因导致出错??但如果在主循环中一直初始化,为什么就对了呢???<br /><br />
 楼主| 俺从头来 发表于 2007-5-30 07:17 | 显示全部楼层

问题已经解决,读取eeprom 程序没有错,是程序其他地方有错

在第一种情况下,选择内部XDATA的语句处在了读取EEPROM后,导致错误
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

436

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部