회원가입 ID/PW 찾기
AA

안녕하세요.

8051을 배우고 있는 초보입니다.

소스 코드 작성 중 delay 함수 관련해서 문의드립니다.

avr 같은 경우는 delay_us, delay_ms를 IAR 컴파일러를 통해 만들어서 통제가 가능한데

keil 컴파일러는 처음 접하다보니 어떻게 소스를 만들어야 하는지 모르겠네요.

소스 만드는 방법과 그런 결과가 어떻게 나왔는지 설명 부탁드립니다.

AVR을 예를들어

void delay_us(time_us){
    u8    i;

    for( i= 0; i < time_us; i++){              4 cycle
        asm("PUSH R0");                        2 cycle
        asm({PUSH R0");                        2 cycle
                   .
                   .
                   .
    }
}

이런식의 설명 부탁드립니다.

댓글 4
  • No Profile

    예제 소스에서 LED.C를 보면

    /* 파일 이름 LED.C */
    #include    <WIN51.H>

    /* 포트 선택 어드레스 */
    #define     SELECT     (*( unsigned char *)(0x2fC48))

    /*  LED 점등을 위한 시간 지연 함수.
       외부에서 지연 상수 del을 받는다.  */
    void    delay( int  del )
    {
        while(del--);  /* del이 제로가 될때까지 루프 */
    }

    void    main( void )
    {
        unsigned char   led = 0xfe; /* led on 초기값 */

        SELECT = 0x9e;  /* led가 연결된 I/O 를 선택한다 그림 3-2 참조 */

        do  {
           P1 = led;           /* LED 점등 */
           delay(30000);       /* LED ON 지연 시간 */
           led <<= 1;          /* LED ON 상태를 왼쪽으로 1비트 이동 */
           led |= 0xf1;        /* 상위 4비트는 1111로 마스크.그림 3-2 참조*/
           /* 그림 3-2에서 P13 까지 ON 되었는지 검사해서, P13까지 ON 되었으면
              LED ON 초기 값을 저장한다.*/
           if( led == 0xff ) led = 0xfe;
        } while(1);                      /* 무한 루프 */
    }

    이렇게 되어있는데   void    delay 가 딜레이문 아닌가요??

  • No Profile

    딜레이를 인터럽트를 사용해서 주는 방법도 알고싶은데..&^^:

  • No Profile
      void delay(int timer){  // 함수 만들고
    int i, j;                               
    for(i=0;i<=1000;i++){
    for(j=0;j<=timer;j++){
    }
    }
    }
    delay(??); //안에 1000번 돌동안 1 넣으면 1000돌시간동안 딜레이가 됩니다. 
    인터럽트를 공부하신뒤 인터럽트 함수를 만들어 응용해보세요;
  • No Profile

    정확한 딜레이 함수를 만들기 위해서는 System Clock Frequency가 어떻게 되는지

    알아야 하며 for문과 같은 명령이 수행되기 위해 몇 Cycles의 clock이 사용되는지

    알아야 합니다.

     

    예를들면 아래와 같이 함수를 만들어 사용할 수 있습니다.

     

    /* Delay Function Example */

    void delay_us(short us)
    {
     int Cnt = ((SYS_CLK/15000) * us / 1000);

     for(; Cnt>0; Cnt--); // 1 instruction = 4 cycles
    }

     

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

search
번호 분류 제목 글쓴이 조회 수 날짜
648 마이크로프로세서 HOT다시문의 드릴께요 ㅠㅠ 죄송해요ㅜㅜ3 정대철 834 2010.10.22
647 마이크로프로세서 HOTavr 키트관련 질문드려요 ^^;2 정대철 898 2010.10.20
646 마이크로프로세서 HOTavr로 디지털필터 꾸미기4 JYP 1817 2010.10.19
645 마이크로프로세서 HOT제가 atmega128이용해서 모터와 초음파센서를 쓰는 작품을 해볼려고하는데요1 온니무 2105 2010.10.19
644 마이크로프로세서 HOT8051질문입니다2 스카드잼 1449 2010.10.19
643 마이크로프로세서 HOT코드비전 질문입니다..ㅋㅋ1 POV매니아 7028 2010.10.19
642 마이크로프로세서 HOTATmega128 led의 불이 왔다갔다 하는 소스인데 분석좀 부탁 드립니다,3 goesoo 3376 2010.10.14
641 마이크로프로세서 HOT8051보드질문2 스카드잼 1268 2010.10.13
640 마이크로프로세서 HOT질문 하나 더 드려볼게요 ㅠ1 오창길2 1525 2010.10.13
639 마이크로프로세서 HOTisp 다운로드 관련 질문 드립니다6 텐지무용 1397 2010.10.13
638 마이크로프로세서 HOT인터럽트 관련 아이디어좀...3 가랑 1156 2010.10.11
마이크로프로세서 HOTkeil 컴파일러에서 delay함수 만드는 법 문의드립니다.4 히쟈 3382 2010.10.11
636 마이크로프로세서 HOT어떤 좋은 MCU를 써야할까요?3 letsgokcs 891 2010.10.08
635 마이크로프로세서 HOTpwm제어!! 부탁드립니다^^;;4 128 1886 2010.10.07
634 마이크로프로세서 HOTPWM 으로 DC 모터를 제어할때 문의 사항2 이씨죽고잡기 2051 2010.10.07
633 마이크로프로세서 HOT코드비젼 isp 다운로드 속도 질문2 운기칠삼 1481 2010.10.07
632 마이크로프로세서 HOT질문 드려요~^^1 오창길2 2167 2010.10.05
631 마이크로프로세서 HOTAT89S52와 ATMEGA128의 차이점 질문입니다.1 마검량 2043 2010.10.05
630 마이크로프로세서 HOTAtmega128 과 바코드 통신 yjw 1880 2010.10.05
629 마이크로프로세서 HOT바코드와 ATmega128 연동1 붑붑붑붑 1474 2010.10.04
Prev 1 ... 13 14 15 16 17 18 19 20 21 22 ... 50 Next
  • 아무도 나와 똑같이 닮을 수는 없다. 심지어 어떤때는 나도 나와 닮기 힘들때가 있다.
    - 탈루라 뱅크헤드
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.