KEY제어로 사용할 레지스터
FND제어로 사용할 레지스터
//1에서 8까지 출력하여 보자
#include <avr/io.h>
int main(void)
{
}
int main(void)
{
DDRC = 0xFF;
DDRE = 0xFF;
PORTE = 0xFF;
volatile unsigned char i = 0;
volatile unsigned chat a = 0;
for(;;)
{
DDRE = 0xFF;
PORTE = 0xFF;
volatile unsigned char i = 0;
volatile unsigned chat a = 0;
for(;;)
{
asm("NOP");
i = 0;
a = ~PINC;
while(a >= 1)
{
i = 0;
a = ~PINC;
while(a >= 1)
{
a /= 2;
i++;
i++;
}
PORTE = i;
PORTE = i;
}
return 1;
}
실습문제
//1. 0~99까지 순차적으로 숫자를 1씩 증가시키다가 버튼을 누르면 0부터 다시 시작하기
#include <avr/io.h> //IO제어 헤더파일
void delay(unsigned int); //delay 함수 선언
int main(void)
{
DDRE = 0b11111111; //E포트의 IO핀을 출력용으로 설정
PORTE = 0b11111111; //E포트의 출력값 초기화
volatile unsigned char i = 0;
{
DDRE = 0b11111111; //E포트의 IO핀을 출력용으로 설정
PORTE = 0b11111111; //E포트의 출력값 초기화
volatile unsigned char i = 0;
for(;;) //무한루프
{
asm("NOP"); //동기화를 위한 NOP 명령
while(100 > i)
{
PORTE = (i / 10) * 16 + (i % 10); //예)i=1, (1/10)*16+(1%10)=1
i++;
delay(2);
if(PINC != 0xFF)
{
i=0;
}
}
}
return 1;
}
void delay(unsigned int dd)
{
void delay(unsigned int dd)
{
volatile unsigned int i;
while(dd--)
{
for(i = 0; i < 65000 ; i++);
}
return ;
}
//2. 0~99까지 순차적으로 숫자를 1씩 증가시키다가 버튼을 누르면 현재 값에서 1씩 감소하기,
다시 누르면 1씩 증가하기
#include <avr/io.h> //IO제어 헤더파일
void delay(unsigned int); //delay 함수 선언
int main(void)
{
DDRE = 0b11111111; //E포트의 IO핀을 출력용으로 설정
PORTE = 0b11111111; //E포트의 출력값 초기화
volatile unsigned char i = 0;
for(;;) //무한루프
{
asm("NOP"); //동기화를 위한 NOP 명령
{
DDRE = 0b11111111; //E포트의 IO핀을 출력용으로 설정
PORTE = 0b11111111; //E포트의 출력값 초기화
volatile unsigned char i = 0;
for(;;) //무한루프
{
asm("NOP"); //동기화를 위한 NOP 명령
while(100 > i)
{
PORTE = (i / 10) * 16 + (i % 10);
i++;
delay(2);
if(PINC != 0xFF)
{
break;
}
}
while(100 >i)
{
PORTE = (i / 10) * 16 + (i % 10);
i--;
delay(2);
if(PINC != 0xFF)
{
break;
}
}
}
return 1;
}
void delay(unsigned int dd)
{
volatile unsigned int i;
while(dd--)
{
for(i = 0; i < 65000 ; i++);
}
return ;
}
{
volatile unsigned int i;
while(dd--)
{
for(i = 0; i < 65000 ; i++);
}
return ;
}
{
PORTE = (i / 10) * 16 + (i % 10);
i++;
delay(2);
if(PINC != 0xFF)
{
break;
}
}
while(100 >i)
{
PORTE = (i / 10) * 16 + (i % 10);
i--;
delay(2);
if(PINC != 0xFF)
{
break;
}
}
}
return 1;
}
void delay(unsigned int dd)
{
volatile unsigned int i;
while(dd--)
{
for(i = 0; i < 65000 ; i++);
}
return ;
}
{
volatile unsigned int i;
while(dd--)
{
for(i = 0; i < 65000 ; i++);
}
return ;
}
'Hardware > ATmega128' 카테고리의 다른 글
9. Timer/Counter 출력 (0) | 2011.05.11 |
---|---|
8. 적외선 센서 출력 (0) | 2011.05.11 |
6. LED 실습문제 (0) | 2011.04.26 |
5. ATmega128 자료형의 크기 (0) | 2011.04.21 |
4. 명령 Register 기본형 (0) | 2011.04.20 |