※ ChatGPTを利用し、要約された質問です(原文:AVRマイコンでのアップダウンカウンターについて)
AVRマイコンでのアップダウンカウンターについて
このQ&Aのポイント
AVRマイコンを使用して、タクトスイッチを使ってカウントアップするプログラムがあります。ポートDの5番にもう1つタクトスイッチを付けてカウントダウンさせたい場合、どのようにプログラムを追加すればいいでしょうか。
下記のプログラムはAVRマイコンを使用して、ポートDの6番にタクトスイッチを付けてカウントアップするプログラムです。ポートDの5番にもう1つタクトスイッチを付けてカウントダウンさせたい場合、どのようにプログラムを追加すればいいでしょうか。
AVRマイコンを使用して、タクトスイッチを使ってカウントアップするプログラムがありますが、ポートDの5番にもう1つタクトスイッチを付けてカウントダウンさせたい場合、どのようにプログラムを追加すると良いでしょうか。
以下のプログラムはポートDの6番にタクトスイッチを付けてカウントアップさせるプログラムですが、
ポートDの5番にもう1つタクトスイッチを付けてカウントダウンさせたいのですがどのようにプログラムを
追加したら良いでしょうか?
変更前
#include <avr/io.h>
int main( void )
{
volatile uint16_t i;
uint8_t cnt,s0,s1;
cnt=0x0; /* カウント値の初期値=0 */
s1=0b01000000; /* 最初は押されていない状態をセット */
DDRB=0xff; /* PortBをすべて出力に設定する PortDはデフォルトで入力設定 */
PORTD=0b01000000; /* 入力設定になっているポートにHを書くとプルアップされる */
for (;;) { /* 無限ループ */
PORTB=cnt; /* カウント値ををPortBに出力 */
s0=s1; /* 前回のデータを保存して */
s1=(PIND & 0b01000000); /* ポートBと01000000のandをとるとB6の0/1だけがs1に代入される */
if(s0>s1){ /* 前回=64(off) 今回=0(on)のときswが押されたと判断 */
cnt++; /* カウントをインクリメント */
}
}
}
よろしくお願いします。