회원가입 ID/PW 찾기
AA

밑에 소스 보시면 led가 좌 ==> 우 ,  우 =>좌 로 이동해야 되는데

좌 ===> 우 로 밖에 되지 않네요..

이것때문에 벌써 몇 시간째 하고 있는데...       왕복으로 할려면 소스를 어떻게 짜야 될까요 ㅠ.ㅠ

#include<avr/io.h>
#include<avr/iom128.h>
#include<avr/interrupt.h>
#include<compat/deprecated.h>

unsigned char data=0x01;

 

int main(void)
{
    DDRB=0xFF; // 포트 B 출력
    PORTB=data;       
   DDRD = 0x00;   // PD0 입력  
 
     
    EIMSK|=0x01;   // INT0 개별 인터럽트 인에이블  
    EICRA|=0x03;   // INT0 상승 에지   
    EIFR|=0x01;     // INTF0 클리어   
     
    sei();       
                             
           
    while(1);  
      

ISR(INT0_vect)  
{  
  
  data <<= 1;  // led 변수의 좌 쉬프트
 
 if(data == 0x00)
 {
  data ==0x01;  
 }

 PORTB = data;  // 포트 B에 LED 값 출력함

-----------------------------------------------------------------------------------------------

요건 제가 생각해 본 소스인데.. 계속 안되네용 ㅠ.ㅠ

#include<avr/io.h>
#include<avr/iom128.h>
#include<avr/interrupt.h>
#include<compat/deprecated.h>
#include<util/delay.h>
unsigned char led=0x00;

int main(void)
{
 
            
 DDRB=0xFF; // 포트 B 출력
 PORTB=0x00;     
 
    DDRD = 0x00;   // PD0 입력  
 
    EIMSK|=0x01;   // INT0 개별 인터럽트 인에이블  
    EICRA|=0x03;   // INT0 상승 에지   
    EIFR|=0x01;        
     
    sei();     
   
 return 0; 

ISR(INT0_vect)  
{  
    unsigned char led=0;
 while(1)
 {
        for(led=0; led< 8; led++)
   {
   PORTB=~(1<<led);
   _delay_ms(1500);
   }
     // PORTB = led;
        for(led=7; led>=0; led--)
   {
   PORTB=~(1<<led);
    _delay_ms(1500);
   }
      //PORTB = led;
    }
}

댓글 5
  • No Profile
    저..위에코드말인데요 ISR함수 들어올때마다  data <<= 1; 이거때문에 그런거 아닌가욤?
  • No Profile
    글쓴이 강희 11.01.12 16:06 댓글 좋아요 0 싫어요 0

    위에 코드는 한칸씩 옆으로 가는거고요..

    밑에 코드가 스위치 누를때마다 좌==>우 , 우===>좌로 가야 되는데..

    for문은 바로 스위치 누르면 같다가 바로 오네요.

    스위치 눌렀을때 옆으로 한 칸씩 갔다가 다시 와야 되는데..

    어떻게 짜야 되는지 모르겠네요.ㅠ.

  • 강희님께
    No Profile

    지금 아래쪽코드를 보면 스위치를 눌러서 인터럽트 발생시마다 ISR함수가 실행되는데 이렇게 될때마다 led라는 변수가 계속 0으로 초기화 되네요 하나씩 차근차근 보면서 다시 해보시면 쉬우실텐데..

  • No Profile

    winavr에서 compile한 거라면

    인터럽트에서 전역변수를 사용하려면 "volatile"을 써주어야 합니다.

    volatile unsigned char data;

    라고 선언해야 합니다.

     

  • No Profile

    서비스 루틴안에 코드를 짜신건가요?

     

    이런 방식의 코딩은 좋지 않은것 같습니다.

     

     ISR 내부에는 간략한 변수 바꿈이나 if문 정도만 써주시고  좌-> 우  , 우-> 좌  따로따로 함수를 만들어서

     

     서비스 루틴에서 함수를 바꾸어주는 방식을 쓰시는 편이 제어하기 편합니다.

     

    메인문에서 함수 돌리고 인터럽트 발생시에 함수를 왔다갔다 하는 방법이죠

     

     ISR 내부에 무한 반복문은 충격적이군요

     

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
번호 분류 제목 글쓴이 조회 수 날짜
194 Allegro & OrCAD HOTorcad 9.1로1 FRED 1526 2011.01.20
193 Allegro & OrCAD HOT회로도 그릴때...5 FRED 1735 2011.01.20
192 PADS HOT그룹설정 해제(pads)3 chumdan 2573 2011.01.20
191 Allegro & OrCAD HOT모를것이 또 있어요3 jinse 1452 2011.01.19
190 Allegro & OrCAD HOT가르쳐 주세요2 jinse 1222 2011.01.19
189 Allegro & OrCAD HOTpadstack만들기 문제점 풀어 주세요.2 jinse 1826 2011.01.19
188 Allegro & OrCAD HOT아시는 분 알려주세요...1 jini195 1121 2011.01.13
187 ECAD 아무거나 HOTArtwork 은 어떤걸 많이 사용하나요?4 유럽여행 2896 2011.01.12
186 Allegro & OrCAD HOT알레그로 한글메뉴얼 가지고 계신분 파도소리 2441 2011.01.12
185 PADS HOT라이브러리 생성방법 ?5 멋쟁이짱 2842 2011.01.12
184 PADS HOTLOGIC과 ROUTER의 연동방법3 멋쟁이짱 2830 2011.01.12
183 Allegro & OrCAD HOT타이틀 라이브러리 어떻게하나요2 멋쟁이짱 1144 2011.01.12
182 Allegro & OrCAD HOTVERSION16.2설치1 멋쟁이짱 1325 2011.01.12
181 Allegro & OrCAD HOTNetlest 생성과정 오류ㅠㅠ3 쨍용 1435 2011.01.12
180 ECAD 아무거나 HOTpcb 임피던스 매칭에 대하여5 chumdan 10873 2011.01.11
179 Allegro & OrCAD HOTorcad16.3 & pads9.2 MSVCR90.dll6 남마루 5895 2011.01.07
178 Allegro & OrCAD HOTOrcad 16.3 R6034 error...1 리아군 4923 2011.01.06
177 PADS HOTpads8 코기리555 1470 2011.01.06
176 Allegro & OrCAD HOT막시작한 초보를 위한..6 그르누이 1360 2011.01.05
175 PADS HOTPADS 9.2 설치가 안되네요 ㅜㅜ6 하오마루 3704 2011.01.04
Prev 1 ... 18 19 20 21 22 23 24 25 26 27 ... 32 Next
  • 천재는 노력하는 사람을 이길 수 없고 노력하는 사람은 즐기는 사람을 이길 수 없다.
    - 롤프 메르쿨레
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.