応用情報技術者過去問題 平成23年特別 午後問7

問7 組込みシステム開発

LEDを使用したディジタル時計の設計に関する次の記述を読んで,設問1〜3に答えよ。

 Z社では,6個の7セグメントLEDで年月日及び時分秒を表示するディジタル時計の設計を行っている。

〔ディジタル時計の機器構成〕
 ディジタル時計のブロック図を,図1に示す。このディジタル時計は,LED,MPU,クロックカウンタ,リアルタイムクロック(以下,RTCという),機械的な押しボタン式スイッチ(以下,SWという),及びプログラムで入出力を設定できるプログラマブル入出力装置(以下,PIOという)で構成される。
pm07_1.gif/image-size:457×189
〔ディジタル時計の動作〕
  • 電源を入れると,初期化プログラムによってRTC,クロックカウンタ,PIOにそれぞれ初期設定データを書き込み,初期化する。SWを押しているときは年月日を表示し,押していないときは時分秒を表示する。
  • RTCは年月日,時分秒データ(以下,時刻データという)を保持し,RTC自身が時刻を更新する。RTCは1秒ごとにMPUに割込みを行い,RTC割込みハンドラを起動する。RTC割込みハンドラは,RTCから時刻データを読み込む。読み込んだデータは,配列 Date に,西暦年の下2けた,月,日が格納され,配列 Time に,時,分,秒が格納される。例えば,読み込んだ時刻データが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が格納される。
  • クロックカウンタは,クロックをカウントし,1ミリ秒ごとにMPUに割込みを行い,クロックカウンタ割込みハンドラを起動する。
〔PIO〕
 PIOの構成を図2に示す。PIOは,それぞれ16ビットで構成される入出力制御レジスタ(以下,PIO_Rという)とデータレジスタ(以下,PIO_Dという)から成る。PIOには16個の入力又は出力の設定が可能な端子があり,それぞれPIO_Dの1ビットに割り当てられる。
  • PIO_Rは,PIO_Dの各ビットを入力にするか出力にするかを決める。PIO_RのビットRiを1にするとPIO_DのビットDiは出力に指定され,0にすると入力に指定される。
  • PIO_Dにデータを書き込むと,PIO_Rによって出力に指定されたビットのデータだけが端子から出力される。一方,PIO_Dのデータを読み込むと,PIO_Rによって入力に指定された端子のデータだけが読み込まれる。入力に指定されていないビットのデータを読み込むと不定の値となる。
    pm07_2.gif/image-size:498×84
  • PIO_DのD14に割り当てられた端子には,SWが接続される。SWを押している間はオンとなり,そのときPIO_Dを読み込むとそのビットは1,SWがオフのときそのビットは0となる。PIO_Dを読み込むとそのときのD14の値がSWの状態となる。

〔ダイナミック点灯方式〕
 このディジタル時計で使用しているLEDの表示方法は,ダイナミック点灯方式である。ダイナミック点灯方式は,短時間に一つのLEDだけを点灯し,点灯するLEDを順に切り替え,あたかも全体が点灯しているかのように見せる方式である。 図3にLEDのセグメント割当てを,図4にLED表示部の構成を示す。
  • PIO_Dの下位8ビット D0〜D7 のうち,D0〜D6 にはLEDのセグメントa〜gを割り当て,D7には小数点dpを割り当てる。具体的には,D0をLEDのセグメントaに,D1をbに,…,D6をgに割り当てる。
  • PIO_Dの上位8ビット D8〜D15 のうち,D8〜D13 には,LED0〜LED5 を割り当て,D14 にはSWを割り当てる(D15は使用しない)。具体的には,D13 を LED5 に,D12 を LED4 に,…,D8 を LED0 に割り当てる。
  • LEDを点灯するためには,点灯するセグメントに対応するビット D0〜D7 に1を書き込み,点灯するLEDに対応するビット D8〜D13 に1を書き込む。
 例えば,表示する時分秒のうち,"分"の10分台の数字は LED3,1分台の数字は LED2 である。LED3 に4を表示させるためには,PIO_Dに16進数 0866 を書き込む。
pm07_3.gif/image-size:518×188
〔クロックカウンタ割込みハンドラ〕
 クロックカウンタ割込みハンドラは,ダイナミック点灯の制御及びSWの入力の判定を行う。その流れ図を図5に示す。
 配列 Pattern[0]〜[9] はそれぞれ16ビットの符号なし整数で,LEDに0〜9を表示するための点灯セグメントの情報を格納する。例えば,Pattern[4] はLEDに4を表示するため,16進数 0066 を格納している。
 iはLEDを示すカウンタ,cnt はSWの切替え時に状態が安定するまで待ち合わせるためのカウンタで,それぞれ16ビットの符号なし整数であり,初期値はいずれも0である。
 swState はSWの状態を表す1ビットの変数であり,prev は直前の割込み処理で検出したSWの値を表す1ビットの変数である。初期値はいずれも0である。
 work 及び,pwork は,16ビット符号なし整数であり,作業用の変数である。
 図5中の①の処理は,SWの状態が変化したときに,状態が安定するまで待ち合わせる処理である。
pm07_4.gif/image-size:491×335

設問1

初期化プログラムによって,PIO_Rを初期化する設定値を16進数4けたで答えよ。ただし,PIO_Dの未使用のビットは入力として設定すること。

-解答入力欄-

-解答例・解答の要点-

  • 3FFF

-解説-

この設問の解説はまだありません。

設問2

図5中のadについて,(1),(2)に答えよ。
  • abに入れる適切な配列名を答えよ。
  • cdに入れる適切な式を答えよ。

-解答入力欄-

    • a:
    • b:
    • c:
    • d:

-解答例・解答の要点-

    • a:Time
    • b:Date
    • c:13−i
    • d:i=6 又は i>=6 又は i>5

-解説-

この設問の解説はまだありません。

設問3

図5中の①の処理で,SWの状態を直ちに反映しない理由を,30字以内で述べよ。

-解答入力欄-


-解答例・解答の要点-

  • ・スイッチオン・オフ時は不安定な状態になるので (21文字)
    ・SWの状態が不安定なので (12文字)
    ・チャタリングによって,状態が不安定なので (20文字)

-解説-

この設問の解説はまだありません。
問7成績
【23年特別 午後問題】
 問1 問2 問3 問4 問5 問6 問7 問8 問9 問10 問11 問12
© 2010-2019 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop