BASIC4MCU | 질문게시판 | 답변 : led 연속으로 켜기 질문..
페이지 정보
작성자 master 작성일2020-01-22 17:05 조회6,095회 댓글2건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=11547
작성일
본문
알고리즘을 먼저 세운 후에 코딩을 해야합니다.
조건이 까다로워질 수록 코딩하는 시간보다 생각하는 시간이 길어야합니다.
//
ISR (TIMER0_OVF_vect){
int sec=a+b+c; // sec a+b+c으로 초기화if else 문을 보면c가 가장 큰 값일테고요sec의 초기값은 c를 주면 됩니다.//int sec=a+b+c; // sec a+b+c으로 초기화int sec=c; // sec c로 초기화또 한가지로컬변수는 선언할 때마다 실행 됩니다.매번 인터럽트 함수가 실행 될 때마다 sec=c;가 실행 되는 것이죠static int sec=c; // sec c로 초기화이렇게 하면 전역변수 초기값을 준 것처럼 동작합니다.웹검색해서 static 변수를 찾아보세요//
if (sec < a) PORTB=1;
초기값이 sec=0일 때 LED가 켜지게 되죠
sec=c; // 초기값이 0을 주지 않고 c를 주게되면
else PORTB=0;
else에 해당하므로 OFF 됩니다.
버튼을 누르면
뭘 한다고 했는데 버튼을 체크하는 코드가 없군요?
if(버튼 누르면){ count=0; sec=0; }
버튼 체크하는 곳에서 변수 clear 시켜주세요
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2020-01-22 오후 5:06:53// by Ok-Hyun Park//ISR(TIMER0_OVF_vect){static int sec=c; // sec c로 초기화//if(++count>=1000){ count=0; if(sec<c)sec++; }//if (sec<a)PORTB=1;else if(sec<b)PORTB=2;else if(sec<c)PORTB=4;else PORTB=0;}
댓글 2
조회수 6,095전자학습자님의 댓글
전자학습자 작성일
if ((PINE&8)==0) 이부분이 버튼을 누르면 동작하게하는 부분이었는데
이것도 이상한걸까요??
엉터리 질문에도 자세한 답변주셔서 감사합니다 선생님
다시 천천히해보겠습니다.
master님의 댓글
master
if ((PINE&8)==0) { count=0; sec=0; }