MPLAB X v6.20+MCCv5.50をもう少し使い込んでみようと思います。
PIC16F1827で、GPIOの設定をテストします。テストする回路図です。
RB4を入力に設定し、ウィークプルアップします。
RB3は出力に設定して、LEDを接続します。
ICSPでテストすます。
![](https://blogimg.goo.ne.jp/user_image/64/eb/e35a871a92960150334f4a78a8512520.png)
MCCの設定です。
クロックは、デフォルトのままで、16MHzです。
Pin Grid Viewで、RB3をoutputに、RB4をinputに設定します。
![](https://blogimg.goo.ne.jp/user_image/53/91/089e31d309812c5730b20423af8d1212.png)
次に、Pinsウインドウを開き、RB4のWeek Pillupにチェックを入れます。
![](https://blogimg.goo.ne.jp/user_image/14/0d/5a541ed645b600d63b4d7bdc45963986.png)
MCCの設定は、これだけです。Generateします。
まず単純にSWを押すとLEDが点灯するといいうプログラムです。
-----------------------------------------------------
#include "mcc_generated_files/system/system.h"
#define SW RB4
#define LED LATB3
int main(void)
{
SYSTEM_Initialize();
while(1){
if(SW == 0){
LED = 1;
}else{
LED = 0;
}
}
}
-----------------------------------------------------
ブレッドボードです。タクトスイッチを押すとLEDが点灯します。
![](https://blogimg.goo.ne.jp/user_image/42/fd/b15d091e3b56eb3ca48a6b5ccffe0d49.jpg)
ついでに、スイッチを押すたびに点灯と消灯を繰り返すプログラムを試しました。動作しますが、若干不安定な時もあります。
-----------------------------------------------------
#include "mcc_generated_files/system/system.h"
#define SW RB4
#define LED LATB3
int main(void)
{
SYSTEM_Initialize();
LED = 0;
int val = SW;
int state = 0;
while(1)
{
if((SW == 0) && (val == 1)){
state = 1 - state;
__delay_ms(10);//チャタリング待ち
}
val = RB4;
if(state == 1){
LED = 1;
}else{
LED = 0;
}
}
-----------------------------------------------------
※コメント投稿者のブログIDはブログ作成者のみに通知されます