#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)
{
//(*(volatile unsigned char*)0x61)=0xFF;
DDRF=0xFF;
// (*(volatile unsigned char*)0x62)=0xFF;
for(;;)// 무한루프
{
unsigned int j=0b00000001,k;
asm("nop");
for(k=0;k<8;k++)
{
j=1<<k;//비트연산 쉬프트
PORTF = ~j;// 값을 뒤집어 넣는다. 0일때 불켜지는자리이다.
Delayms(500);
PORTF = 0b11111111;// 불 끄 기?
Delayms(500);
}
return 1;
}
}
'ATMEGA' 카테고리의 다른 글
FND 두자리 동시에 같은숫자표현 (0) | 2009.12.10 |
---|---|
/*99~0까지 순차적으로 숫자를 1씩 감소하면서 FND에 표시 하기*/ (0) | 2009.12.10 |
/*0~99까지 순차적으로 숫자를 1씩 증가하면서 FND(7 SEGMENT)에 표시 하기*/ (0) | 2009.12.10 |
1칸?씩 쉬프트시키면서 LED 쌓이면서 켜기 (0) | 2009.12.10 |
LED제어 깜빡이기 (0) | 2009.12.10 |