LED 1개 에 이어 2개 ...
운영체제 올라가면 별도 쓰레드로 올리고 sleep 주면 되겠지만... 여긴 그런게 없다...
while 문의 타이밍 주기를 1ms 로 세팅하고 LED 켜고 꺼지는 주기는 설정한 간격에 의해 별도 함수 내에서 처리하도록 프로그램 하였다.
time이 계속 증가만 하는데 이거 상관 없는지는 확인 이 필요할 것 같다.
사진
작동영상
소스코드
#define F_CPU 16000000UL #include <avr/io.h> #include <util/delay.h> void PPD6(int time, int interval) { if ((time % (2 * interval)) == 0) { PORTD &= ~(1<<PORTD6); } else if ((time % interval) == 0) { PORTD |= (1<<PORTD6); } } void PPD7(int time, int interval) { if ((time % (2 * interval)) == 0) { PORTD &= ~(1<<PORTD7); } else if ((time % interval) == 0) { PORTD |= (1<<PORTD7); } } int main(void) { int time = 0; DDRD |= (1<<DDD6); // PD6 Out DDRD |= (1<<DDD7); // PD7 Out while(1) { PPD6(time, 125); PPD7(time, 500); time++; _delay_ms(1); } } |