BASIC4MCU | 질문게시판 | atmega128 led 점등 +shift
페이지 정보
작성자 gewqw 작성일2022-12-15 00:14 조회3,568회 댓글6건본문
avr mega 128
led를 왼쪽에서 부터 0~7이라고 할 때,
led를 왼쪽에서 오른쪽으로 shift 하다가 한 바퀴 돌고 나면 led 0번이 계속 점등상태유지하다가
두 바퀴 돌면 led 0,1 둘 다 점등 유지 7바퀴돌고나면 LED 0~7모두 점등 후 다시 리셋하게하는 방식의 코드를 만들고 싶습니다!
출력을 할 수 있는 포트는 하나(PORTC)밖에 없는데 두가지의 기능을 하게하려면 어떻게 해야할까요?
댓글 6
조회수 3,568master님의 댓글
master 작성일
https://cafe.naver.com/circuitsmanual/153359
이 예제를 공부하고
예제와 다른 부분이 있으면 수정해서 만들어보세요
gewqw님의 댓글
gewqw 작성일
댓글 달아주셔서 감사합니다!
위 프로그램을 며칠 전에 게시글에서 발견하여 계속 코딩해 보았습니다. 그래서 이번에는 led shift는 유지한 상태에서 10초마다 led 0~7을 켜짐 상태를 유지하는 프로그램을 만들어 보고 싶습니다. 도와주실 수 있으실까요?
master님의 댓글
master
의미가 있는 코드라면 만들어드릴 수도 있지만
문제 자체가 "왜 이런 문제를 냈지?"라는 생각밖에 안 들어서 손대고 싶지가 않습니다.
gewqw님의 댓글
gewqw
출력할 수 있는 포트는 1개지만 이 1개의 포트 안에 3가지의 조건(10초마다 변하고, 쌓이고, 이동)을 어떤 방법으로 해결할 수 있을까 싶어서 여쭈어보았습니다..
master님의 댓글
master
int main(){
int i,k,n,led;
DDRC=0xFF;
while(1){
PORTC=0; n=0;
for(i=0;i<6;i++){ // 10초 * 6 = 60초
led=(1<<i)-1; // ON LED
for(k=0;k<10;k++){ // 10초 동안 쉬프트
PORTC=led|(1<<n);
if(++n>7)n=i;
_delay_ms(1000);
}
}
}
}
이 코드 돌려보세요
led=(1<<i)-1; // ON LED
이런 코드는 어디서도 본 적이 없을겁니다.
https://cafe.naver.com/circuitsmanual/153296
이 글을 만든지도 7년이 넘었네요
i=0; ○○○○○○○○
i=1; ○○○○○○○●
i=2; ○○○○○○●●
i=3; ○○○○○●●●
i=4; ○○○○●●●●
i=5; ○○○●●●●●
i=6; ○○●●●●●●
i=7; ○●●●●●●●
gewqw님의 댓글
gewqw 작성일감사합니다! 잘 참고하겠습니다.