PIC16F1789 & MPUトレーナー 5 / 7 セグメント LED を使う 1

参考: 定番!ARMキット&PIC用Cプログラムでいきなりマイコン制御[DVD-ROM付き] (マイコン活用シリーズ), p.61, pp.64-65
youtu.be
f:id:ti-nspire:20170305193901p:plain:h200 f:id:ti-nspire:20170304151145p:plain:h200


main.c

#include "mcc_generated_files/mcc.h"

#define DIG1   RE0 //千の位
#define DIG2   RE1 //百の位
#define DIG3   RE2 //十の位
#define DIG4   RC1 //一の位

// 遅延函数
volatile int msCnt = 0;
void delay_ms(int cnt) {
	msCnt = cnt;
	while(msCnt);
}

//表示する桁を選択する。
void SelectDig(int dig) {
	DIG1 = 0;
	DIG2 = 0;
	DIG3 = 0;
	DIG4 = 0;
	if((dig < 0) || (dig > 3)) {
		return;
	}
	switch(dig) {
		case 0:  DIG4 = 1; break;
		case 1:  DIG3 = 1; break;
		case 2:  DIG2 = 1; break;
		case 3:  DIG1 = 1; break;
	}
}

// 1 桁分のデータを出力する。
void ShowSeg(int val) {
	char pat[16] = {
		//ABCDEFGP
		0b11111100, //0
		0b01100000, //1
		0b11011010, //2
		0b11110010, //3
		0b01100110, //4
		0b10110110, //5
		0b10111110, //6
		0b11100100, //7
		0b11111110, //8
		0b11100110, //9
		0b11101110, //A
		0b00111110, //b
		0b00011010, //c
		0b01111010, //d
		0b10011110, //E
		0b10001110, //F
	};
	PORTD = pat[val]; // たとえば val = 1 のときは RD7 ~ 1 に 01100000 がセットされる。
}

// 4 桁の数字を表示する。
void ShowData(int dat) {
	int i;
	int val;
	for(i = 0; i < 4; i++) {
		val = (dat & 0x000f); // 16 進 4 桁の最下位桁だけ取り出して、
		ShowSeg(val);         // それを 1 桁分のデータとしてセットし、
		SelectDig(i);         // i 桁目に出力し、
		delay_ms(1);          // 目に焼きつけてから残像が消えないうちに、
		SelectDig(-1);        // 全桁の表示を一旦消し、
		dat >>= 4;            // 16 進 4 桁の最下位桁を追い出して消す。これを 4 桁ぶん繰り返す。
	}
}

void main(void) {
	SYSTEM_Initialize();

	// 割り込みを使うときは以下のマクロを使う。
	INTERRUPT_GlobalInterruptEnable();
	INTERRUPT_PeripheralInterruptEnable();

	// 確かめてみる。
	while (1) {
		for(int i = 1; i < 0xffff; i++) {
			ShowData(i);
		}
	}
}

PIC16F1789 & MPUトレーナー 4 / 外部スイッチで LED を点滅する

参考: 定番!ARMキット&PIC用Cプログラムでいきなりマイコン制御[DVD-ROM付き] (マイコン活用シリーズ), p.59
f:id:ti-nspire:20170304145742p:plain:h250


main.c

#include "mcc_generated_files/mcc.h"

#define LED0    RB2
#define LED1    RB3
#define LED2    RB4

#define PUSH_SW0 RA3
#define PUSH_SW1 RB7
#define PUSH_SW2 RE3

#define LED_ON  1
#define LED_OFF 0

void main(void) {
    SYSTEM_Initialize();

    while (1) {
        if( PUSH_SW0) {LED0 = LED_OFF;}
        if(!PUSH_SW0) {LED0 = LED_ON ;}
        if( PUSH_SW1) {LED1 = LED_OFF;}
        if(!PUSH_SW1) {LED1 = LED_ON ;}
        if( PUSH_SW2) {LED2 = LED_OFF;}
        if(!PUSH_SW2) {LED2 = LED_ON ;}
    }
}

PIC16F1789 & MPUトレーナー 3 / L チカを行う

参考: 定番!ARMキット&PIC用Cプログラムでいきなりマイコン制御[DVD-ROM付き] (マイコン活用シリーズ), pp.41-51

 f:id:ti-nspire:20170228093715p:plain:h250

1. 前回作った framework.X をフォルダーごとコピーしてフォルダー名を「led_on.X」に変える。

2. MPLAB X IDE を起動する。

3. メニューバーから [File] > [Open Project] の順に選択する。

4. 1.で名前を変更した led_on を選択して [Open Project] ボタンをクリックする。

5. 左上のペインの [Projects] タブに表示された [framework] を右クリックし、[Rename] を選択する。
f:id:ti-nspire:20170226083756p:plain:h300

6. [Rename Project] ウィンドウが開くので、[Project Name] フィールドに「led_on」と入力し、[Rename] ボタンをクリックする。
f:id:ti-nspire:20170226084004p:plain:h130

プロジェクトを一旦閉じてもう一度開くと名前が変更されている。
f:id:ti-nspire:20170226091612p:plain:h150

7. メニューバーから [File] > [Project Properties] の順に選択する。
f:id:ti-nspire:20170226090116p:plain:h250

[Project Properties] ウィンドウが開くので、左の [Categories] ペインにある [PICkit3] を選択し、[Opetion Categories] ドロップダウンボックスから [Power] を選択する。[Power target circuit from PICkit3] のチェックボックスを外し、[Voltage Level] を [3.25] にする。
f:id:ti-nspire:20170226090252p:plain:h150

8. 左側のペインにある [Files] タブを選択して main.c をダブルクリックする。右上のペインにソースコードが表示されるので、下のソースコードに書き換える (参考文献 48 ページ、リスト 3-3 から変えた)。
f:id:ti-nspire:20170226092024p:plain:h250

#include "mcc_generated_files/mcc.h"

#define LED0    RB2
#define LED1    RB3
#define LED2    RB4
#define LED_ON  1
#define LED_OFF 0

void wait() {
    for(unsigned long i = 1; i < 15000; i++) {
    }
}

void main(void) {
    SYSTEM_Initialize();
    while(1) {
        LED0 = LED_ON;
        wait();
        LED0 = LED_OFF;
        wait();
        LED1 = LED_ON;
        wait();
        LED1 = LED_OFF;
        wait();
        LED2 = LED_ON;
        wait();
        LED2 = LED_OFF;
        wait();
    }
}


9. [Build Project] ボタンをクリックする。
f:id:ti-nspire:20170226084915p:plain:w300

エラーの出ていないことを確認する。
f:id:ti-nspire:20170226084957p:plain:h200

10. PICkit と MPU トレーナーとを下のように接続する。
f:id:ti-nspire:20170226085356j:plain:h300 f:id:ti-nspire:20170226090653p:plain:h300

11. [Make and Program Device] ボタンをクリックする。
f:id:ti-nspire:20170226091003p:plain:w300

エラーの出ていないことを確認する。
f:id:ti-nspire:20170226091112p:plain:h200