728x90
LED Bar를 포인터로 구현하여 진행하였다.
헤더파일, 소스파일, 메인파일로 나누어 진행하였다,
가장 먼저 메인파일의 코드는 다음과 같다.
#include "common.h"
#include "led.h"
int main(void)
{
ledInit();
uint8_t ledData = 0x01;
while (1)
{
for (uint8_t i = 0; i < 7; i++)
{
ledLeftShift(&ledData);
_delay_ms(200);
}
for (uint8_t i = 0; i < 7; i++)
{
ledRightShift(&ledData);
_delay_ms(200);
}
}
}
메인파일에서 C언어에서 기본 제공해주는 헤더파일을 정리한 "common.h" 헤더파일과, led 동작 구현을 위한 "led.h" 헤더파일을 선언하였다.
다음은 led 동작 구현을 위해 별도로 구현한 led 헤더파일이다.
#ifndef LED_H_
#define LED_H_
#include <avr/io.h>
#define LED_DDR DDRC
#define LED_PORT PORTC
void ledInit();
void GPIO_Output(uint8_t data);
void ledLeftShift(uint8_t *data);
void ledRightShift(uint8_t *data);
#endif /* LED_H_ */
led 헤더파일에는 구현한 함수들을 모아서 선언하였다.
다음은 led 동작 구현을 위한 led 소스파일의 코드이다.
#include "led.h"
void ledInit() // C포트 전체출력 함수
{
LED_DDR = 0xff;
}
void GPIO_Output(uint8_t data) // GPIO : General Purpose Input Output
// 즉, AVR PIN 모드를 Input 또는 Output으로 설정하는 것
{
LED_PORT = data; // 8bit 값을 가진 data에 따라 출력 결정
}
void ledLeftShift(uint8_t *data)
{
*data = (*data >> 7) | (*data << 1);
GPIO_Output(*data);
}
void ledRightShift(uint8_t *data)
{
*data = (*data << 7) | (*data >> 1);
GPIO_Output(*data);
}
*data = (*data >> 7) | (*data << 1); 이 부분과 *data = (*data << 7) | (*data >> 1); 이 부분은 따로 공부해서 정리하겠음!!
다음은 common 헤더파일이다.
#ifndef COMMON_H_
#define COMMON_H_
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#endif /* COMMON_H_ */
common 헤더파일에는 Microchip Studio에서 기본적으로 주어지는 헤더파일들을 모아 정리해둔 곳이다.
728x90
'Language > AVR' 카테고리의 다른 글
ATmega 128 : Led Bar 버튼 동작 구현 (0) | 2024.05.28 |
---|---|
ATmega 128 : LED Bar 구조체 동작 구현 (0) | 2024.05.28 |
ATmega 128 : LED Bar 배열 동작 구현 (0) | 2024.05.25 |
ATmega 128 : LED Bar 중앙에서 밀어내는 동작 구현 (0) | 2024.05.25 |
ATmega 128 : LED Bar 순차적 점등하기 (0) | 2024.05.25 |