//IIC测试程序
//IIC是好的 返回ROM_MAX
//IIC是坏的 返回读写不正确的地址
//uint8 uart_buf[48];
#define N 32//31 //定义不要与页写字节数有整数关系,好测试页写功能
#define ROM_MAX 0x8000 //8192//0x2000 //c32-4096 c64-8192 c128-16384 c256-32768
uint16 IIC_test(void)
{
uint16 Addr;
uint8 i;
Addr=0;
do
{
for(i=0;i<N;i++)
{
uart_buf[i]=(uint8)(Addr++);
}
WrToROM(uart_buf, Addr-N, N);
WDT = ~WDT;
}
while(Addr<ROM_MAX);
Addr=0;
do
{
RdFromROM(uart_buf, Addr, sizeof(uart_buf));
for(i=0;i<sizeof(uart_buf);i++)
{
if(!(uart_buf[i]==(Addr%256)))
{
return Addr;
}
Addr++;
}
WDT = ~WDT;
}
while(Addr<ROM_MAX);
return Addr;
}
以前测试时是IICrom是多大就ROM_MAX定义成多大,现在故意定义成0x8000,返回值还是还是0x8000。这表明24C64在典型应用下,溢出地址还是能够读写。
有什么办法能让它在地址超出范围时,不进行读写? |