BASIC4MCU | 질문게시판 | atmega128 FND에 대해 여쭙고 싶습니다.
페이지 정보
작성자 궁금증 작성일2020-10-15 17:17 조회6,601회 댓글2건본문
인터럽트를 이용해 FND up counter(0~9)를 진행해봤는데 성공했습니다. 그런데 그 반대로 9에서 0으로 갈 때 진행이 계속 안되고 있습니다.
#include <avr/io.h>
#include <avr/interrupt.h>
unsigned char digit[]= {0xBE,0x06,0x7C,0x6E,0xC6,0xEA,0xFA,0x0E,0xFE,0xEE}; //0~9까지 데이터
unsigned char index=0;
ISR(INT7_vect)
{
cli(); //전역 인터럽트 비허용
index++;
if(index==10) index=0; //10이 되면 0으로 되돌아갑니다.
PORTC=digit[index];
EIFR=0xff;
sei();
}
//~ 이후에 int main으로 인터럽트 관련 내용을 썼습니다. 지금까지가 제가 했던 up counter을 했는데 down counter은 제가
#include <avr/io.h>
#include <avr/interrupt.h>
unsigned char digit[]= {0xBE,0x06,0x7C,0x6E,0xC6,0xEA,0xFA,0x0E,0xFE,0xEE}; //0~9까지 데이터
unsigned char index=9;
ISR(INT7_vect)
{
cli(); //전역 인터럽트 비허용
index--;
if(index==0) index=9; //0이 되면 9으로 되돌아갑니다.
PORTC=digit[index];
EIFR=0xff;
sei();
}
//이렇게하면 0이 될 때 9로 바로 돌아가서 9부터 0까지 한 번 나오고 그 뒤로 FND가 깨져서 나옵니다..
어떻게 하면 계속 인터럽트 스위치 누를 때마다 반복할 수 있을까요..?
댓글 2
조회수 6,601master님의 댓글
master 작성일
signed char index=9; // unsigned char index=9; // 부호형의 데이터형을 사용합니다.
if(index<0)index=9; // if(index==0) index=9; // 음수가 되면 9로 되돌아갑니다.
궁금증님의 댓글
궁금증
헉 정말 감사합니다. 이거때문에 몇시간을 헤맸는데 정말 감사합니다ㅠㅠ 이제야 답답한 마음이 싹 사라졌습니다.