BASIC4MCU | 질문게시판 | (초보)atmega128 led 제어 질문드립니다
페이지 정보
작성자 aaa123 작성일2024-01-22 05:34 조회1,309회 댓글1건본문
atmega128 4핀 스위치 1개로 led 8개 제어하는 걸 공부하고 있습니다.
led는 부논리로 연결되어있고, 스위치는 풀업으로 연결되어있습니다.
게시글에 있는 예제를 따라 공부하고 있는데... led가 작동을 하지 않습니다.
코드를 어떻게 작성하든, 스위치가 0(안누를때) led가 켜지고, 스위치가 1(누를때) led가 꺼지는 동작을 하는데, 뭐가 문제인지 모르겠습니다. 회로 연결에는 딱히 문제가 없어보이는데...
int main(void){
DDRC=0xFF;
PORTE=0x01;
while(1){
if(PINE&0x01) PORTC &= ~0x01;
else PORTC |= 0x01;
}
}
int main(void){DDRA=0x01; PORTE=0x01;while(1){if(PINE&0x01)PORTA|= 0x01; // 스위치1이 1이면 LED포트에 1 출력else PORTA&=~0x01; // 스위치1이 0이면 LED포트에 0 출력}}둘 다 같은 동작을 합니다. 뭐가 문제일까요 ㅠㅠ 주말동안 고민해봤는데 답이 안나와서 도움을 요청합니다...
댓글 1
조회수 1,309master님의 댓글
master 작성일
int main(void){
DDRC=0xFF; PORTE=0x01;
while(1){
if(PINE&0x01)PORTC&=~0x01;
else PORTC|=0x01;
}
}
int main(void){
DDRA=0x01; PORTE=0x01;
while(1){
if(PINE&0x01)PORTA|= 0x01; // 스위치1이 1이면 LED포트에 1 출력
else PORTA&=~0x01; // 스위치1이 0이면 LED포트에 0 출력
}
}
두 소스의 차이는 LED 포트가 다릅니다.
위는 포트C에 LED가 연결되어 있고, 아래는 포트A입니다.
위 코드가 켜진다고 했으니 포트C에 LED가 연결되어 있겠죠?
int main(void){
DDRC=0xFF; PORTE=0x01;
while(1){
if(PINE&0x01)PORTC|=0x01;
else PORTC&=~0x01;
}
}
이렇게 변경하면 되겠습니다.
int main(void){
DDRC=1; PORTE=0x01;
while(1)PORTC=PINE;
}
PC0,PE0만 사용한다면 이렇게 해도 되겠죠