메뉴 바로가기

서브메뉴 바로가기

본문 바로가기

logo

묻고 답하기
조회 수 11,412 추천 수 0 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

위로 아래로 댓글로 가기 인쇄 쓰기 목록
?

단축키

Prev이전 문서

Next다음 문서

위로 아래로 댓글로 가기 인쇄 쓰기 목록
?
  • WhiteAT 2013.04.25 15:55

    // 스위치 입력 상태는 받는 변수를 하나 만들어서 처리하면 좀더 간단합니다.

    // g_Status 이 1이면 1번 상태

    // 2이면 2번 상태, 3이면 3번 상태, 4이면 4번 상태,

     

    // 그리고 LED는 g_Status 변수에 따라 처리하면 인터럽트

    // 없이도 처리 가능합니다.

     

     

     

    #include <avr/io.h>

    #include <util/delay.h>

    void key_in(void);

    unsigned char LED_Data[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};

    unsigned char input= 0;

    int i,j;

     

     

     

    //1 PORTD.4에연결된버튼스위치가ON되면, PORTB.0

    //

    //PORTB.7의순서로LED가하나씩점멸

    // 2 PORTD.5에연결된버튼스위치가ON되면, PORTB.7

    // PORTB.0의순서로LED가하나씩점멸

    // 3 PORTD.6에연결된버튼스위치가ON되면, PORTB에연결된모

    // LED가점멸

    // 4 PORTD.7에연결된버튼스위치가ON되면, 8LED중상위4,

    // 하위4개의LED가교대로점멸

    unsigned char g_Status = 0; //0:

     

     

    int iStep; // 0 ~7  까지왕복

     

    void key_in(void)

    {

            input = PIND;

     

            // PORTD.4 가눌리면

            if((input &  0x10)!= 0x10)

            {

                   g_Status = 1;

            }

            else if((input & 0x20)!=  0x20)       // PORTD.5 가눌리면

            {

                   g_Status = 2;

            }

            else if((input & 0x40)!= 0x40)        // PORTD.6 가눌리면

            {

                   g_Status = 3;

            }

            else if((input & (0x80)) != 0x80)     // PORTD.7 가눌리면

            {

                   g_Status = 4;

            }

            else

            {

                   g_Status = 0;

                   iStep = 0;

            }

    }

    int main(void)

    {

            DDRD = 0x00;

            DDRE = 0xff;

     

            while(1)

            {

                   key_in();

     

                   if(g_Status ==1)

                   {

                           PORTE = LED_Data[iStep];

                           iStep++;

                           if(iStep>7) iStep = 0;

                   }

     

                   else if(g_Status ==2)

                   {

                           PORTE = LED_Data[iStep];

                           iStep--;

                           if(iStep<0) iStep = 7;

                    }

                   else if(g_Status ==3)

                   {

                           if((iStep++ %2) ==0)

                                  PORTE = 0xFF;

                           else

                                  PORTE = 0x00;

     

     

                   }

                   else if(g_Status ==4)

                   {

                           if((iStep++ %2) ==0)

                                  PORTE = 0x0F;

                           else

                                  PORTE = 0xf0;

                   }

     

     

                   _delay_ms(20*25);

     

            }

            return 0;

    }

  • 이경인 2016.11.30 10:17

    혹시 이 프로그램 짤때 헤더파일은 없는건가요? 헤더파일 있으시면 참고좀가능할까요??..

  • WhiteAT 2016.11.30 11:08

    이경인 님에게 달린 댓글

    별도의 헤더 파일은 없습니다.

    AVRStudio 로 기본적으로 제공되는 파일만으로 가능합니다.~


List of Articles
번호 분류 제목 날짜
101 프로그래밍 Commu 프로그램에서 1 2011.05.21
100 프로그래밍 c++하는데 MFC 이용해서 이미지 불러오기!!! 1 2011.05.26
99 프로그래밍 비밀글 입니다. 1 secret 2011.05.26
98 전기,전자,펌웨어 AVR를 이용한 센서값을 LCD와 터미털프로그램에 값 전송하기2 1 2011.05.27
97 프로그래밍 mfc 테트리스 만들기 타이머설정 (왕초보) 1 2011.05.31
96 프로그래밍 mfc wav 음악파일 재생. 2 2011.06.03
95 프로그래밍 비밀글 입니다. 4 secret 2011.06.03
94 전기,전자,펌웨어 비밀글 입니다. 1 secret 2011.07.11
93 프로그래밍 소스 질문입니다 ! 4 file 2011.07.11
92 프로그래밍 [제발도와주세요] acitveX 를 이용하여 comport 연결하기 3 2011.07.14
91 프로그래밍 비쥬얼 스튜디오 애러 좀 도와주세요 1 2011.10.18
90 프로그래밍 비밀글 입니다. 1 secret 2011.10.24
89 일반 PC최적화 어플리케이션 디자인을 맡고 싶네요 1 file 2011.11.08
88 프로그래밍 선생님 보드 선언에서 의문점과 작동법좀 가르쳐주세요. 1 2011.11.09
87 전기,전자,펌웨어 FND 12시제로 표현하는 건데요 소스 질문좀 드릴게요 1 2012.04.07
목록
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 Next
/ 11