• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:AVR ATtiny2313のアセンブラプログラム)

AVR ATtiny2313のアセンブラプログラム: センセーショナルなタイトル

このQ&Aのポイント
  • ATtiny2313をATMELスタジオ7.0でプログラムする方法についての質問です。
  • PB0~PB3の出力パターンを制御するプログラムについての疑問を持っています。
  • 5秒以内に入力が変更されなかった場合、出力を制御する方法について助言を求めています。

質問者が選んだベストアンサー

  • ベストアンサー
  • koujikuu
  • ベストアンサー率43% (429/993)
回答No.1

PINB 入力は、I/Oポートの状態を直接読み取ります、機能で言えば 0BYYYYXXXX に相当します (PINB 1出力は出力ビットを反転させます) 不要なビットはANDでクリアしてから比較します AVR-gcc にて、Watchdog 割り込み試験しました #include <avr/io.h> // iotn2313.h #include <avr/interrupt.h> #include <avr/wdt.h> #define sbi(PORT,BIT) PORT |= _BV(BIT) //ビット操作のマクロ定義 #define cbi(PORT,BIT) PORT &=~_BV(BIT) ISR(WDT_OVERFLOW_vect) { PINB |= _BV(PB4); } int main(void) { wdt_disable(); wdt_enable(WDTO_4S); // watch dog 4s sbi(WDTCSR,WDIE); // watch dog int 許可 cbi(WDTCSR,WDIF); // watch dog int flag clear sei(); // 割り込み許可 volatile long i; PORTB = 0xff; DDRB = 0xff; while(1) { // led blink PINB |= _BV(PB0); for (i = 50000; i > 0; i--); } return 0; }

kazu3-satoh
質問者

お礼

御回答有難うございます。 出力の状態も含めてIOのデータが格納する事が判っただけでもばんばいざいです。ANDを取ってやれば良いのですよね、正論理では0、負論理では1でキャンセルする事が出来ますね。 C言語は一度も使った事が無くちんぷんかんぷんです。

関連するQ&A