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