- //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在典型应用下,溢出地址还是能够读写。
有什么办法能让它在地址超出范围时,不进行读写?
|