회원가입 ID/PW 찾기
AA

C언어 기초가 부족해서 소스를 받아서 일단 과제를 했는데 어떻게 돌아가는건지 자세히 알고 싶어서 글남깁니다.

#include <avr/io.h>
#include "OK128.h"

void main(void)
{
 DDRA=0xff;
 int i;
 
 while(1)
 {
 PORTA=0xFE;

 for(i=0;i<8;i++)
 {
  PORTA=PORTA<<1;
  PORTA=PORTA|0x01;
  Delay_ms(1000);
  if(PORTA==0x7F)
  
  {
  for(i=0;i<8;i++)
  
  {
  PORTA=PORTA>>1;
  PORTA=PORTA|0x80;
  Delay_ms(1000);
  
  if(PORTA==0xfe)
  {
  for(i=0;i<8;i++);
  }
 }
}
}
}
}

댓글 3
  • No Profile

    DDRA : 포트 설정 레지스터( 1일경우 출력 , 0 일경우 입력)
    PORTA : 포트 제어 레지스터 ( 1일경우 High 0일경우 Low) 

    X <<  Y : 비트이동 명령 , X를  <<쪽 방향으로 Y 비트만큼 이동

    이거면 분석이 되실듯..

  • No Profile
    그냥 포트 설정 하구 LED 왔다리 갔다리 하는거 같은데요 ^^ 저도 초보라 ㅋㅋ
    PORTA=PORTA<<1;
    왼쪽으루
    PORTA=PORTA>>1;
    오른쪽으루 비트 이동이구요 ~ 비트 이동되면서 불켜지것네요 ㅋㅋ
  • No Profile
    위에 분들 다 잘 설명해놓으셔서 별 필요없겠지만 납이 필요해서 몇자 적어봅니다.
    DDRA=0xff; // A 포트를 출력하는데 사용하겠다는 선언
     int i;  // 일반 변수 선언
     
     while(1) // 실제프로그램(무한루프)의 시작입니다. 비교값이 1, 즉 true이기 때문에 탈출하지 않습니다.
     {
     PORTA=0xFE; // PA0에는 0 V의 전압이 출력되네요 led연결에 따라 0번만 불이 켜지고 꺼져있겠네요led의 다른쪽이 
                                  // 전원이랑 연결 되어 있는 형태가 일반적이니 아마 0번만 불이 켜져 있을거라 생각합니다.
     for(i=0;i<8;i++) // 8번 반복이네요
     {
      PORTA=PORTA<<1; // 오른쪽에서 왼쪽으로 한비트씩 시프트 시킨다는 뜻입니다. 불이 0에서 1,2,3... 의 순으로 옮겨질태죠
      PORTA=PORTA|0x01;// 시프트 되서 팅겨 나온 값이 에러를 일으키지 않도록 방지 하는 안정장치
      Delay_ms(1000); //시간지연이네요 불이 1초마다 옮겨지도록 설정됬네요
      if(PORTA==0x7F)// 불이 7번까지 다 옮겨졌을 경우에 실행됩니다.
      
      {
      for(i=0;i<8;i++) // 반복
      
      {
      PORTA=PORTA>>1; // 이번엔 왼쪽에서 오른쪽으로 한비트씩 옮기네요
      PORTA=PORTA|0x80; // 위와 같은 안전해로 이번에는 시프트 방향 바껴있어 값이 변했네요
      Delay_ms(1000);
      
      if(PORTA==0xfe) // 음 여기부터는 잘못된거 같은데요.. 위에 있는데 왜 또있는건지..
      {
      for(i=0;i<8;i++);
      }// 아래 의 괄호만 제대로 닫으시면 동작하는데 무리는 없을듯..
     }
    }
    }
    }
    }///동작에는 무리가 없을듯한데 제가 보기에는 for는 특별히 없어도 똑같이 동작 할거 같네요 ㅎㅎ

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

search
번호 분류 제목 글쓴이 조회 수 날짜
752 마이크로프로세서 HOT8051질문입니다2 스카드잼 1448 2010.10.19
751 마이크로프로세서 HOT코드비전 질문입니다..ㅋㅋ1 POV매니아 7020 2010.10.19
마이크로프로세서 HOTATmega128 led의 불이 왔다갔다 하는 소스인데 분석좀 부탁 드립니다,3 goesoo 3375 2010.10.14
749 마이크로프로세서 HOT8051보드질문2 스카드잼 1265 2010.10.13
748 마이크로프로세서 HOT질문 하나 더 드려볼게요 ㅠ1 오창길2 1521 2010.10.13
747 펌웨어 & 코딩언어 HOTGPS 데이터를 받아서 지도로 맵핑을 하고자 합니다. 더그라스 1078 2010.10.13
746 마이크로프로세서 HOTisp 다운로드 관련 질문 드립니다6 텐지무용 1395 2010.10.13
745 마이크로프로세서 HOT인터럽트 관련 아이디어좀...3 가랑 1154 2010.10.11
744 마이크로프로세서 HOTkeil 컴파일러에서 delay함수 만드는 법 문의드립니다.4 히쟈 3375 2010.10.11
743 마이크로프로세서 HOT어떤 좋은 MCU를 써야할까요?3 letsgokcs 888 2010.10.08
742 마이크로프로세서 HOTpwm제어!! 부탁드립니다^^;;4 128 1882 2010.10.07
741 마이크로프로세서 HOTPWM 으로 DC 모터를 제어할때 문의 사항2 이씨죽고잡기 2049 2010.10.07
740 마이크로프로세서 HOT코드비젼 isp 다운로드 속도 질문2 운기칠삼 1468 2010.10.07
739 마이크로프로세서 HOT질문 드려요~^^1 오창길2 2158 2010.10.05
738 마이크로프로세서 HOTAT89S52와 ATMEGA128의 차이점 질문입니다.1 마검량 2041 2010.10.05
737 마이크로프로세서 HOTAtmega128 과 바코드 통신 yjw 1869 2010.10.05
736 마이크로프로세서 HOT바코드와 ATmega128 연동1 붑붑붑붑 1470 2010.10.04
735 마이크로프로세서 HOTLED POV를 제작해보려 합니다1 POV매니아 2334 2010.10.04
734 마이크로프로세서 HOTAVR과 STM의 프로그래밍에 질문입니다.2 브이프 993 2010.10.02
733 마이크로프로세서 HOT인터럽트가 무엇인가요 ㅠ4 성공하자yh 1004 2010.10.01
Prev 1 ... 16 17 18 19 20 21 22 23 24 25 ... 58 Next
  • 언제까지고 계속되는 불행은 없다. 가만히 견디고 참든지 용기를 내쫓아 버리든지 이 둘 중의 한 가지 방법을 택해야 한다.
    - 로망 롤랑
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.