アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のようなアセンブラのプログラムの勉強をしています。初心者。
(ベクターテーブルとかは省略してます)

この状態であれば、tablに書いたデータどおりにLEDが順番に点灯します。
しかしtablの内容を書き換えると、点灯しなくなります。命令語の意味を
調べたりしたのですが、わかりません。どなたか理由を教えてください。
(例えば)
10000000
01000000
00100000
00010000
10000000
01000000
00100000
・・・・

プログラム抜粋
reset:
mov.l#stack,sp
bsrinitio
begin:
mov.l#tabl,er1; 点灯データ表
mov.w#14,r2; 点灯データ表のデータ数
loop:mov.b@er1+,r0l
not.br0l
mov.br0l,@p1dr
bsrwait
dec.w#1,r2
bneloop
brabegin
;
tabl:.data.bb'10000000
.data.bb'01000000
.data.bb'00100000
.data.bb'00010000
.data.bb'00001000
.data.bb'00000100
.data.bb'00000010
.data.bb'00000001
.data.bb'00000010
.data.bb'00000100
.data.bb'00001000
.data.bb'00010000
.data.bb'00100000
.data.bb'01000000
;
initio:
mov.b#h'ff,r0l; ポート1を出力に設定
mov.br0l,@p1ddr
rts
;
wait:mov.ler0,@-sp
mov.l#h'100000,er0
wait1:nop
dec.l#1,er0
bnewait1
mov.l@sp+,er0
rts

A 回答 (1件)

tablの内容を、ループで送っているだけの簡単なプログラムみたいだが…



送っている1バイトの数値の各ビットがLEDの各セグメントに対応していて、例えばそのビットが1ならLEDが点灯するし、0なら消灯するという仕様なのではないか?

その辺は基盤の仕様によるので取説を良く読んで下さいな。
(この様にしてハードウェアをコントロールする方法をメモリマップドi/oと云う)
    • good
    • 0
この回答へのお礼

お礼が遅くなって申し訳ないです。なんとか解決しました。
ありがとうございました。

お礼日時:2010/12/30 01:24

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