/*0~99까지 순차적으로 숫자를 1씩 증가하면서 FND(7 SEGMENT)에 표시 하기*/
#include<avr/io.h>
void Delay_us(unsigned int 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 Delayms(unsigned int time_ms) /* time delay for ms */
{ register unsigned int i;
for(i = 0; i < time_ms; i++)
{ Delay_us(250);
Delay_us(250);
Delay_us(250);
Delay_us(250);
}
}
int main(void)
{
DDRE=0xFF;
PORTE=0xFF;
//DDRF=0xFF;
//PORTF=0xFF;
volatile unsigned char b=0;
volatile unsigned char a=0;
for(;;)
{
asm("NOP");
//PORTF = PINC;
PORTE=PINC;
if(PORTE=0)
{
for(a=0;a<=9;a++)
{
for(b=0;b<=9;b++)
{
PORTE =a<<4 | b;// 예 0001==>> 0001 0001
Delayms(50);
}
}
}
}
else
PORTF=0B00000000;
return 1;
}