Hello,
I was wondering if someone could suggest why this code below doesn't work to change the oscillator speed of the Internal Oscillator while the program is running but the other code block below does work? Another thing I was pondering is, shouldn't I be setting bit 0 of the OSCCON register to 1? The datasheet for the 16f887 says this about bit 0:
1 = Internal oscillator is used for system clock
0 = Clock source defined by FOSC<2:0> of the CONFIG1 register.

Code:
'this doesn't work
   IF Push_Button = Is_Pressed THEN 
      IF OSCCON = %01100000 THEN 
         OSCCON = %01110000  
      ELSE 
         OSCCON = %01100000 
      ENDIF 
      WHILE Push_Button = Is_Pressed  
           PORTD = %10000001 ' Show that button press has stopped the code here
      WEND 
   ENDIF
Code:
'this works
   IF Push_Button = Is_Pressed THEN
      IF B = 0 THEN 
         B = 1 
      ELSE 
         B = 0
      ENDIF
      WHILE Push_Button = Is_Pressed  
           PORTD = %10000001 ' Show that button press has stopped the code here
      WEND
   ENDIF 
   IF B = 0 THEN OSCCON = %01110000 ' 8 MHz 
   IF B = 1 THEN OSCCON = %01100000 ' 4 MHz
Thanks
jessey