プロが教える店舗&オフィスのセキュリティ対策術

大学の組み込みシステムという授業でパソコンに回路をくっつけて、プログラムを入力するというのをやっているのですが、全くわからなくて困っています。

写真はボタンを押したらLEDが3秒光って、3秒消えて、3秒光って、消えるというプログラムなのですが、これのLEDが光る部分をうっすら光るにするにはどうしたらいいかわかりますか?

どこかに高速ループしている記述部分があれば、それが流用できるとヒントがあるのですが意味がわかりません。

「大学の組み込みシステムという授業でパソコ」の質問画像

A 回答 (2件)

アセンブラソースを見る限り、下の2行の片方がLED点灯・もう片方がLED消灯と推測します。


MOV.B #01H,32[R4] ;点灯?
MOV.B #0F0H,32[R4] ;消灯?

TIMER_01とTIMER_03のループが点灯後の消灯時間待ち処理なのでしょう。
このループの中で、消灯→点灯…を繰り返せば、うっすら光るが表現できると思います。
それぞれのループ内のNOP3行のうち1行目と3行目をMOV.B~に置き換えて処理してみては?
    • good
    • 1
この回答へのお礼

天才やな

参考にさせてもらいます。ありがとうございました!

お礼日時:2020/06/23 16:21

参考までに、ループ処理の部分を解説しておきます(TIMER_01の部分を抜粋)。



MOV.L #0,R8
TIMER_01:
ADD #1,R8
NOP
NOP
NOP
CMP R8,R7
BNE TIMER_01

3秒の時間待ちを行うため、R8レジスタをカウンタとして使用します(初期値=0、MOV.L #0,R8)。
R8レジスタの値を1つ加算して(ADD #1,R8)、値がR7レジスタに設定している値に達するまで繰り返します。
(CMP R8,R7 がレジスタ同士の値の比較。BNE TIMER_01は比較の結果不一致ならTIMER_01のラベルにジャンプする命令)
※画像には写っていませんが、ソースの最初の方にR7レジスタに定数を代入している箇所があるはずです。

NOP命令は何か?…何もしません。No Operationの略です。
しかし、わずかながら命令を実行する時間が発生するため、時間調整の意味合いで使われることが多いです。
    • good
    • 1
この回答へのお礼

あなたに会えてよかった

ありがとうございます!

お礼日時:2020/06/23 16:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!