#include
unsigned int cnt0;
unsigned char step=0x88, onoff=1;
interrupt [EXT_INT0] void exint0(void)
{
if(onoff == 0)
onoff = 1;
else onoff = 0;
}
interrupt [TIM0_OVF] void timerint0(void)
{
if(onoff == 0) if( ++cnt0 == 2 )
{
cnt0 = 0; step >>= 1; if(step == 0x08) step=0x88;
}
PORTC = step;
TCNT0 = 6; // 재정의 1msec = 64*(256-6)/16 시뮬레이션할 때는 조절할 필요가 있음
}
void main(void)
{
DDRC = 0xff; // 포트C를 출력으로
DDRD = 0x00; //포트D를 입력으로 디폴트 입력으로 설정되어 있으므로 필요하지는 않음
SREG.7 = 1; //인터럽트 전체 허용
EIMSK |= 0x01; // INT0 개별 허용
EICRA |= 3; // 상승에지 트리거
TIMSK |= 1; // 타이머0 오버플로 인터럽트 개별허용
TCCR0 |= 4; // 분주비를 64로 설정 시뮬레이션할 때는 조절할 필요가 있음
TCNT0 = 6; // 1msec = 64*(256-6)/16 시뮬레이션할 때는 조절할 필요가 있음
}