ディジタル入力を試す / タクトスイッチをオルタネート動作させる

pp.111-121
下のコードはisOn = !isOn;でフラグを反転したが、テキストは、isOn++; isOn%=2;で1、0を繰り返すという方法を使っている。
f:id:ti-nspire:20191129052339p:plain:h250

#include <xc.h>

#pragma config FOSC  = INTOSC
#pragma config WDTE  = OFF
#pragma config MCLRE = OFF

#define _XTAL_FREQ 4000000

int main(){

    OSCCON = 0x68; // 4 MHZ

    TRISA  = 0x0f; // ポートAの下位4ビットのIOをINにする。0でOUT、1でIN。
    ANSELA = 0x00; // ポートAを全部ディジタル入力端子にする。

    TRISB = 0x00; // ポートBのIOを全部OUTにする。0でOUT、1でIN。
    LATB  = 0xff; // ポートBに接続されたLEDを一旦全部消す。

    int isOn = 0; // 今点いているか点いていないかを示すフラグ。
    while(1){

        while(RA0);     // スイッチが押されるのを待って、
        __delay_ms(10); // 押されたらチャタリング防止として少し待ってから、
        while(!RA0);    // 放されるのを待って、
        __delay_ms(10); // 放されたらチャタリング防止として少し待ってから、

        if(!isOn){     // 今消えていたら、
            LATB0 = 0; // 点けて、
        }
        else{          // 今点いていたら、
            LATB0 = 1; // 消して、
        }

        isOn = !isOn; // フラグを反転する。

    }

    return 0;
}