BASIC4MCU | 질문게시판 | atmega16 스위치 led제어
페이지 정보
작성자 잘생김 작성일2019-11-25 14:30 조회6,681회 댓글0건본문
PORTA와 PORTB led 순차 왕복점등 프로그램 짰습니다.
현 상태로는 스위치 한번 누르면 led 하나 켜지는데 스위치 두번에 led 하나로 순차왕복점등 수정 가능할까요...?
// DateTime : 2019-11-05 오후 9:44:49
// by Ok-Hyun Park
//
#include <avr/io.h>
#include <util/delay.h>
//
int main(void){
char sw1_flag=0 ,sw2_flag=0; // 스위치 누름 체크용 프래그
char dir1_flag=1,dir2_flag=1; // 초기값 왼쪽 쉬프트
int i=1,dir1=1, u=1, dir2=1;
DDRA=0xff; PORTA=0xff; DDRB=0xff; PORTB=0xff;
PORTD=0x01; // 내부 풀업저항 사용
while(1){
if((PIND&0x01)==0){
if(sw1_flag==0){ sw1_flag=1; // 하강엣지 검출
PORTA=0xFF<<i;
i+=dir1;
if(i==8)dir1=-1;
if(i==1)dir1=1;
_delay_ms(1);
}
}
else{
if(sw1_flag){ sw1_flag=0; _delay_ms(1); } // 상승엣지 검출
}
if((PIND&0x02)==0){
if (sw2_flag==0){ sw2_flag=1;
PORTB=0xFF<<u;
u+=dir2;
if(u==8)dir2=-1;
if(u==1)dir2= 1;
_delay_ms(1);
}
}
else{
if(sw2_flag){ sw2_flag=0; _delay_ms(1); } // 상승엣지 검출
}
}
}
댓글 0
조회수 6,681등록된 댓글이 없습니다.