BASIC4MCU | 질문게시판 | avr, atmega128에서 led 점등 코드
페이지 정보
작성자 살려줘8282 작성일2020-12-11 18:00 조회6,351회 댓글1건본문
led가 8개(12345678로 정의할게요) 있고 스위치 2개로 led 제어하는데
1번 스위치는 led 앞쪽 4개(1234) 2번 스위치는 led뒤쪽 4개(5678) 를제어하는데
초기 상태 led 모두 off 상태에서
1번스위치를 한번 누르면 led가 1278 이 on 나머지는 off상태
1번 스위치를 한번 더 누르면 led가 2378 on 나머지는 off 이고
1번 스위치 한번더 누르면 led가 한번 눌렀을때로 돌아오고
2번 스위치를 한번 누르면 led가 12 68on 나머지 off
2번 스위치를 한번 더 누르면 led가 12 58on 나머지 off
2번 스위치 한번 더 누르면 led가 한버눌렀을때로 돌아오고
1번 스위치를 두번 누르고, 2번스위치를 2번누르면 led 가 2358on 되는
코드를 짜고싶은데 가능할까요?
댓글 1
조회수 6,351master님의 댓글
master 작성일
#include <mega128.h>
#include <delay.h>
//
void main(void){
bit flag1=0,flag2=0;
char cnt1=0,cnt2=0;
DDRA=0xff;
PORTC=0xff;
while(1){
if(PINC.0==0){
if(flag1==0){ flag1=1; // 하강엣지 검출
if(++cnt1>1)cnt1=0;
if(cnt1==1)PORTA=0b11000011; // 1278
else PORTA=0b11110000; // 5678
}
}
else{
if(flag1){ flag1=0; } // 상승엣지 검출
}
//----------------------------------
if(PINC.1==0){
if(flag2==0){ flag2=1; // 하강엣지 검출
if(++cnt2>1)cnt2=0;
if(cnt2==1)PORTA=0b10100011; // 1268
else PORTA=0b11000110; // 2378
}
}
else{
if(flag2){ flag2=0; } // 상승엣지 검출
}
//----------------------------------
delay_ms(50); // 채터링 방지용
}
}