Re: [問題] 跳出的問題

看板ASM (組合語言)作者 (新竹的仔)時間15年前 (2009/06/07 10:07), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串2/5 (看更多)
我之前的寫法,如下. 按下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
你要的效果是即使在寫page時也可以放棄?
06/07 15:56, 2F

06/07 18:22, , 3F
r大 : 對
06/07 18:22, 3F
文章代碼(AID): #1AAo39Mf (ASM)
討論串 (同標題文章)
文章代碼(AID): #1AAo39Mf (ASM)