회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
416 전기전자 아무거나 HOT레귤레이터를 사용한 전원부 회로와 클램퍼회로의 효율적인 차이 설명좀요1 종이악마 2369 2010.10.28
415 전기전자 아무거나 HOTorcad16.2쓰시는분..ㅠㅠ2 건들면터져 1035 2010.10.27
414 전기전자 아무거나 HOTJK플립플롭이 들어간 회로인데 좀 봐주세요.. 딘재 1573 2010.10.25
413 전기전자 아무거나 HOT10Mhz 크리스털을 이용한 주파수 발진 회로에 관해 TreeOfDream 1714 2010.10.23
412 전기전자 아무거나 HOT펄스 전류의 양은 어떻게 측정해야 할까요???2 uracha 1210 2010.10.20
411 전기전자 아무거나 HOT발전기에서 AC를 DC로 변환하려는데 정류기 추천 좀...2 chani0988 1337 2010.10.18
410 전기전자 아무거나 HOT8051입문할때 공부할 책 좋은거 있나요?2 aadqw 2012 2010.10.13
409 전기전자 아무거나 HOT라인트레이서 질문좀 드릴게요~3 궁금해 1714 2010.10.12
408 전기전자 아무거나 HOT혹시 strong pullup과 weak pullup의 차이점 알고 계신분 있나요??2 히쟈 1819 2010.10.12
407 전기전자 아무거나 HOT샐런-키 저역통과 필터 는 왜 쓰는거죠? 브이프 1287 2010.10.07
406 전기전자 아무거나 HOTPspice / Pulse droop 질문합니다 ^^ bluewingo 1406 2010.10.05
405 전기전자 아무거나 HOTattiny25 관련 책 구합니다1 로즈보이 1651 2010.10.04
404 전기전자 아무거나 HOT인터럽트가 뭐죠?4 성공하자yh 875 2010.10.01
403 전기전자 아무거나 HOTLED Down-light 구성 박팔뚝 922 2010.10.01
402 전기전자 아무거나 HOT고압용 바나나플러그 를 구하려 하는데;;;2 브이프 1602 2010.09.30
401 드론/로봇/라인트레이서 HOT안녕하세요 ^^ 라인트레이서 모터부 저항에 관련해서 질문이요1 천년동안 1457 2010.09.29
400 전기전자 아무거나 HOT답변을 듣고 인터넷 검색 해서 다시 생각해본 상식인데 틀린것이 있다면 지적해 주시고 답변도 해주세요2 종이악마 1120 2010.09.29
399 전기전자 아무거나 HOT안녕하세요 이제 막 가입한 초짜가 질문합니다..2 배고픈가 1451 2010.09.29
398 전기전자 아무거나 HOT제가 아는 상식과 질문인데요 혹시 틀린게 있다면 지적하시고 답변도 해주세요2 종이악마 1262 2010.09.28
397 전기전자 아무거나 HOTarm9 이라고하면....2 브이프 1445 2010.09.28
Prev 1 ... 14 15 16 17 18 19 20 21 22 23 ... 39 Next
  • 친구들을 불신한다는 것은 그들에게 속은 것보다 더 수치스러운 일이다.
    - 로셔푸코
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.