반응형
(아래 직접 제작한 Atmega128 모듈으로 테스트를 진행했다.)
https://ansan-survivor.tistory.com/1144
이 예제 코드는 Atmega128의 PA0 ~ PA7 포트를 출력포트로 변환시키고 사용하였다.
DDRA = 0xFF; // DDRx는 1일때 출력으로 쓰고, 0일때 입력으로 쓴다. 0xFF는 1111 1111 으로 모두 출력으로 쓴다.
비트연산으로 LED를 하나씩 좌측으로 옮기는 코드이다.
이제 포트는 출력으로 쓰이게 되고, 1을 넣으면 LED가 켜지고, 0을 넣으면 LED가 꺼진다.
PA0 ~ PA7 까지는 이런 구조 이다.
16진수 | 2진수 |
0x00 | 0000 0000 |
0x01 | 0000 0001 |
0x02 | 0000 0010 |
0x04 | 0000 0100 |
0x08 | 0000 1000 |
0x10 | 0001 0000 |
0x20 | 0010 0000 |
0x40 | 0100 0000 |
0x80 | 1000 0000 |
반응형
아트메가는 입출력을 방향을 등록하는 DDRn 레지스터가 있고, 출력신호 레지스터 PORTn, 입력신호 레지스터 PINn이 있다.
좌측으로 비트를 옮기는 코드는 아래와 같다.
최초 0x01 번 LED가 켜져있다가 0x80을 넘으면 다시 0x01으로 초기화가 된다.
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
char led = 0x01; // LED 값 초기화 (첫번째가 바로 켜진다고 했을때)
DDRA = 0xFF; // PORTA 출력 설정
while(1){
PORTA = led; // PORTA를 계속 쓰기 귀찮아서 led로 치환
if(led == 0x80) // 1000 0000 비트가 되면 다시 0x01으로 복귀
led = 0x01;
else
led <<= 1; // 1씩 비트를 좌측으로 옮김
_delay_ms(100);
}
}
(결과)
이와 비슷한 LED모듈 구매는
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
USB to ISP 전송 케이블 (코드를 MCU에 넣기 위해)
각종 키트 세트
반응형
'펌웨어 (firmware) > Atmega' 카테고리의 다른 글
[Atmega128] 아트메가 비트연산 Switch 클릭 LED 토글시키기 (스위치로 LED 켰다 껐다) (0) | 2022.01.22 |
---|---|
[Atmega128] 아트메가 비트연산 LED 좌우로 반복 움직이기 (0) | 2022.01.17 |
[Atmega] Atmega128 기본 공개 모듈 회로도 및 PCB 설계도 (0) | 2021.11.22 |
[Atmega] Atmega 분주비 계산식 엑셀 공유. 분주비 쉽게 구하기. (0) | 2021.11.15 |
[Atmega] Atmel Studio 7 다운로드 사용법. Atmega 사용을 위한 기본 세팅. 간단한 AVR코딩 (0) | 2021.11.12 |