▶ Timer.c
#include "Timer.h" static volatile unsigned int ui_Tic; // 0.001초 카운터를 세기위해서. void Timer0_Init(void) { TCCR0A = ((0<<WGM00) | (0<<WGM01) | (0<<COM0A0) | (0<<COM0A1) |(0<<COM0B0) |(0<<COM0B1)) ; // 노말모드 TCCR0B = ((0<<CS02) | (1<<CS01) | (1<<CS00) | (0<<WGM02)); // 분주비 64로 설정. TCNT0 = Tic_Start; // 오버플로수 시작값 설정. TIMSK0 = (1<<TOIE0); // SREG = ((SREG) | (1<<Global_Interrupt_Enable)); // 모든 인터럽트 켜주기. } void __vector_23(void) // 타이머핸들러. { ++ui_Tic; // Tic 을 계속 올려줌. TCNT0 = Tic_Start; // 다시 불러줌. return; } void MS_DELAY(unsigned int ui_ms) { ui_Tic = 0; TCNT0 = Tic_Start; while(ui_ms > ui_Tic); // ui_Tic 이 0.01초 마다 계속 인터럽트되서 ++ui_Tic 됨. return; // 1000번이 다되면 1초가됨. } |
▶ Timer.h
#ifndef _TIMER_H_ |
▶ Main.c
#include "Lcd.h" |