作者CuckooBoy (新竹的仔)
看板ASM
標題Re: [問題] 跳出的問題
時間Sun Jun 7 10:07:04 2009
我之前的寫法,如下.
按下E時,不會馬上跳開,要等一段時間.
另外, if (SBUF=='E'||SBUF=='e') 也會影響速度,
設越多速度越慢,行數變多,但是會比較靈.
顧及到速度,及"即時反應"...有更好的方法可以解決嗎?
FLAG EEPROM_Test(void)
{
FLAG ErrorBit = 0;
UWORD Test_Page,Test_Address,Test_Address1;
for (Test_Page = 0; Test_Page < 512 ; Test_Page++)
{
/*0x55 Test*/
I2C_Write(I2C_Start_Address + 0x0080 * Test_Page, 0x0080 +
(0x0080 * Test_Page), 0x55);
if (SBUF=='E'||SBUF=='e')
goto EEPROM_Test_Loop;
I2C_Read(I2C_Start_Address + 0x0080 * Test_Page, 0x0080 +
(0x0080 * Test_Page),Disable);
if (SBUF=='E'||SBUF=='e')
goto EEPROM_Test_Loop;
for (Test_Address = I2C_Start_Address + 0x0080 * Test_Page ;
Test_Address < 0x0080 + (0x0080 * Test_Page); Test_Address++)
{
if (XBYTE[Test_Address] != 0x55)
{
ErrorBit = 1;
goto EEPROM_Test_Loop;
}
if (SBUF=='E'||SBUF=='e')
goto EEPROM_Test_Loop;
}
/*0xAA Test*/
I2C_Write(I2C_Start_Address + 0x0080 * Test_Page, 0x0080 +
(0x0080 * Test_Page), 0xAA);
if (SBUF=='E'||SBUF=='e')
goto EEPROM_Test_Loop;
I2C_Read(I2C_Start_Address + 0x0080 * Test_Page, 0x0080 +
(0x0080 * Test_Page),Disable);
if (SBUF=='E'||SBUF=='e')
goto EEPROM_Test_Loop;
for (Test_Address1 = I2C_Start_Address + 0x0080 * Test_Page ;
Test_Address1 < 0x0080 + (0x0080 * Test_Page); Test_Address1++)
{
if (XBYTE[Test_Address1] != 0xAA)
{
ErrorBit = 1;
goto EEPROM_Test_Loop;
}
if (SBUF=='E'||SBUF=='e')
goto EEPROM_Test_Loop;
}
/*Clear*/
I2C_Write(I2C_Start_Address + 0x0080 * Test_Page, 0x0080 +
(0x0080 * Test_Page), 0x00);
if (SBUF=='E'||SBUF=='e')
goto EEPROM_Test_Loop;
// printf ("%d",(Test_Page + 1));
}
EEPROM_Test_Loop:
return(ErrorBit);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.194.110
※ 編輯: CuckooBoy 來自: 123.195.194.110 (06/07 10:20)
1F:推 hayden0828:速度+及時反應=中斷?? 06/07 15:43
2F:推 ruemann:你要的效果是即使在寫page時也可以放棄? 06/07 15:56
3F:→ CuckooBoy:r大 : 對 06/07 18:22