[DK-128] LED 순차적으로 점멸하기
2009. 4. 22. 18:24 in 공부합시다/임베디드

소스코드
- #include <avr/io.h>
- #include<avr/signal.h>
- #include<avr/interrupt.h>
- 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");
- }
- }
- 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);
- }
- }
- void delay_s(unsigned int time_s)
- {
- register unsigned int i;
- for(i=0; i<time_s; i++)
- delay_ms(1000);
- }
- int main()
- {
- int iFlag1 = 0x01;
- int iFlag2 = 0xff;
- int direct = 1;
- DDRF = 0xff;
- while(1)
- {
- PORTF = iFlag1 ^ iFlag2;
- if(direct == 1)
- {
- iFlag1 = iFlag1<<1;
- if(iFlag1 == 0x80) direct = -1;
- }
- else if(direct == -1)
- {
- iFlag1 = iFlag1>>1;
- if(iFlag1 == 0x01) direct = 1;
- }
- delay_ms(300);
- }
- return 0;
- }
'공부합시다 > 임베디드' 카테고리의 다른 글
[ATmega128] RS232 시리얼 통신 관련 레지스터 정리 (0) | 2009.04.28 |
---|---|
[ATmega1128] ATmega128은 Little endian일까 Big endian일까 (2) | 2009.04.24 |
Volatile 한정자 (0) | 2009.04.23 |
[AVR] DDRA, PORTA를 찾아보자. (1) | 2009.04.23 |
[avr] 확장형 데이터 타입 (0) | 2009.04.22 |