질문게시판 > 답변 : atmega128 LED제어

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

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


BASIC4MCU | 질문게시판 | 답변 : atmega128 LED제어

페이지 정보

작성자 master 작성일2018-03-14 23:08 조회8,243회 댓글1건

본문

	

 

// DateTime : 2018-03-14 오후 11:07:24
// by Ok-Hyun Park
//제가  외부0번 인터럽트를 사용하여서
//처음눌렀을때는 위에서 아래로 LED가 내려가고
//두번째 눌렀을때는 아래에서 위로 LED가 올라가고
//세번째 눌렀을때는 동작을 멈추게하려고
//코드를 짜보았습니다.
//그런데 어느 부분이 문제가있는지
//인터럽트 스위치를 누르면 모드가 바뀌기는하는데
//LED가 움직이지를 않습니다.
//어느 부분이 문제일까요??
#include <mega128.h>
#include <delay.h>
//
Byte count=0,LED=0;
//
interrupt[EXT_INT0]void ext_int0(void){
  if(++count>3)count=0;
}
//
void Set_EXT0(void){
  EICRA=0x02EIMSK=0x01SREG|=0x80;
}
//
void LED_DOWN(void){
  while(count==0){
    LED=0x01PORTB=LEDLED=(LED<<1)|0x01delay_ms(500);
  }
}
//
void LED_UP(void){
  while(count==1){
    LED=0x80PORTB=LEDLED=(LED>>1)|0x80delay_ms(500);
  }
}
//
void main(void){
  DDRB=0xff;
  Set_EXT0();
  if     (count==0)LED_DOWN();
  else if(count==1)LED_UP();
  else if(count==2)PORTB=0xff;
}

메인함수의 무한루프는 선택이 아니고 필수입니다.

PC용 c만 다뤄본 사람들은 무한루프의 중요성을 이해하지 못하죠

 

//

 

// DateTime : 2018-03-14 오후 11:09:36
// by Ok-Hyun Park
//제가  외부0번 인터럽트를 사용하여서
//처음눌렀을때는 위에서 아래로 LED가 내려가고
//두번째 눌렀을때는 아래에서 위로 LED가 올라가고
//세번째 눌렀을때는 동작을 멈추게하려고
//코드를 짜보았습니다.
//그런데 어느 부분이 문제가있는지
//인터럽트 스위치를 누르면 모드가 바뀌기는하는데
//LED가 움직이지를 않습니다.
//어느 부분이 문제일까요??
#include <mega128.h>
#include <delay.h>
//
Byte count=0,LED=0;
//
interrupt[EXT_INT0]void ext_int0(void){
  if(++count>3)count=0;
}
//
void Set_EXT0(void){
  EICRA=0x02EIMSK=0x01SREG|=0x80;
}
//
void LED_DOWN(void){
  while(count==0){
    LED=0x01PORTB=LEDLED=(LED<<1)|0x01delay_ms(500);
  }
}
//
void LED_UP(void){
  while(count==1){
    LED=0x80PORTB=LEDLED=(LED>>1)|0x80delay_ms(500);
  }
}
//
void main(void){
  DDRB=0xff;
  Set_EXT0();
  while(1){
    if     (count==0)LED_DOWN();
    else if(count==1)LED_UP();
    else if(count==2)PORTB=0xff;
  }
}

 //

 

void LED_DOWN(void){
  while(count==0){
    LED=0x01; PORTB=LEDLED=(LED<<1)|0x01delay_ms(500);
  }
}
//
void LED_UP(void){
  while(count==1){
    LED=0x80PORTB=LEDLED=(LED>>1)|0x80delay_ms(500);
  }
}

초기화 명령이 무한루프 안에 있으면 계속 같은 값이 출력 되겠죠

 

//

 

#include <mega128.h>
#include <delay.h>
//
Byte count=0,LED=0;
//
interrupt[EXT_INT0]void ext_int0(void){
  if(++count>3)count=0;
}
//
void Set_EXT0(void){
  EICRA=0x02EIMSK=0x01SREG|=0x80;
}
//
void LED_DOWN(void){
  LED=0x01;
  while(count==0){
    PORTB=LEDLED=(LED<<1)|0x01delay_ms(500);
  }
}
//
void LED_UP(void){
  LED=0x80;
  while(count==1){
    PORTB=LEDLED=(LED>>1)|0x80delay_ms(500);
  }
}
//
void main(void){
  DDRB=0xff;
  Set_EXT0();
  while(1){
    if     (count==0)LED_DOWN();
    else if(count==1)LED_UP();
    else if(count==2)PORTB=0xff;
  }
}

 //

  if(++count>3)count=0; 

 3이 아니고 2로 고치세요

뒤질 수록 오류가 계속 나오는군요

 

//

 

// DateTime : 2018-03-14 오후 11:26:07
// by Ok-Hyun Park
#include <mega128.h>
#include <delay.h>
//
Byte count=0,LED=0;
//
interrupt[EXT_INT0]void ext_int0(void){
  if(++count>2)count=0;
  num=0PORTB=0
}
//
void main(void){
  DDRB=0xff;
  EICRA=2EIMSK=1SREG=0x80;
  while(1){
    switch(count){
      case 0PORTB|=0x01<<numdelay_ms(500); if(num<7)num++; break//LED_DOWN();
      case 1PORTB|=0x80>>numdelay_ms(500); if(num<7)num++; break//LED_UP();
      case 2PORTB=0xFF;                                      break;
    }
  }
}

 

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글 1

조회수 8,243

27315co님의 댓글

27315co 작성일

매번 질문할때마다 친절하고 자세한답변 해주셔서 정말로 감사합니다..

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
질문게시판 목록
제목 작성자 작성일 조회
질문 질문드립니다. 이호 18-04-06 6447
답변 답변글 답변 : 아두이노 시리얼 입력으로 FND 구동댓글[2] master 18-04-06 9794
질문 블루투스 신호 세기를 측정하려면 어떻게 해야하나요?? 노동 18-04-04 6993
답변 답변글 답변 : 블루투스 신호 세기를 측정하려면 어떻게 해야하나요?? master 18-04-04 8969
질문 아두이노 우노 및 ESP8266 와이파이 모듈 관련 질문 exia 18-04-04 6591
답변 답변글 답변 : 아두이노 우노 및 ESP8266 와이파이 모듈 관련 질문 이미지 master 18-04-04 5869
질문 AVR 4 질문요~ 비공개 18-04-04 5832
답변 답변글 답변 : AVR 4 질문요~ master 18-04-04 6152
질문 AVR atmaga128댓글[1] 첨부파일 비공개 18-04-03 7362
답변 답변글 답변 : AVR atmaga128 1개의 파일로 합침댓글[4] master 18-04-03 15188
답변 답변글 답변 : AVR atmaga128 소스코드 정리 master 18-04-03 6408
답변 답변글 답변 : 답변 : AVR atmaga128 소스코드 정리댓글[3] 첨부파일 턴업 18-04-04 11603
질문 웜기어 추가질문 드립니다!댓글[1] 까스활명 18-04-02 7620
질문 DMA 송수신 관련 질문 드립니다. 몽규 18-04-02 6940
답변 답변글 답변 : DMA 송수신 관련 질문 드립니다. master 18-04-02 6062
답변 답변글 답변2 : DMA 송수신 관련 질문 드립니다.댓글[1] master 18-04-02 6923
질문 웜기어를사용 한 스텝모터 제어댓글[3] 비공개 18-04-01 12785
답변 답변글 답변 : 웜기어를 사용 한 DC모터 이미지 master 18-04-02 7075
질문 왕초보가 질문 하나 또 드립니다댓글[1] Songyoun 18-03-31 7016
질문 자이로가속도 센서 제어댓글[2] 빠박이빠박 18-03-31 9053
질문 PWM관련 질문 드립니다 Songyoun 18-03-29 6250
답변 답변글 답변 : PWM 디지털제어 = 전력제어 master 18-03-29 5854
질문 ATmega128 USART 통신 관련해서 질문드립니다.댓글[1] 27315co 18-03-28 8654
답변 답변글 답변 : ATmega128 USART 통신 관련해서 질문드립니다.댓글[1] master 18-03-28 7731
질문 아두이노 프로그램 시리얼모니터에 나타내는건데요 cimi 18-03-28 5986
답변 답변글 답변 : 소스코드 실행 결과를 적어주세요 master 18-03-28 6127
질문 아두이노 아키텍처 질문댓글[1] 뭘보노옹 18-03-27 8839
질문 밑에 질문 관련 다시 올립니다. exia 18-03-27 6441
답변 답변글 답변 : 소스코드 오류 몇개 수정했습니다.댓글[1] master 18-03-27 6659
질문 아두이노 우노 dht11 센서 두개 동작 질문드립니다. exia 18-03-27 5734
게시물 검색

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