記錄一下系統開機或是被 reset 時的一些旗標狀態。
旗標狀態
reset | WTRF | POR | EWT | WDCON | 判斷 |
power-on reset | 0 | 1 | 0 | 01000000b | POR=1 |
external reset | x | x | x | 0x0x0xx0b | EWT=1* POR=0# |
watchdog reset | 1 | x | x | 0x0x01x0b | WTRF=1 |
註解
- x: 保留原值,不會變更。
- *: 系統如果有開啟 watchdog 功能,在發生 external reset 時,EWT 一定是 1。
- #: 一開機時 POR=1,此時把 POR 設成 0,下次發生 external reset 時,POR 一定是 0,以此來區分。適合沒有開啟 watchdog 功能的系統。
判斷順序
- 開啟 watchdog: WTRF=1(watchdog) -> EWT=1(external) -> POR=1(power-on)。
- 關閉 watchdog: POR=1(power-on) -> POR=0(external),watchdog 不用判斷。
reset 開機狀態
- Program Counter 強制跳回 0000h,也就是從頭開始執行。
- SFR 都會返回 reset value,datasheet 有一張表。
- stack point 會變成 07h。
- Vdd 小於 2V 時,RAM 資料會遺失;反之則會保存。