#include <p32xxxx.h>
#include <sys/attribs.h>

#pragma config FCKSM = CSECMD // クロックの切り替えを許可する

int main(void)
{
    ANSELB = 0x00;          // ポートBをすべてデジタルモードにする  
    TRISB = 0;              // ポートBをすべて出力にする
    PORTB = 0;
    
    InitB1Input();
    InitTimer1();
        
    INTCONbits.MVEC = 1;            // マルチベクタ割り込みを有効にする      
    __builtin_enable_interrupts();  // マイコンにおける割り込みの有効  
    
    OSCCONbits.CLKLOCK = 0;  // クロック切り替えのロックを解除
    OSCCONbits.NOSC = 0b101; //低電力内蔵発振器(約31KHzで動作)に切り替える
    OSCCONbits.SLPEN = 1;    // スリープモードを使用
    asm volatile ("wait");   // wait命令でスリープモードに移行
    
    OSCCONbits.NOSC = 0b011; // XTPLLモードに戻す
    OSCCONbits.CLKLOCK = 1;  // クロック切り替えのロックを有効
        
    while(1) ;
}