AVR ATtiny2313のアセンブラプログラム
ATtiny2313をATMELスタジオ7.0でプログラムしようとしています。
今まではいわゆる1本プログラム(簡単なサブルーチンも使って)で組んでいましたが、
今回は欲を出して割り込みも使ってみたいと思っています。
PORTBを入力下位4Bitと出力上位4Bitで入力はプルアップに設定した後
LDI R16,0X0F
OUT PORTB,R16
LDI R16,0xF0
OUT DDRB,R16
入力状態で出力を決めるプログラムですが、PB0~PB3の全パターンが全て必要なわけではなく、
PB3が1の場合はPB0~2は必要ない、以下PB2が1の場合PB0~1は必要ない的な場合とかが有ります。
IN R17、PINB
双方向(InOut混在の場合出力(PB4~7)の状態によってR17はどう変化するのか?
R17は0b0000XXXXになるのか、0B1111XXXXなのか0BYYYYXXXX ;YはOutの状況1か0
それとも出力状態は反映されないのかその場合は0なのか1なのか、(Xは入力状態部分)
例えばCPで4Bitの全部を比較すれば答えは出ると思うのですが、不要な分が多くて困ります。
SBICとかSBISがうまく使えそうなのですが、良く理解できません。
出来たら数値は統一し、0XZZ(8BitのヘキサでZZが00~FFの範囲なのかなまた、4ビット表記では?どうなるの?)
もうひとつが、出力1をした後5秒以内に入力0が0から1にならなかった場合はサブルーチンで処理する的な事です。
今回その5秒の間に他の処理を考えています。
5秒の監視をウォッチドッグタイマーに任せて割り込み処理にしたいと思っていますが、
これに関して100%勉強不足で理解が出来ません。
例えば入力(Bit 0)でタイマーが開始それにより出力(Bit7)がOnした後5秒しても
入力(Bit1)が変更(0の場合と1の場合両方によって)されなかった場合に
出力(bIT6)をONするには??
ご教授 御願い申しあげます。 <(_ _)>
お礼
回答頂きありがとうございます。ヒューズビットではないのですね。それならソースコード変更でアクセスするのみですね。助かりました。