본문 바로가기

하드웨어/atmega128

atmega128 - atmega128 시작 및 led제어회로 실습

728x90

 

 

 

위의 그림은 atmega128의 핀 array다. 

 

디지털 데이터 입출력핀은 8개의 입출력 핀을 묶어 포트라는 이름으로 관리한다.

왜?

 

중앙처리장치에서 처리하는 데이터가 워드단위. 워드는 1byte. 1byte는 8bit 이기 때문이다.

CPU에서 데이터를 처리하는 단위는 최소 1바이트이다

각 포트에서의 핀을 통해 데이터 교환을 하는데,

이는 '입출력 레지스터' 라는 임시기억공간을 통해 교환한다.

 


 

 


이번 포스팅에서는 LED를 제어하는 실습을 해보자

 

 

사용 에디터는 codevision을 사용한다.

 

DDRC의 레지스터를 모두 '1'로 설정해야

C포트는 출력으로 설정된다.

 

Data Direction Register는 입출력이 모두 가능하지만

입력을 할 건지 출력을 할 건지 설정을 해야만 사용이 가능하다.

 

포트 위치 전에 존재한다. 

 


[제일 왼쪽 led 점멸하는 실습]

#include <mega128.h>
#include <delay.h>
#define LED0 PORTC.7 // PORTC.0 비트정의
void main(void)
{
DDRC = 0xff; // 방향설정
PORTC = 0xff; // led off 모두
while(1) // 반복문 실행
{
LED0 = 0; // PORTC.0 led on
delay_ms(500); // 0.5 시간지연 초
LED0 = 1 // PORTC.0 led off
delay_ms(500); // 0.5 시간지연 초
}
}

 

 

#include <mega128.h>
#include <delay.h>
void main(void) {
    unsigned int k = 10;
    DDRC = 0xff;
    PORTC = 0xff;
    
    while (k != 0) {
     delay_ms(500);
     PORTC = 0b11111110;
     delay_ms(500);
     PORTC = 0b11111101;
     delay_ms(500);    
     PORTC = 0b11111011;
     delay_ms(500);    
     PORTC = 0b11110111;
     delay_ms(500);    
     PORTC = 0b11101111;
     delay_ms(500);    
     PORTC = 0b11011111;
     delay_ms(500);    
     PORTC = 0b10111111;
     delay_ms(500);    
     PORTC = 0b01111111;
     
     k = k - 1;
    }
}

 

'하드웨어 > atmega128' 카테고리의 다른 글

atmega128 - FND 확인 테스트 #4  (1) 2025.03.07
atmega128 - LED 순서 제어 #3  (0) 2025.03.03
atmega128 - LED 선택적 제어 #2  (0) 2025.03.02
atmega128 - LED 켜기 #1  (0) 2025.03.02
atmega128 - atmel studio 설치  (0) 2025.03.02