平成23年特別  午後 問7 設問2(2) Cについて

にくまんさん  
(No.1)
初めまして。

春の試験で不合格になり、秋の合格に向けて勉強中です。
春の午後試験を復習していたのですが、表題の問題の解答が
納得できなかったので、教えてください。

解答例では
C:13-i
となっていますが、

iはLEDを示すカウンタとのことですので、
8+i
ではないでしょうか?

LED0⇒i=0
LED1⇒i=1
だと思うので、
13-i
の場合は、LED0とLED5が入れ替わってしまうと思います。


2011.08.28 14:33
店員さん 
(No.2)
LEDの表示順序だけを考えると、どちらでもよいような気がします。
SWが上位ビットに割りついているので、上位ビットからのほうが仕様としてきれいな気がします。
何か見逃しているかもしれませんが。
私はわかりませんが、ファームがわかる人なら良い解答ができると思います。

2011.08.30 22:05
管理人 
(No.3)
先ほど問題を見てみました。

問題文の
「読み込んだ時刻データが2011年4月17日,12時34分56秒ならばDate[0]~Date[5]に1,1,0,4,1,7が,Time[0]~Time[5]に1,2,3,4,5,6が格納される」

と、

  [c]の少し手前の work←Date[i]または work←Time[i]

の部分に着目してみてください。

PIO_Dは下位ビットから上位ビットに向かってLED0,LED1,…,LED5となっていますが、配列Time及び配列Dateは、逆に配列の添え字が小さいほうからLED5,LED4,…,LED0となってます。

配列の添え字iが1であればPIO_DのD12を1に、配列の添え字iが2であればPIO_DのD11を1に、というようにしたいので、これをiを用いて表すと解答例である 「13-i」になるのではないでしょうか。

[c]の部分をにくまんさんがご指摘している「8+i」とすると、Time[0]がLED0,Time[1]がLED1というようになるので、表示順序が反対(12時34分56秒が、65 43 21 と出力される)になってしまうように思います。
2011.08.30 23:01
にくまんさん  
(No.4)
ミルキー@管理人さん
店員さん
レスありがとうございます。

ミルキー@管理人さんのご指摘いただいた内容で氷解しました。

確かにDate[]、Time[]の配列と各桁の割り当てを確認すると、
例から12時34分56秒なら
Time[0]←1
Time[1]←2
Time[2]←3
Time[3]←4
Time[4]←5
Time[5]←6
ということですね。

そしてP34の[ダイナミック点灯方式]の(3)には
「LED3に4を表示させるためには、PIO_Dに16進数 0866 を書き込む」
と書いてあり、これは図4を見ると
LED5-D13
LED4-D12
LED3-D11
LED2-D10
LED1-D9
LED0-D8
という対応になっていることを説明していると思います。

ということはi=0のときには
Time[0]←1  ⇒  LED5-D13
という対応になっているんですね。

Time[]配列にどういう順番で値が格納されるか、という点の考慮が漏れていました。

注意して勉強を進めていこうと思います。

ありがとうございました。
2011.08.30 23:53

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop