BASIC4MCU | AVR 따라하기 | 2015년 강좌 | 002 - [LED-0] 1개 점멸
페이지 정보
작성자 키트 작성일2017-08-23 14:14 조회5,992회 댓글2건본문
LED와 저항은 직렬 연결이므로 왼쪽이나 오른쪽이나 같은 회로입니다.LED1번만 켜볼까요?
//CVAVR#include <mega128.h>#include <delay.h>//void main(void){DDRA=0x01; // LEDwhile(1){PORTA=0x01; // LED1 ONdelay_ms(1000);PORTA=0x00; // LED1 OFFdelay_ms(1000);}}//AVRstudio#define F_CPU 16000000UL // 16 MHz#include <avr/io.h>#include <util/delay.h>//int main(void){DDRA=0x01; // LEDwhile(1){PORTA=0x01; // LED1 ON_delay_ms(1000);PORTA=0x00; // LED1 OFF_delay_ms(1000);}}cs 포트 출력 1에서 켜지고, 0에서 꺼집니다.위는 코드비젼(CVAVR) 소스아래는 AVRstudio 소스입니다.//--------------------------------------------------------------------------------------마찬가지로 왼쪽과 오른쪽은 같은 회로이며위 회로와 다른 점은 LED 극성을 반대로 하고 GND가 아닌 Vcc(5V)에 연결했습니다.회로가 달라졌으니 소스코드도 회로에 맞게 조금 변경 되어야합니다.포트 출력 0에서 켜지고, 1에서 꺼집니다.
//CVAVR#include <mega128.h>#include <delay.h>//void main(void){DDRA=0x01; // LEDwhile(1){PORTA=0x00; // LED1 ONdelay_ms(1000);PORTA=0x01; // LED1 OFFdelay_ms(1000);}}//AVRstudio#define F_CPU 16000000UL // 16 MHz#include <avr/io.h>#include <util/delay.h>//int main(void){DDRA=0x01; // LEDwhile(1){PORTA=0x00; // LED1 ON_delay_ms(1000);PORTA=0x01; // LED1 OFF_delay_ms(1000);}}cs c를 공부한 분이라도 DDRA, PORTA 이런 레지스터명은 생소 할겁니다.포트 레지스터에 관한 설명은 차차 하겠습니다.^^//----------------------------------------------------------------------------8051 경우에는 포트 특성 상 소스전류가 거의 없고 싱크 전류가 크므로LED 극성은 이 방향만 사용합니다.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이므로 전류가 흐르지 않습니다.