サンプルプログラムを参考に,次をC言語で書け.
- SW9(p8のbit2)を押下した時、トグルSW(p3)で設定した数値を変数valに保存 ただしSWをONしたとき(LCD方向に倒したとき)を1とする
- 1. で保存したデータをLED1〜LED8に表示。3.へ
- SW10(p8のbit3)を押下した時、トグルSW(p3)で設定した数値を読む(2回目の読み込み)。4.へ
- 3.で読み込んだ値を下位3ビットだけにマスクすること.(1から7までに制限すること) 5.へ
- 1.で保存した値を,4.で制限した値分だけ左論理シフトを行い,結果をLED1〜LED8に表示。1.に戻る
取出対象 & 取り出したいビットを示したマスクこれは,次のように動作する.
取出対象: 01010101 マスク : 00000111 結果 : 00000101(対象から取り出された部分)
× 入力ポート = 値; //エラーにならないが,値を保存できない ○ 変数 = 入力ポート;
○ 出力ポート = 値; × 変数 = 出力ポート; //エラーにならないが,でたらめな値を読込する
ii)は次のように動作することを確認すること
一回目の入力 0000 0101 sw9押し 二回目の入力 1000 0100 ←「4」を指定 sw10押し 結果の表示 0101 0000 ← 4bitずれた
次をC言語で書き直せ.
sined char c;
iii)は次のように動作することを確認すること
一回目の入力 1010 0000 sw9押し 二回目の入力 1000 0100 sw10押し 結果の表示 1111 1010
8ビットの入力データをBCD変換してLEDを点灯させよ.ただし0から99以外の数が入力された時には,エラーとしてフル点灯(11111111)させること.
次の4つが動作すること
スイッチ入力 0000 0000 (0) LED出力 0000 0000
スイッチ入力 0110 0011 (10進数「99」を2進数にしたもの) LED出力 1001 1001 ←「9」「9」と読める
スイッチ入力 0010 0000 (10進数「32」を2進数にしたもの) LED出力 0011 0010 ←「3」「2」と読める
スイッチ入力 1000 0000 (範囲外の数) LED出力 1111 1111 ←エラーを示す表示