作成2014.03.03
- STEP11_Switch
(1)STEP11_Switchソースプログラム
STEP11_Switchソースプログラムを以下に示します。
/*****************************
STEP11_Switch.c
*****************************/
#define _LEGACY_HEADERS
// インクルードファイルの読み込み
#include <pic.h>
// コンフィギュレーションワードの設定
__CONFIG ( UNPROTECT & LVPDIS & BOREN & MCLREN & PWRTEN & WDTDIS & INTIO );
// メイン関数
void main (void)
{
// 1,2,17,18端子を入出力端子に設定
CMCON = 0x07;
// 電圧レベルの初期設定
PORTA = 0xFF;
PORTB = 0xFF;
// 入出力設定
TRISA = 0b00101111;
TRISB = 0x00;
// 永久ループ
while(1)
{
// SW1がONの場合
if(RA0 == 0)
{
// LED1点灯
RB0 = 0;
}
// SW1がOFFの場合
else
{
// LED1消灯
RB0 = 1;
}
}
}
(2)STEP11_Switchlソースプログラム実行
*RA0,RA1,RA2,RA3が入力設定
*SW1がONの場合 LED1点灯、SW1がOFFの場合LED1消灯となります。
- STEP11_SwitchBlink
(1)STEP11_SwitchBlinkソースプログラム
STEP11_SwitchBlinkソースプログラムを以下に示します。
/*****************************
STEP11_SwitchBlink.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)
{
// SW1がONの場合
if(RA0 == 0)
{
// LED1点灯
RB0 = 0;
// 待ち時間関数の呼び出し
WaitTime(10000);
// LED1消灯
RB0 = 1;
// 待ち時間関数の呼び出し
WaitTime(10000);
}
// その他の場合(SW1がOFFの場合)
else
{
// LED1消灯
RB0 = 1;
}
}
}
// 待ち時間関数
void WaitTime(int cnt)
{
while(cnt > 0)
cnt--;
}
(2)STEP11_SwitchBlinkソースプログラムの実行
*RA0,RA1,RA2,RA3が入力設定
*SW1がONの場合 LED1が点滅、SW1がOFFの場合LED1消灯となります。
- STEP12_LogicOperator
(1)STEP12_LogicOperatorソースプログラム
STEP12_LogicOperatorソースプログラムを以下に示します。
/*****************************
STEP12_LogicOperator.c
*****************************/
#define _LEGACY_HEADERS
// インクルードファイルの読み込み
#include <pic.h>
// コンフィギュレーションワードの設定
__CONFIG ( UNPROTECT & LVPDIS & BOREN & MCLREN & PWRTEN & WDTDIS & INTIO );
// メイン関数
void main (void)
{
// 1,2,17,18端子を入出力端子に設定
CMCON = 0x07;
// 電圧レベルの初期設定
PORTA = 0xFF;
PORTB = 0xFF;
// 入出力設定
TRISA = 0b00101111;
TRISB = 0x00;
// 永久ループ
while(1)
{
// SW1 ON かつ SW2 ON の場合
if(RA0 == 0 && RA1 == 0)
{
// LED4〜1のみ点灯
PORTB = 0b11110000;
}
// SW1 ON かつ SW2 OFF の場合
else if (RA0 == 0 && RA1 == 1)
{
// LED1のみ点灯
PORTB = 0b11111110;
}
// SW1 OFF かつ SW2 ON の場合
else if (RA0 == 1 && RA1 == 0)
{
// LED2のみ点灯
PORTB = 0b11111101;
}
// その他の場合(SW1,2共にOFFの場合)
else
{
// 全消灯
PORTB = 0b11111111;
}
}
}
(2)STEP12_LogicOperatorソースプログラムの実行
*RA0,RA1,RA2,RA3が入力設定
*SW1 ON かつ SW2 ON の場合、LED1、LED2、LED3、LED4点灯
*SW1 ON かつ SW2 OFF の場合、LED1のみ点灯
*SW1 OFF かつ SW2 ON の場合、LED2のみ点灯
*SW1,2共にOFFの場合、全消灯
となります。
- STEP12_Nest
(1)STEP12_Nestソースプログラム
STEP12_Nestソースプログラムを以下に示します。
/*****************************
STEP12_Nest.c
*****************************/
#define _LEGACY_HEADERS
// インクルードファイルの読み込み
#include <pic.h>
// コンフィギュレーションワードの設定
__CONFIG ( UNPROTECT & LVPDIS & BOREN & MCLREN & PWRTEN & WDTDIS & INTIO );
// メイン関数
void main (void)
{
// 1,2,17,18端子を入出力端子に設定
CMCON = 0x07;
// 電圧レベルの初期設定
PORTA = 0xFF;
PORTB = 0xFF;
// 入出力設定
TRISA = 0b00101111;
TRISB = 0x00;
// 永久ループ
while(1)
{
// SW1がONの場合
if(RA0 == 0)
{
// SW2がONの場合
if(RA1 == 0)
{
// LED4〜1点灯
PORTB = 0b11110000;
}
// その他の場合(SW2がOFFの場合)
else
{
// LED1のみ点灯
PORTB = 0b11111110;
}
}
// その他の場合(SW1がOFFの場合)
else
{
// SW2がONの場合
if(RA1 == 0)
{
// LED2のみ点灯
PORTB = 0b11111101;
}
// その他の場合(SW2がOFFの場合)
else
{
// 全消灯
PORTB = 0b11111111;
}
}
}
}
(2)STEP12_Nestソースプログラムの実行
*RA0,RA1,RA2,RA3が入力設定
*SW1 ON かつ SW2 ON の場合、LED1、LED2、LED3、LED4点灯
*SW1 ON かつ SW2 OFF の場合、LED1のみ点灯
*SW1 OFF かつ SW2 ON の場合、LED2のみ点灯
*SW1,2共にOFFの場合、全消灯
となります。