본문 바로가기

[ATmeaga129] 99~0

반응형

#define PORTF (*(volatile unsigned int *)0x62) //입출력설정

   

#define DDRF (*(volatile unsigned int *)0x61) //출력설정

   

#define PINF (*(volatile unsigned int *)0x20)

   

 

   

#define PORTC (*(volatile unsigned int *)0x35) //입출력설정

   

#define DDRC (*(volatile unsigned int *)0x34) //출력설정

   

#define PINC (*(volatile unsigned int *)0x33)

   

 

   

#define PORTD (*(volatile unsigned int *)0x32) //입출력설정

   

#define DDRD (*(volatile unsigned int *)0x31) //출력설정

   

#define PIND (*(volatile unsigned int *)0x30)

   

 

   

 

   

#define PORTE (*(volatile unsigned int *)0x23) //입출력설정

   

#define DDRE (*(volatile unsigned int *)0x22) //출력설정

   

#define PINE (*(volatile unsigned int *)0x21)

   

 

   

 

   

void delay_us(unsigned char time_us);

void delay_ms(unsigned int time_ms);

   

 

   

 

   

 

   

int main(void)

   

{

   

DDRD = 0x00; //E번째 IO 핀에 대한 설정 초기화

   

PORTD = 0x00; //E번째 IO 핀에 대한 출력 값 초기화

   

 

   

//volatile unsigned char i=0;

   

//volatile unsigned char a=0;

   

volatile unsigned char b=0;

 

volatile unsigned char r=0;

   

 

   

for(;;)

   

{

   

 

 

for(r=0 ; r < 10 ; r++)

{

for(b=0; b < 10; b++)

{

if(PINC != 0xff)

{

r=0;

b=0;

 

 

}

 

PORTD = (r<<4)+b;

delay_ms(10);

 

}

 

}

 

 

   

}

}

   

   

   

void delay_us(unsigned char time_us)

{

register unsigned char i;

   

for ( i =0 ; i< time_us ;i++)

{

asm volatile (" PUSH R0 ");

asm volatile (" POP R0 ");

asm volatile (" PUSH R0 ");

asm volatile (" POP R0 ");

asm volatile (" PUSH R0 ");

asm volatile (" POP R0 ");

asm volatile (" PUSH R0 ");

asm volatile (" POP R0 ");

}

}

void delay_ms(unsigned int time_ms)

{

register unsigned int i;

 

for ( i=0 ; i < time_ms ; i++)

{

delay_us(250);

delay_us(250);

delay_us(250);

delay_us(250);

}

}

   

1. 99~0까지 순차적으로 숫자를 1씩 감소하면서 FND에 표시 하기

   

   

   

2. 0~99까지 순차적으로 숫자를 1씩 증가시키다가 버튼을 누르면 현재 값에서 1씩 감소하기, 다시 누르면 1씩 증가하기

   

   

   

반응형
-->