IT

#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
Posted by sinpk