STEP14_Polling
(1)STEP14_Polling
STEP14_Pollingソースプログラムを以下に示します。
/*****************************
STEP14_Polling.c
*****************************/
#define _LEGACY_HEADERS
// インクルードファイルの読み込み
#include <pic.h>
// コンフィギュレーションワードの設定
__CONFIG ( UNPROTECT & LVPDIS & BOREN & MCLREN & PWRTEN & WDTDIS & INTIO );
// プロトタイプ宣言
void WaitTime (int cnt);
// メイン関数
void main (void)
{
// 1,2,17,18端子を入出力端子に設定
CMCON = 0x07;
// 電圧レベルの初期設定
PORTA = 0xFF;
PORTB = 0xFF;
// 入出力設定
TRISA = 0b00101111;
TRISB = 0x00;
// 永久ループ
while(1)
{
// LED2状態反転
RB1 = ~RB1;
// 待ち時間関数の呼び出し
WaitTime(30000);
// SW1がONの場合
if(RA0 == 0)
{
// 待ち時間関数の呼び出し(チャタリング対策)
WaitTime(500);
// SW1がONの間ループ
while(RA0 == 0)
;
// 待ち時間関数の呼び出し(チャタリング対策)
WaitTime(500);
// LED1状態反転
RB0 = ~RB0;
}
}
}
// 待ち時間関数
void WaitTime(int cnt)
{
while(cnt > 0)
cnt--;
}
(2)STEP14_Pollingソースプログラムの実行
*初期状態でLED2が点滅します。
* SW1を押すとLED2の点滅が中断します。
*SW1を離すとLED1が点灯しLED2が点滅します。
*再度 SW1を押すとLED1が点灯し、LED2の点滅が中断します。
*SW1を離すとLED1が消灯しLED2が点滅します。
(3)ポーリングとは?
*定期的に状態を判断し、処理を行う方法をポーリングといいます。
*かつてはイベントループと読んでいた記憶があります。
*監視する周期が長くなってしまった場合、応答性が低くなる問題があります。
*STEP14_Pollingでは、WaitTime(30000);が応答性を低くします。