作成2014.03.02
- STEP10_Pattern
(1)STEP10_Patternソースプログラム
STEP10_Patternソースプログラムを以下に示します。
/*****************************
STEP10_Pattern.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 = 0x20;
TRISB = 0x00;
// 永久ループ
while(1)
{
// LED8,7,2,1のみ点灯
PORTB = 0b00111100;
// 待ち時間関数の呼び出し
WaitTime(10000);
// LED6,5,4,2,1のみ点灯
PORTB = 0b11000100;
// 待ち時間関数の呼び出し
WaitTime(10000);
// LED7,5,2,1のみ点灯
PORTB = 0b10101100;
// 待ち時間関数の呼び出し
WaitTime(10000);
// LED8,6,4,2のみ点灯
PORTB = 0b01010101;
// 待ち時間関数の呼び出し
WaitTime(10000);
// LED8,1のみ点灯
PORTB = 0b01111110;
// 待ち時間関数の呼び出し
WaitTime(10000);
// LED5,4,3のみ点灯
PORTB = 0b11100011;
// 待ち時間関数の呼び出し
WaitTime(10000);
}
}
// 待ち時間関数
void WaitTime(int cnt)
{
while(cnt > 0)
cnt--;
}
(2)STEP10_Patternlソースプログラム実行結果
*実行結果はLEDの点滅で確認できるのですが、ここではRB0、RB1、RB2、RB3の電圧変化を測定します。RB0、RB1、RB2、RB3の電圧変化測定結果を図9-1に示します。
*図9-1の電圧変化をみると、RB0、RB1、RB2、RB3の電圧が0Vに変化することが確認でします。RB4、RB5、RB6、RB7は測定していませんが同様に変化するはずです。
*LEDの点滅は設定パターンに依存します。
- STEP10_PatternRemodel
(1)STEP10_PatternRemodelソースプログラム
STEP10_PatternRemodelソースプログラムを以下に示します。
/*****************************
STEP10_PatternRemodel.c
*****************************/
#define _LEGACY_HEADERS
// インクルードファイルの読み込み
#include <pic.h>
// コンフィギュレーションワードの設定
__CONFIG ( UNPROTECT & LVPDIS & BOREN & MCLREN & PWRTEN & WDTDIS & INTIO );
// プロトタイプ宣言
void WaitTime (int cnt);
// メイン関数
void main (void)
{
// 点灯パターン配列
unsigned char a_ledptn[6] = { 0b00111100, 0b11000100, 0b10101100, 0b01010101, 0b01111110, 0b11100011};
// 点灯パターン配列の添え字用変数
unsigned char i = 0;
// 1,2,17,18端子を入出力端子に設定
CMCON = 0x07;
// 電圧レベルの初期設定
PORTA = 0xFF;
PORTB = 0xFF;
// 入出力設定
TRISA = 0x20;
TRISB = 0x00;
// 永久ループ
while(1)
{
// 指定した点灯パターンでLEDを点灯
PORTB = a_ledptn[i];
// 待ち時間関数の呼び出し
WaitTime(10000);
// 添え字が5よりも小さい場合
if(i < 5)
{
// 添え字に1プラスする
i++;
}
// その他の場合(添え字が5の場合)
else
{
// 添え字を0にする
i = 0;
}
}
}
// 待ち時間関数
void WaitTime(int cnt)
{
while(cnt > 0)
cnt--;
}
(2)STEP10_PatternRemodelソースプログラム実行結果
*実行結果はLEDの点滅で確認できるのですが、ここではRB0、RB1、RB2、RB3の電圧変化を測定します。RB0、RB1、RB2、RB3の電圧変化測定結果を図9-1に示します。
*図9-2の電圧変化をみると、RB0、RB1、RB2、RB3の電圧が0Vに変化することが確認でします。RB4、RB5、RB6、RB7は測定していませんが同様に変化するはずです。
*LEDの点滅は設定パターンに依存します。
- STEP10_VerseWriter
(1)STEP10_VerseWriterソースプログラム
STEP10_VerseWriterソースプログラムを以下に示します。
/*****************************
STEP10_VerseWriter.c
*****************************/
#define _LEGACY_HEADERS
// インクルードファイルの読み込み
#include <pic.h>
// コンフィギュレーションワードの設定
__CONFIG ( UNPROTECT & LVPDIS & BOREN & MCLREN & PWRTEN & WDTDIS & INTIO );
// プロトタイプ宣言
void WaitTime (int cnt);
// メイン関数
void main (void)
{
// 点灯パターン配列
unsigned char ledptn[8] = { 0b11111100, 0b11110011, 0b11001011, 0b00111011, 0b11001011, 0b11110011, 0b11111100, 0b11111111 };
// 点灯パターン配列の添え字用変数
unsigned char i = 0;
// 1,2,17,18端子を入出力端子に設定
CMCON = 0x07;
// 電圧レベルの初期設定
PORTA = 0xFF;
PORTB = 0xFF;
// 入出力設定
TRISA = 0x20;
TRISB = 0x00;
// 永久ループ
while(1)
{
// 指定した点灯パターンでLEDを点灯
PORTB = ledptn[i];
// 待ち時間関数の呼び出し
WaitTime(600);
// 添え字が7よりも小さい場合
if(i < 7)
{
// 添え字に1プラスする
i++;
}
// その他の場合(添え字が7の場合)
else
{
// 添え字を0にする
i = 0;
}
}
}
// 待ち時間関数
void WaitTime(int cnt)
{
while(cnt > 0)
cnt--;
}
(2)STEP10_VerseWriterソースプログラム実行結果
*実行結果はLEDの点滅で確認できるのですが、ここではRB0、RB1、RB2、RB3の電圧変化を測定します。RB0、RB1、RB2、RB3の電圧変化測定結果を図9-1に示します。
*図9-3の電圧変化をみると、RB0、RB1、RB2、RB3の電圧が0Vに変化することが確認でします。RB4、RB5、RB6、RB7は測定していませんが同様に変化するはずです。
*LEDの点滅は設定パターンに依存します。