C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

C 値の保持にかんして

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■37150 / inTopicNo.1)  C 値の保持にかんして
  
□投稿者/ tkana3 (1回)-(2009/06/14(Sun) 14:33:35)

分類:[C/C++] 

2009/06/14(Sun) 14:44:02 編集(投稿者)

こんにちは。

マイコンをつかいCの勉強をしています。

switchを押したとき、LED(複数あるなかの一つ ex LED1-4)を点灯させて
次に違うswitchを押下したとき、1回目に押下したLEDを点灯させたまま、
2つ目のLEDを点灯させたいのですが、1つ目のLEDが消えてしまいます。

ご指導よろしくお願いします。


while()
 {
  sw = PBDR; //swicth の読み込み
  sw = sw & 0x0f //mask

  if(sw == 0x08 || led1 == 0x80)
{
sw = sw<<4 //4bit shift
sw = PBDR; //led1 on
led1 = PBDR;   //led1が点いていることを保持するもの
//ここで、led1が消えてled2が点く。ここの修正らへんが必要かと…
PBDR = 0x80; //led1 on
}

  else if(sw == 0x04 || led2 == 0x40)
{
sw = sw<<4 //4bit shift
sw = PBDR; //led2 on
led2 = PBDR;   //led2が点いていることを保持するもの
PBDR = 0x40; //led1 on
}
       :
}

以上よろしくお願いしまう。


引用返信 編集キー/
■37151 / inTopicNo.2)  Re[1]: C 値の保持にかんして
□投稿者/ επιστημη (1966回)-(2009/06/14(Sun) 14:45:21)
επιστημη さんの Web サイト
> 次に違うswitchを押下したとき、1回目に押下したLEDを点灯させたまま、
> 2つ目のLEDを点灯させたいのですが、1つ目のLEDが消えてしまいます。

補足要求。
- LED-1を点灯させる命令
- LED-2を点灯させる命令
を示してください。

引用返信 編集キー/
■37152 / inTopicNo.3)  Re[2]: C 値の保持にかんして
□投稿者/ tkana3 (2回)-(2009/06/14(Sun) 14:51:35)
επιστημη さん

お世話になります。

> - LED-1を点灯させる命令

PBDR = 0x80; //led1 on

> - LED-2を点灯させる命令

PBDR = 0x40; //led2 on

の部分です。

よろしくお願いします。
引用返信 編集キー/
■37153 / inTopicNo.4)  Re[3]: C 値の保持にかんして
□投稿者/ επιστημη (1967回)-(2009/06/14(Sun) 15:01:12)
επιστημη さんの Web サイト
2009/06/14(Sun) 15:03:20 編集(投稿者)

>>- LED-1を点灯させる命令
> PBDR = 0x80; //led1 on
>
>>- LED-2を点灯させる命令
> PBDR = 0x40; //led2 on

LED-1がPBDRの第3bit (0x80= 00001000b)
LED-2がPBDRの第2bit (0x40= 00000100b)
に対応しているように見受けられます。

対応しているbitを1にすれば点灯するのかな。
だったら 第3,第2bitを1にすれば両方点灯しそうです。

ってわけで
PBDR = 0x80 | 0x40; (00001100b)
だとどうなりますか?

引用返信 編集キー/
■37154 / inTopicNo.5)  Re[4]: C 値の保持にかんして
□投稿者/ tkana3 (4回)-(2009/06/14(Sun) 15:26:06)
επιστημη さん

補足が悪かったようです…
> LED-1がPBDRの第3bit (0x80= 00001000b)
> LED-2がPBDRの第2bit (0x40= 00000100b)
> に対応しているように見受けられます。

sw1 = 0x08 = 00001000b
sw2 = 0x04 = 00000100b

led1 = 0x80 = 10000000b
led2 = 0x40 = 01000000b

です。同じポート(PBDR)に繋がっているため、4bitシフトさ
せそれをledに表示させているのです。


> PBDR = 0x80 | 0x40; (00001100b)


PBDR = 0x80 | 0x40; 「ここの部分(00001100b)ではなくて(11000000b)ですね」

これですと、一巡目にLED1・LED2が両方光ってしまうのでだめです…

ですので、光っている状態を保持するため、LED1にその値を保持させ、
もし2巡目にsw2を押したときに、最初のLED1を光らせて、その次にLED2のif文に入って
LED2を光らせたいのです。

以上よろしくお願いします(__)
引用返信 編集キー/
■37155 / inTopicNo.6)  Re[5]: C 値の保持にかんして
□投稿者/ επιστημη (1968回)-(2009/06/14(Sun) 15:38:46)
επιστημη さんの Web サイト

> PBDR = 0x80 | 0x40; 「ここの部分(00001100b)ではなくて(11000000b)ですね」←あ、ごめん。
>
> これですと、一巡目にLED1・LED2が両方光ってしまうのでだめです…

だーかーらー...

pattern = 0x00;
/* 一回目 */
pattern |= 0x80; /* LED-1のbitたてる */
PBDR = pattern; /* 光れ! */
/* 二回目 */
pattern |= 0x40; /* LED-2のbitたてる(他のbitはそのまま) */
PBDR = pattern; /* 光れ! */

てことよー

引用返信 編集キー/
■37156 / inTopicNo.7)  Re[6]: C 値の保持にかんして
□投稿者/ tkana3 (5回)-(2009/06/14(Sun) 16:08:53)
επιστημη さん

ありがとうございます。

> だーかーらー...

すみません。

> pattern = 0x00;
> /* 一回目 */
> pattern |= 0x80; /* LED-1のbitたてる */
> PBDR = pattern; /* 光れ! */
> /* 二回目 */
> pattern |= 0x40; /* LED-2のbitたてる(他のbitはそのまま) */
> PBDR = pattern; /* 光れ! */

「|=」の部分は考えもつきませんでした。勉強不足です…
また怒られそうですが…実は家にデバックできる環境がないため実行できません。
明日試してみたいと思います。

今後ともよろしくお願いします。。
引用返信 編集キー/
■37157 / inTopicNo.8)  Re[7]: C 値の保持にかんして
□投稿者/ επιστημη (1969回)-(2009/06/14(Sun) 16:12:42)
επιστημη さんの Web サイト
> 「|=」の部分は考えもつきませんでした。勉強不足です…

いや、勉強不足てゆっかー...

pattern |= 立てたいbit;



pattern = pattern | 立てたいbit;

と同じことっす。


引用返信 編集キー/
■37158 / inTopicNo.9)  Re[8]: C 値の保持にかんして
□投稿者/ tkana3 (6回)-(2009/06/14(Sun) 16:21:12)
επιστημη さん

いつも丁寧にやさしく(厳しく)ありがとうございます。

> いや、勉強不足てゆっかー...

いや、勉強不足です…  
「|=」知らなかったです。演算子なんかテキトーに
やればいいと思ってましたから。



引用返信 編集キー/
■37159 / inTopicNo.10)  Re[9]: C 値の保持にかんして
□投稿者/ επιστημη (1970回)-(2009/06/14(Sun) 16:26:48)
επιστημη さんの Web サイト
>>いや、勉強不足てゆっかー...
>
> いや、勉強不足です…  
> 「|=」知らなかったです。演算子なんかテキトーに
> やればいいと思ってましたから。

ぢつはこのケースでは論理演算不要です。
ふつーの"たしざん"で十分。

pattern = pattern + 0x80; /* or 0x40 */

なぜ + と | が同じことになるかわかんないなら、それこそ勉強不足かも♪

引用返信 編集キー/
■37160 / inTopicNo.11)  Re[10]: C 値の保持にかんして
□投稿者/ tkana3 (7回)-(2009/06/14(Sun) 16:31:56)
επιστημη さん

> なぜ + と | が同じことになるかわかんないなら、それこそ勉強不足かも♪

実は今ほぼ思考停止状態ですので、明日考えたいと思います(__)
これから秋月に「くれーまーくれーまー」してきます。
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ