질문게시판 > atmega128 FND 질문

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > 질문게시판

atmega128 FND 질문

페이지 정보

작성자 studio4 작성일19-12-05 01:44 조회4,341회 댓글0건

본문

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdlib.h>
#define OVERFLOW 256
#define TICKS_PER_SEC 500

 

unsigned int i = 0;
unsigned int j = 0;
unsigned int count = 0;
unsigned int tick_time, ran;
char buf[4]={0,0,0,8};
char buf2[4]={1,64,8,0};
char sit[4]={1,2,4,8};
char sit2[4]={1,2,4,8};

 

void clr(int p)
{
  buf[p]&=~8;
}
void set(int p)
{
  buf[p]|= 8;
}

 

ISR(TIMER0_OVF_vect)
{
  DDRC = 0xFF;
  DDRG = 0x0F;
  DDRA = 0xFF;
  PORTA = 0x03;

  TCNT0 = OVERFLOW-125;
  tick_time++;
  ran = rand() % 4;
  if(tick_time == TICKS_PER_SEC) {
    PORTC = buf2[i];                         //낙하물
    PORTG = sit2[j];                          //낙하물 위치
    _delay_ms(10);
    tick_time = 0;
    i++;
    count++;  

    if(i>3){
      i = 0;
      j = ran;
    }
  }
}

 

int main()
{
  char flag1 = 0, flag2 = 0;
  int position = 3;
  int p;
  PORTE = 0x30;
  DDRC = 0xFF;
  DDRG = 0x0F;
  TCNT0 = OVERFLOW - 125;
  TIMSK = 0x01;
  sei();
  TCCR0 = 0x05;

 

  while(1){
    if((PINE & 0x20) == 0){
      if(flag1 == 0){
        flag1 = 1;
        clr(position);
        if(++position > 3)
          position = 0;
          set(position);
      }
    }
    else{
      flag1 = 0;
    }


    if((PINE & 0x10) == 0){
      if(flag2==0){
      flag2 = 1;
      clr(position);
      if(--position<0)
        position=3;
        set(position);
      }
    }
    else{
      flag2 = 0;
    }

 

    PORTC=buf[0];
    PORTG=sit[0];
    _delay_ms(50);

 

    PORTC=buf[1];
    PORTG=sit[1];
    _delay_ms(50);

 

    PORTC=buf[2];
    PORTG=sit[2];
    _delay_ms(50);

 

    PORTC=buf[3];
    PORTG=sit[3];
    _delay_ms(50);

 

    if(count > 40){                             //20초 지나면
      PORTC = 0x40;
      PORTG = 0x0F;
      break;
    }

 

    if(sit == sit2[j]){                            //피하는개체와 낙하물의 위치가 같고

      if(buf[position] == buf2[i]){         //피하는개체와 낙하물이 겹치면

        PORTC = 0x40;

        PORTG = 0x0F;

        break;

      }

    }

  }

  return (1);

}

 

 

 

안녕하세요. 전에 해주신 답변으로 도움이 많이 됬습니다.

이제 동시에 표현은 된것같고, 낙하물과 피하는 개체가 겹치면 종료되는 것을 하고있습니다.

근데 피하는 개체가 어디에 있든 낙하물과 안겹쳐도 계속 낙하물이 0x08자리에 오면 종료되서.. 질문드립니다

 

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

댓글 : 0

조회수 : 4,341

등록된 댓글이 없습니다.

게시물 검색

BASIC4MCU > 질문게시판 목록

제목 날짜
공지 MCU, AVR, 아두이노 등 전자공학에 관련된 질문은… 스태프  19-01-15
공지 사이트 이용 안내 댓글[25] master  17-10-29
질문 라즈베리파이4 신형 선택문제 댓글[1] maximum 새글 22-06-26
질문 음전압 ADC 댓글[1] 412904 새글 22-06-26
질문 아두이노 센서값 출력 질문입니다! 댓글[1] 아궁2  22-06-24
질문 ATmega128, ATmega28 RS232통신 첨부파일Moon4201  22-06-24
답변 답변 : ATmega128, ATmega28 RS232… 댓글[1] master  22-06-25
질문 서보모터, 온습도센서 코드 질문 댓글[2] 첨부파일kshdlfaldfh  22-06-22
답변 답변 : 서보모터, 온습도센서 코드 질문 댓글[15] master  22-06-22
질문 steppermulti5 질문 응애  22-06-21
답변 답변 : steppermulti5 질문 댓글[1] master  22-06-22
질문 atmega128 avr usart 질문 snoflak  22-06-21
답변 답변 : atmega128 avr usart 질문 댓글[5] master  22-06-21
질문 사용자 정의 함수 변환 하는 방법 댓글[2] 첨부파일da0800  22-06-21
질문 atmega128 댓글[1] 양의노래  22-06-20
질문 아두이노 동시동작 재질문 댓글[9] 첨부파일죠르디  22-06-20
질문 초음파센서로 dc모터 제어하기 댓글[1] 첨부파일난쟁2  22-06-20
질문 아두이노 동시동작 댓글[7] 죠르디  22-06-19
질문 ATMEGA128 UART,FND 연동 질문 JMOD  22-06-19
답변 답변 : ATMEGA128 UART,FND 연동 질문 댓글[1] master  22-06-20
질문 atmeg128 질문이요 댓글[1] 첨부파일공대생er  22-06-18
질문 atmega128 초음파 센서로 신호등 시간초 늘리기 서동씨  22-06-18
답변 답변 : atmega128 초음파 센서로 신호등 시간초… 댓글[1] master  22-06-18
질문 atmega128 댓글[2] 망경이  22-06-18
질문 앱인벤터 이용해서 수동 자동 할라고하는데 ..잘안됩니다… 댓글[1] 따랑해영  22-06-18
답변 질문 : 앱인벤터 이용해서 수동 자동 할라고하는데 ..… 댓글[1] 첨부파일따랑해영  22-06-19
답변 질문 : 앱인벤터 이용해서 수동 자동 할라고하는데 .… 첨부파일따랑해영  22-06-19
질문 서보모터와 초음파센서 댓글[1] 브링미히어  22-06-17
질문 LCD 도와주세요 ㅜㅠㅠㅠ 댓글[2] 첨부파일dentist22  22-06-17
질문 안녕하세요 atmega128 질문드리고 싶습니다. (자… 댓글[3] dlcldl  22-06-17
게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전