회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
105 Allegro & OrCAD HOT"다각형 패드가 포함된 심볼" 그리는 방법 알려주세요~4 외날 3954 2011.03.08
104 Allegro & OrCAD HOT예전버전 여는법좀. 쨍용 1471 2011.03.07
103 Allegro & OrCAD HOT[orcad] design cache 제거방법...1 세번째 4872 2011.03.01
102 Allegro & OrCAD HOTorcad에서 부품라이브러리가 안보이는 문제...2 세번째 2221 2011.03.01
101 Allegro & OrCAD HOTLayout에서 보드아웃라인 여러개일때~3 뽀뽀뽀젤리 2220 2011.02.11
100 Allegro & OrCAD HOTAllegro OrCAD V16.0의 OrCAD PCB Editor 질문드립니다.2 start 2157 2011.02.08
99 Allegro & OrCAD HOT좌표에 의한 배치문제 질문드립니다.1 파워마이스터 1495 2011.01.25
98 Allegro & OrCAD HOTorcad16.2 windows7에서 에러 잡는법 아시는 분3 호랑이21 3111 2011.01.25
97 Allegro & OrCAD HOTOrCAD 16.3 버전부터 PCB Editer5 하늘계곡 3899 2011.01.21
96 Allegro & OrCAD HOTorcad 9.1로1 FRED 1526 2011.01.20
95 Allegro & OrCAD HOT회로도 그릴때...5 FRED 1735 2011.01.20
94 Allegro & OrCAD HOT모를것이 또 있어요3 jinse 1452 2011.01.19
93 Allegro & OrCAD HOT가르쳐 주세요2 jinse 1222 2011.01.19
92 Allegro & OrCAD HOTpadstack만들기 문제점 풀어 주세요.2 jinse 1827 2011.01.19
91 Allegro & OrCAD HOT아시는 분 알려주세요...1 jini195 1121 2011.01.13
90 Allegro & OrCAD HOT알레그로 한글메뉴얼 가지고 계신분 파도소리 2441 2011.01.12
89 Allegro & OrCAD HOT타이틀 라이브러리 어떻게하나요2 멋쟁이짱 1145 2011.01.12
88 Allegro & OrCAD HOTVERSION16.2설치1 멋쟁이짱 1325 2011.01.12
87 Allegro & OrCAD HOTNetlest 생성과정 오류ㅠㅠ3 쨍용 1435 2011.01.12
86 Allegro & OrCAD HOTorcad16.3 & pads9.2 MSVCR90.dll6 남마루 5896 2011.01.07
  • 나는 갈매기
    - 테레시코바
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.