#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 = 0xFF; //E번째 IO 핀에 대한 설정 초기화
PORTD = 0XFF; //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++)
{
PORTD = (r<<4)+b;
delay_ms(50);
}
}
}
}
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);
}
}
0~99까지 순차적으로 숫자를 1씩 증가시키다가 버튼을 누르면 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 = 0xFF; //E번째 IO 핀에 대한 설정 초기화
PORTD = 0XFF; //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!=0xf\f)
{
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);
}
}
|
|