© 2004 Microchip Technology Inc. DS70054C-page 7-25
Section 7. Oscillator
Oscillator
7
7.17.7 Clock Switch Code Examples
7.17.7.1 Starting a Clock Switch
The following code sequence shows how to unlock the OSCCON register and begin a clock
switch operation:
;Place the new oscillator selection in W0
;OSCCONH (high byte) Unlock Sequence
MOV #OSCCONH, w1
MOV #0x78, w2
MOV #0x9A, w3
MOV.b w2, [w1]
MOV.b w3, [w1]
;Set new oscillator selection
MOV.b WREG, OSCCONH
;OSCCONL (low byte) unlock sequence
MOV #OSCCONL, w1
MOV.b #0x01, w0
MOV #0x46, w2
MOV #0x57, w3
MOV.b w2, [w1]
MOV.b w3, [w1]
;Start oscillator switch operation
MOV.b w0, [w1]
7.17.7.2 Aborting a Clock Switch
The following code sequence would be used to ABORT an unsuccessful clock switch:
MOV #OSCCON,W1 ; pointer to OSCCON
MOV.B #0x46,W2 ; first unlock code
MOV.B #0x57,W3 ; second unlock code
MOV.B W2, [W1] ; write first unlock code
MOV.B W3, [W1] ; write second unlock code
BCLR OSCCON,#OSWEN ; ABORT the switch