Owner's manual

13-4
Ultra-High-Speed Flash
Microcontroller Users Guide
A transient occurs while the op code is being fetched for the first instruction. The transient causes 1 bit of the op code in the first instruc-
tion to be read as a 0 instead of 1. The resulting program is what the microcontroller would actually execute:
TABLE_READ:
C2D2 80 0A 00 SJMP 0BH ;RELATIVE JUMP BY 10 LOCATIONS
C2D5 79 FF MOV R1, #0FFH ;LOAD COUNTER
C2D7 78 90 MOV R0, #90H ;DESTINATION POINTER
LOOP:
C2D9
E0 MOVX A, @DPTR ;READ DATA BYTE
C2DA F6 MOV @R0, A ;STORE IT IN RAM
C2DB 06 INC R0 ;NEXT TABLE LOCATION
C2DC A3 INC DPTR ;NEXT DATA VALUE
C2DD D9 C2 D9 DJNZ R1, LOOP ;NEXT BYTE OR DONE ?
The resulting jump is to address C2DE. This is not even a real op code, but would be treated as such. The resulting fetch is the value
C2 D9. This is the op code for CLR D9h. The bit-addressable location D9h corresponds to the EWT. If the timed-access procedure did
not prevent it, this errant instruction would disable the watchdog. Note that the program execution is completely lost now. Real op
codes are being replaced by operands, data, and garbage. In the ultra-high-speed micr
ocontroller, the watchdog recovers from this
state as soon as it times out, since it could not have been disabled in this way.
In the ultra-high-speed microcontroller it is very hard to contrive a situation that accidentally disables the watchdog. Note, the timed
access prevents accidentally writing a bit. It can not prevent accidentally calling the correct code that writes a bit. This is much more
unlikely, however.
Maxim Integrated