쓰잘데기 없는 나의 블로그

AVR Studio - LED Test Source (C Source)

마이크로프로세서 AVR Studio - LED Test Source (C Source)

#include <avr/io.h>
#include <avr/interrupt.h>

volatile unsigned char interrupt_count;

ISR(TIMER1_COMPA_vect){
 PORTB = PORTB ^ 0x01;
}


void Delay_us(unsigned char time_us)  /* time delay for us */
{ register unsigned char i;

  for(i = 0; i < time_us; i++)   // 4 cycle +
    { asm volatile(" PUSH  R0 ");  // 2 cycle +
      asm volatile(" POP   R0 ");  // 2 cycle +
      //asm volatile(" PUSH  R0 ");  // 2 cycle +
      //asm volatile(" POP   R0 ");  // 2 cycle +
      //asm volatile(" PUSH  R0 ");  // 2 cycle +
      //asm volatile(" POP   R0 ");  // 2 cycle = 16 cycle = 1 us for 16MHz
    }
}

void Delay_ms(unsigned int time_ms)  /* time delay for ms */
{ register unsigned int i;

  for(i = 0; i < time_ms; i++)
    {
  Delay_us(125);
      //Delay_us(250);
      //Delay_us(250);
      //Delay_us(250);
    }
}

int main(void){
 DDRB = 0x01;
 
 TCCR1A = 0x00;
 TCCR1B = 0x0C;
 OCR1A = 15624; //62499

 TCNT1 = 0x0000;

 TIMSK = 0x10;
 TIFR = 0x3C;

 sei();

 while(1);
}