728x90
LED 회로도
- LED가 어떤 핀에 연결되어있는지
- Ground 인지 전원에 연결되어있는지
레지스터 설정
- 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
'로봇 > 전기전자&메카' 카테고리의 다른 글
마이크로프로세서 메카트로닉스 제어 - 6 스위치 입력 (0) | 2020.05.12 |
---|---|
마이크로프로세서 메카트로닉스 제어 - 5 릴레이 제어 이론과 실습 (0) | 2020.05.12 |
마이크로프로세서 메카트로닉스 제어 - 3 VMLAB 시뮬레이터 (0) | 2020.05.12 |
vmlab 다운로드 (0) | 2020.05.12 |
마이크로프로세서 메카트로닉스 제어 - 2 개발 환경 구축 (0) | 2020.05.12 |