#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#define DDR_LED DDRF
#define DATA_LED PORTF
#define DDR_KEY DDRC
#define PIN_KEY PINC
#define DDR_SENSOR DDRD
#define PIN_SENSOR PIND
#define DDR_FND DDRE
#define DATA_FND PORTE
#define TIMER_COUNT 0x06
void init_LED(void);
void init_FND(void);
void init_SENSOR(void);
void init_TimerCounter0(void);
void sleep(unsigned int e_time);
SIGNAL(SIG_OVERFLOW0);
volatile unsigned int g_time = 0;
int main (void)
{
init_LED();
init_FND();
init_TimerCounter0();
sei();
unsigned char num = 0;
for(;;)
{
DATA_LED = ~DATA_LED;
DATA_FND = ((num/10)<<4) | (num%10);
sleep(500);
if(num>99)
num=0;
else
num++;
}
return 0;
}
void init_LED()
{
DDR_LED = 0xff;
DATA_LED = 0xFF;
}
void init_FND()
{
DDR_FND = 0xFF;
DATA_FND = 0xff;
}
void init_SENSOR()
{
DDR_SENSOR = 0X00;
PIN_SENSOR=0X00;
}
void init_TimerCounter0()
{
TCCR0=1<<CS02;
TCNT0=TIMER_COUNT;
TIMSK=1<<TOIE0;
}
void sleep(unsigned int i)
{
g_time = 0;
while(g_time<i);
}
SIGNAL(SIG_OVERFLOW0)
{
g_time++;
TCNT0=TIMER_COUNT;
}
'하드웨어 > ATmega128' 카테고리의 다른 글
내부 EEPROM 제어 (0) | 2011.06.27 |
---|---|
Avr 128 Memory Map (0) | 2011.06.23 |
[Normal mode]Timer Counter Overflow Interrupt (0) | 2011.06.16 |
AVR128 메모리 어드레스 (0) | 2011.06.13 |
AVR128 특징 (0) | 2011.06.01 |