Re: [問題] 跳出的問題
我之前的寫法,如下.
按下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)
推
06/07 15:43, , 1F
06/07 15:43, 1F
推
06/07 15:56, , 2F
06/07 15:56, 2F
→
06/07 18:22, , 3F
06/07 18:22, 3F
討論串 (同標題文章)
ASM 近期熱門文章
PTT數位生活區 即時熱門文章