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

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

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


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

페이지 정보

작성자 키트 작성일2017-08-23 14:14 조회5,992회 댓글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

조회수 5,992

세계제일초보님의 댓글

세계제일초보작성일

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

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 따라하기 > 전체 목록

AVR 따라하기 목록
제목 작성자 작성일 조회
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은 질문게시판에서만 작성 가능합니다. 스태프 19-01-15 19819
공지 사이트 이용 안내댓글[28] 이미지 master 17-10-29 34162
173 2015년 강좌 106 - [타이머인터럽트-19] 누른시간 & 뗀시간 & 더블클릭 체크 키트 17-08-23 5248
172 2015년 강좌 105 - [타이머인터럽트-18] 스위치 누르는 시간 & 스위치 누르지 않는 시간 체크댓글[3] 키트 17-08-23 5662
171 2015년 강좌 WS2812B [1개]- 테스트 - AVRstudio 키트 17-08-23 4172
170 2015년 강좌 delay_us()보다 더 짧은 딜레이 함수 - 2 키트 17-08-23 4389
169 2015년 강좌 delay_us()보다 더 짧은 딜레이 함수 - 1 키트 17-08-23 4457
168 2015년 강좌 104 - [부저] 회로내장형 키트 17-08-23 4935
167 2015년 강좌 103 - [타이머인터럽트-17] 스위치 누르는 시간 체크 키트 17-08-23 5221
166 2015년 강좌 102 - [타이머인터럽트-16] 스위치 누를 때마다 1칸씩 좌우시프트 키트 17-08-23 4281
165 2015년 강좌 101 - [타이머인터럽트-15] 스위치 8개 SRAM에 읽어서 LED에 출력 키트 17-08-23 3506
164 2015년 강좌 100 - [타이머인터럽트-14] 스위치 8개 읽어서 LED에 출력 (포트 다이렉트) 키트 17-08-23 4012
163 2015년 강좌 099 - [타이머인터럽트-13] 스위치 1개 SRMA에 읽어서 LED에 출력 키트 17-08-23 3008
162 2015년 강좌 098 - [타이머인터럽트-12] 스위치 1개 읽어서 LED에 출력 키트 17-08-23 4319
161 2015년 강좌 096 - [타이머 CTC 토글-3] 스위치 8개 피아노 키트 17-08-23 3286
게시물 검색

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
모바일버전으로보기