AVR 따라하기 > 002 - [LED-0] 1개 점멸

TODAY226 TOTAL2,219,008
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | AVR 따라하기 | 2015년 강좌 | 002 - [LED-0] 1개 점멸

페이지 정보

작성자 키트 작성일2017-08-23 14:14 조회4,986회 댓글2건

본문

 

 
3660040649_5Zco7bTE_25C125A625B825F1_25BE25F825C025BD.PNG3Ftype3Dw740
LED와 저항은 직렬 연결이므로 왼쪽이나 오른쪽이나 같은 회로입니다.
LED1번만 켜볼까요?
//CVAVR
#include <mega128.h>
#include <delay.h>
//
void main(void){
    DDRA=0x01// LED
    while(1){
        PORTA=0x01// LED1 ON
        delay_ms(1000);
        PORTA=0x00// LED1 OFF
        delay_ms(1000);
    }
}
 
//AVRstudio
#define F_CPU 16000000UL  // 16 MHz
#include <avr/io.h>
#include <util/delay.h>
//
int main(void){
    DDRA=0x01// LED
    while(1){
        PORTA=0x01// LED1 ON
        _delay_ms(1000);
        PORTA=0x00// LED1 OFF
        _delay_ms(1000);
    }
}
cs
포트 출력 1에서 켜지고, 0에서 꺼집니다.
위는 코드비젼(CVAVR) 소스
아래는 AVRstudio 소스입니다.
//--------------------------------------------------------------------------------------
3660040649_QMdoWqGi_25C125A625B825F1_25BE25F825C025BD.PNG3Ftype3Dw740
마찬가지로 왼쪽과 오른쪽은 같은 회로이며
위 회로와 다른 점은 LED 극성을 반대로 하고 GND가 아닌 Vcc(5V)에 연결했습니다.
회로가 달라졌으니 소스코드도 회로에 맞게 조금 변경 되어야합니다.
포트 출력 0에서 켜지고, 1에서 꺼집니다.
//CVAVR
#include <mega128.h>
#include <delay.h>
//
void main(void){
    DDRA=0x01// LED
    while(1){
        PORTA=0x00// LED1 ON
        delay_ms(1000);
        PORTA=0x01// LED1 OFF
        delay_ms(1000);
    }
}
 
//AVRstudio
#define F_CPU 16000000UL  // 16 MHz
#include <avr/io.h>
#include <util/delay.h>
//
int main(void){
    DDRA=0x01// LED
    while(1){
        PORTA=0x00// LED1 ON
        _delay_ms(1000);
        PORTA=0x01// LED1 OFF
        _delay_ms(1000);
    }
}
cs
c를 공부한 분이라도 DDRA, PORTA 이런 레지스터명은 생소 할겁니다.
포트 레지스터에 관한 설명은 차차 하겠습니다.^^
//----------------------------------------------------------------------------

3660040649_wW2vUQme_8051portPin.GIF

8051 경우에는 포트 특성 상 소스전류가 거의 없고 싱크 전류가 크므로
3660040649_7SFbsyJ4_488857491d14d

 LED 극성은 이 방향만 사용합니다.

3660040649_zMTceQxR_inside_AVR_IO_port.jpg
AVR은 소스든 싱크든 전류가 크므로 어느 방향이든 상관없습니다.

댓글 2

조회수 4,986

세계제일초보님의 댓글

세계제일초보작성일

마스터님..  이해가 안되는 부분이 있어서 질문드립니다.ㅠㅠ

1) PORTA ------<<Led ---저항--vcc
DDRA=VCC=0x01 이면    PORTA=0x00 일떄 켜짐.. ,PORTA=0x01 이면  같은 전위차 떄문에 꺼짐.

2)PORTA------저항----LED>>--VCC
DDRA=VCC=0X01 일떄 어떻게 PORTA=0x01일떄 켜지고 ,0x00일떄 꺼지는게 이해가 잘안됩니다 ㅠㅠ

master님의 댓글

master댓글의 댓글작성일

1) PORTA ------<<Led ---저항--vcc
PORTA=0x00 일떄 켜짐 <-- Vcc쪽의 전압이 높고 포트가 0V이므로 전류가 흘러서 켜집니다.
PORTA=0x01 일떄 꺼짐 <-- Vcc쪽의 전압과 포트의 전압이 모두 5V이므로 전류가 흐르지 않습니다.


2)PORTA------저항----LED>>--GND
PORTA=0x01 일떄 켜짐 <-- 포트쪽의 전압이 높고 GND가 0V이므로 전류가 흘러서 켜집니다.
PORTA=0x00 일떄 꺼짐 <-- 포트쪽과 GND 모두 0V이므로 전류가 흐르지 않습니다.

AVR 따라하기HOME > AVR 따라하기 > 2015년 강좌 목록

게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2020
모바일버전으로보기