728x90

LED 회로도

- LED가 어떤 핀에 연결되어있는지

- Ground 인지 전원에 연결되어있는지

LED 회로도

 

레지스터 설정

- DDRC = 0xFF;

-> 핀C 8개 비트 모두 출력 설정

- PORTC = 0xFF;

-> 핀 C 8개 비트 모두 HIGH -> 다이오드가 전원과 연결됨 -> 전위차 0 -> LED가 꺼진상태 시작

 

 

회도로 프로젝트 파일

D1 VDD n1 ;LED D1이 VDD와 n1 node사이에 연결 
R18 n1 PC0 1k ; 저항 R18이 n1 node와 PC0 사이에 연결 

D2 VDD n2 
R19 n2 PC1 1k 

D3 VDD n3 
R20 n3 PC2 1k 

D4 VDD n4 
R21 n4 PC3 1k 

D5 VDD n5 
R22 n5 PC4 1k 

D6 VDD n6 
R23 n6 PC5 1k 

D7 VDD n7 
R24 n7 PC6 1k 

D8 VDD n8 
R25 n8 PC7 1k 

 

 

 

20번 LED 블링크 하기

#include <avr\io.h>              // Most basic include files
#include <util/delay.h>       // Add the necessary ones

int main()
{
	unsigned int k=20;
	DDRC = 0xFF;
	PORTC = 0xFF;
	
	while (k != 0)
	{
		PORTC = 0xFE;
		_delay_ms(200);
		PORTC = 0xFF;
		_delay_ms(200);
		k--;
	}
}

 

특정 LED 켜기

- _BV는 메크로

- _BV(4) == (1<<4)

#include <avr\io.h>              // Most basic include files
#include <util/delay.h>       // Add the necessary ones

int main()
{
	DDRC = 0xFF;
	PORTC = 0xFF;
	
	while (1)
	{
		PORTC = ~( (1<<3)|(1<<5)); //0x1010 1111 LED D4, D6 on
		_delay_ms(200);
		PORTC = ~(_BV(4)|_BV(6)); //0x0101 1111 LED D5, D7 on
		_delay_ms(200);
	}
	return 1;
}

 

 

_BV 매크로 함수 이해

- sfr_defs.h 파일에 선언되어있음

- _BV(bit)는 해당 bit에 1을 쓴다

#define _BV(bit) (1<<(bit))

ex) _BV(4) -> (1<<4)

 

LED 전체 점멸

 

#include <avr\io.h>              // Most basic include files
#include <util/delay.h>       // Add the necessary ones

#define DDR_LED DDRC
#define PORT_LED PORTC

int main()
{
	unsigned char led_status = 0xFF;
	
	DDR_LED=0xFF;
	PORT_LED=0xFF;
	
	while (1)
	{
		led_status=~led_status;
		PORT_LED=led_status;
		_delay_ms(200);
	}
	return 1;
}

 

300x250

+ Recent posts