51单片机怎么向eeprom同一扇区写入多个数字
http://zhidao.baidu.com/link?url=UdYB7xO1TSTOwQlnq7VhxY1J55UMkWxrB10490Bsym8VCinCoLkS...
http://zhidao.baidu.com/link?url=UdYB7xO1TSTOwQlnq7VhxY1J55UMkWxrB10490Bsym8VCinCoLkSwAQ5j_KeBQzZGLYxm9UE-16V7G83I-uFb_我在这个网址找的程序,但是改不出来,直接说地址+1的就免了,试了没用,在读写之间加延迟也没有用
展开
2个回答
展开全部
原程序的编程子函数是一次只写一个字节的,是这么调用的,
ISP_PROGRAM(0x0000, LED_Buffer);它调用时写数据的地址是固定的0x0000,如果你真的也是这么调用的,即调用时地址是固定的,那就肯定是只能写一个字节了。要写多个数据,在主程序调用时这么改:ISP_PROGRAM(ramadd, LED_Buffer);让那个地址ramadd是个变量,而且是写多少个数据就要调用多少次,每调用一次地址+1就可以了。
原程序中的读数据子函数也得改,原来是ISP_READ(0x0000);这地址也是固定,也不行的,也只能读了一个字节,改成:ISP_READ(ramadd);,与写地址一致才能读出正确的数据。
ISP_PROGRAM(0x0000, LED_Buffer);它调用时写数据的地址是固定的0x0000,如果你真的也是这么调用的,即调用时地址是固定的,那就肯定是只能写一个字节了。要写多个数据,在主程序调用时这么改:ISP_PROGRAM(ramadd, LED_Buffer);让那个地址ramadd是个变量,而且是写多少个数据就要调用多少次,每调用一次地址+1就可以了。
原程序中的读数据子函数也得改,原来是ISP_READ(0x0000);这地址也是固定,也不行的,也只能读了一个字节,改成:ISP_READ(ramadd);,与写地址一致才能读出正确的数据。
追问
这是我改的主函数,其他都没改,但P1,P2,P0都是2,
void Main()
{
ISP_ERASE(0x0000); ISP_PROGRAM(0x0000, 0x05);
ISP_PROGRAM(0x2001, 0x02);
P0 = ISP_READ(0x0000);
P1 = ISP_READ(0x2001);
P2 = ISP_READ(0x0005);
}由于字数原因,读写之间延迟已删除
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询