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