BASIC4MCU | 질문게시판 | led 연속으로 켜기 질문..
페이지 정보
작성자 전자학습자 작성일2020-01-22 16:42 조회2,917회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=11546
본문
안녕하세요..
atmega128a 로
버튼을 눌렀다 떼면 각각 설정된 시간 동안 LED 1, 2, 3 을 켜는것을 목표로
질문도 수차례하고 답변받아서 하나씩 동작도시켜보고하면서
나름대로 테스트해보고있는데 될것같은데 뜻대로 안되니 굉장히 스스로 괴롭네요..
ISR (TIMER0_OVF_vect){count++;if(count>=1000){count=0;if(sec <a+b+c)sec++;}if (sec < a) PORTB=1;else if (sec < b) PORTB=2;else if (sec < c) PORTB=4;else PORTB=0;}이런식으로 a,b,c에 각각 값 넣어줘서 원하는 시간만큼 LED1,2,3이 연속으로 켜지는것부터 해봤구요..그런데 이렇게하면 전원을 넣자마자 동작을해서 버튼을 눌러야 동작을 하도록 수정하려고아랫글에 LED1개만 키는걸로 질문드려서 힌트를 받아서 직접 짜보려고했는데 잘 안돼서바꿔보고 바꿔보고 하다가 답변받았던것, 책보고 이해했던것 등등 토대로아래와같이 짰는데 버튼을 누르면 LED1만 그냥 계속 켜져있습니다..어디서부터 잘못되었을까요.. 재능이없는걸까요..그다지 어려운 동작은 아닌것같은데.. 몇일을 가지고했는데도 생각대로 안되네요..ISR (TIMER0_OVF_vect){int sec=a+b+c; // sec a+b+c으로 초기화int count=1000; // count 1000으로 초기화if ((PINE&8)==0) // PINE&8 누르면 동작(외부풀업저항 사용상태){count=0; // count 0으로 초기화sec=0; // sec 0으로 초기화}if(sec<a+b+c) // sec 가 a+b+c이하일때 동작{count++; // count +1 해주기if(count>=1000) // count 가 1000보다 크거나 같아지면 동작{count = 0; // count 0으로 초기화if (sec<a+b+c) // sec가 a+b+c이하일때 동작{sec++; // sec +1해주기}}if (sec<a) // sec가 a보다 작을때 동작{PORTB=1; // LED1 켜주기}else if (sec<b) // sec가 b보다 작을때 동작{PORTB=2; // LED2 켜주기}else if (sec<c) // sec가 c보다 작을때 동작{PORTB=4; // LED3 켜주기}else PORTB=0; // LED모두 꺼주기}}
댓글 0
조회수 2,917등록된 댓글이 없습니다.