마이크로프로세서 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);
}
Copyright 2009 elex. All rights reserved.