타이머 LED 점멸 2번째 #include unsigned char led = 0xfe; void delay_i_ms(unsigned int i) { do { while(!(TIFR & 0x04)); // TOV1 가 세트되었는지 확인 TIFR |= 0x04; /* 인터럽트 발생없이 타이머 사용했으므로 자동적으로 클리어되지 않으므로 강제로 클리어 */ TCNT1H = (65536-16000)/256; TCNT1L = (65536-16000) % 256; /* 재정의 , 1msec 초를 얻기 위한 시간정수*/ i--; } while(i); } void main(void) { DDRC = 0xff; // 포트C를 출력으로 TCCR1B |= 1; // 분주비를 1로 설정 TCNT1H = (65536-16000)/256; TCNT1L =.. 더보기 타이머를 이용한 LED #include unsigned char led = 0xfe; unsigned int cnt; interrupt [17] void timerint0(void) { if(cnt++ >= 9999){ // 10000*1 = 10000 usec cnt = 0; if(led!=0x7f) led = (led 더보기 인터럽트 LED 카운터 #include #include unsigned char led; interrupt [2] void exint0(void) { PORTC = ~(++led); delay_ms(5); } void main(void) { DDRC = 0xff; DDRD = 0x00; SREG.7 = 1; EIMSK = 0b00000001; EICRA = 3; PORTC = ~led; for(;;); } 더보기 이전 1 ··· 10 11 12 13 14 15 16 ··· 30 다음