연습 하드웨어 회로는?
CodeVisionAVR 사용법 설명할 때 한번 등장했고 앞으로도 자주 등장 할 회로도입니다.^
간단하게 모듈에서 PB0 부터 PB7 을 브레드보드 점프선으로 뽑아서 330옴 저항을 거친뒤LED랑 연결되어 있습니다. 제어 하는데 2가지 레지스터 DDRB와 PORTB가 사용되고 새로 delay.h 헤더파일이 추가되고 delay는 PORTB에 값을 주고 값을 준 상태를 일정시간 동안 지연시키는데 사용되고, 코드비전에서는 delay_ms()와 delay_us(), AVR Studio에서는 앞에 언더바를 붙여 사용하고, 각각 밀리초, 마이크로초 값을 괄호안에 입력하고 세미콜론을 찍습니다.
그럼 소스코드를 볼까요!
CodeVisionAVR용 소스코드
#include <tiny2313.h> // tiny2313 입출력 설정 헤더파일을 포함합니다.
#include <delay.h> // delay 지연용 헤더파일을 포함합니다.
void main(void) // main() 함수를 호출합니다.
{
PORTB=0x00; // 포트B의 초기값은 0 입니다.
DDRB=0xFF; // 포트B의 모든포트를 출력으로 사용합니다.
while (1) // 아래 구문을 무한 반복 합니다.
{
PORTB=0xFF; // 포트B의 모든포트에 5V를 출력합니다.
delay_ms(500); // 0.5초 대기합니다.
PORTB=0x00; // 포트B의 모든포트에 0V를 출력합니다.
delay_ms(500); // 0.5초 대기합니다.
}
}
AVR Studio용 소스코드
#include <avr/io.h> // AVR 입출력 설정 헤더파일을 포함합니다.
#define F_CPU 8000000UL // 사용중인 크리스탈 값을 상수로 설정합니다.
#include <util/delay.h> // delay 지연용 헤더파일을 포함합니다.
int main() // main()함수를 호출합니다.
{
PORTB=0x00; // 포트B의 초기값은 0 입니다.
DDRB=0xFF; // 포트B의 모든포트를 출력으로 사용합니다.
while(1) // 아래구문을 무한반복합니다.
{
PORTB=0xFF; // 포트B의 모든포트에 5V를 출력합니다.
_delay_ms(500); // 0.5초 대기합니다.
PORTB=0x00; // 포트B의 모든포트에 0V를 출력합니다.
_delay_ms(500); // 0.5초 대기합니다.
}
return 0; //main함수에 0을 리턴합니다.
}
프로그래밍 후 동작
동영상처럼 깜박이는 동작을 합니다.
'AVR > AVR 연습, Tutorial' 카테고리의 다른 글
AVR 스위치 입력 값에 따라서 LED 제어하기 - AVR 연습하기 (6) | 2013.01.02 |
---|---|
AVR으로 LED ON/OFF 개별 비트 별로 제어하기 - AVR 연습하기 (2) | 2013.01.01 |
AVR 입출력 설정 레지스터, 핀상태 읽기,출력 제어 레지스터 - AVR 이론 (4) | 2012.12.29 |
AVR C 컴파일러 고르기 (AVR Studio 4, CodeVisionAVR) - AVR 시작하기 (2) | 2012.12.29 |
AVR 프로그래머 키트 (AVRISP, STK500, STK200+/300) 선택하기 - AVR 시작하기 (9) | 2012.12.28 |