PSoCでSWを押すとLEDが消える回路のプログラムがわかりません。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
たかし
記事: 48
登録日時: 12年前

PSoCでSWを押すとLEDが消える回路のプログラムがわかりません。

#1

投稿記事 by たかし » 11年前

現在大学でPSoCについて学び始めたものです。
SW(P14)を押すとLED1(P10)が消えるような回路を作るという課題が出されました。
ソースコードは与えられていたのですが、いくつか修正が必要になっているものでした。
それを私が修正して以下のコードに書き換えました。
このコードは正しいですか?

コード:

#include <m8c.h>
#include "PSoCAPI.h"
Modules

#define SW 0b00010000
#define LED 0b11111110

void main()
{
	
	PRT1DR &= (~SW);
	
	while(1){
		if(PRT1DR & SW){
			PRT1DR &= (~LED);
			PRT0DR &= (~SW);
		}else{
			PRT1DR |= LED;
			PRT1DR &= (~SW);
		}
	}
}

そして私はこのコードでどのような処理をしているのかがよく理解できません。
まず最初の
PRT1DR &= (~SW);
とありますがこれはどういう意味なのですか?
Port14 をHIGHにしているということですか?
またwhile文の中のelseとif文の処理もよくわかりません。

PSoCに詳しい方ご教授願います。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: PSoCでSWを押すとLEDが消える回路のプログラムがわかりません。

#2

投稿記事 by softya(ソフト屋) » 11年前

PSoC はチップ名ではないので的確に答えるには型番が必須だと思います。
特には私はPSoC 未経験なので、勘でしか答えれませんのでSW(P14)を押すとLED1(P10)などのピン割り当てに関してはよく分かりません。

これはブール演算を理解する必要性とC言語の文法を理解する必要があります。
PRT1DR &= (~SW);
 ↓ A&=BはA=A&Bと同等
PRT1DR = PRT1DR & (~SW);
これでも分かりませんでしょうか?

>またwhile文の中のelseとif文の処理もよくわかりません。

どこの部分が分からないのでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る