#include <avr/io.h>
#define S0 PB5
#define S1 PB6
#define S2 PB7
#define D0 PB0
#define D1 PB1
#define D2 PB2
#define D3 PB3
#define D4 PB4
int main(void)
{
//DDRB 레지스터 변수, 1<<은 1을 D0만큼 시프트 시키라는 의미
DDRB = 1<<D0 | 1<<D1 | 1<<D2 | 1<<D3 | 1<<D4;
while(1){
// 'PINB와 1을 S0 비트값(PB5)만큼 시프트 시킨 값이 같다면' 의 부정(!)이니 같지 않으면
if(!(PINB & (1<<S0)))
//PORTB는 1<<D0, 1<<D1 둘중 하나만 1이여도 PORTB에 값을 넣는다
PORTB |= 1<<D0 | 1<<D1; // S0가 눌렸을 때 D0, D1 LED 켜기
else
//PORTB는 1<<D0, 1<<D1 둘중 하나만 1이여도 1의 반전된 값을 PORTB에 넣는다
PORTB &= ~(1<<D0 | 1<<D1); // S0가 눌리지 않았을 때 D0, D1 LED 끄기
if(!(PINB & (1<<S1)))
PORTB |= 1<<D2; // S1이 눌렸을 때 D2 LED 켜기
else
PORTB &= ~(1<<D2); // S1이 눌리지 않았을 때 D2 LED 끄기
if(!(PINB & (1<<S2)))
PORTB |= 1<<D3 | 1<<D4; // S2가 눌렸을 때 D3, D4 LED 켜기
else
PORTB &= ~(1<<D3 | 1<<D4); // S2가 눌리지 않았을 때 D3, D4 LED 끄기
}
}
'Atmega128 > AVR Atmega128' 카테고리의 다른 글
AVR Studio 4 .elf파일 누락 (0) | 2024.08.13 |
---|---|
volatile 지시어에 의한 변수 선언과 요청/응답 인터페이스 (0) | 2024.07.12 |