회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
66 개발용역 HOTPCB Art Work 제작9 박팔뚝 5505 2010.10.18
65 개발용역 HOT계약직 또는 알바 형태로 프로그램 짜 주실분 찾습니다.(종료) 푸른하늘은하수 5666 2010.10.14
64 개발용역 HOT자동차 밧데리 충전기 개발1 C1 6571 2010.10.11
63 개발용역 HOT의뢰: Arduino로 제작된 코드를 ARM7용으로 포팅해 주실 분을 찾습니다.1 센서블유아이 5243 2010.09.28
62 개발용역 HOT삼성 3.5인치 TFT-LCD (Touch 포함) 싸게 드려요. 삼성 3.5인치 TFT-LCD (Touch 포함) 싸게 드려요. 띵요루슛 4714 2010.09.17
61 개발용역 HOT8051: 적외선 물체 감지3 enshiper 6463 2010.09.13
60 개발용역 HOTPCB 임베디드 프로그래밍 , 아르바이트 의뢰. 업체도 문의 가능1 대경 11844 2010.09.05
59 개발용역 HOT고압 파워 개발1 미스메이커 5544 2010.08.27
58 개발용역 HOTPCB 아트웍 / PCB 제작 / PCB 조립 전문 업체1 용가리3 12192 2010.08.14
57 개발용역 HOTPCB ARTWORK 설계 / 교육 업체 CADROOM 입니다.1 코딱지 5517 2010.08.11
56 개발용역 HOTserial port data를 pc로 전송하여 그래프화를 하고 싶습니다.1 Cool™ 5504 2010.08.10
55 개발용역 HOT사인파를 정류해서 led로 표시할려면3 초초 6215 2010.08.04
54 개발용역 HOT이런것도 개발 의뢰라고 해야하나...4 밤귀신 6249 2010.07.27
53 개발용역 HOT회로설계 & pcb 아트웍 배우고 싶으신분10 용가리3 12028 2010.07.17
52 개발용역 HOTWireless + Touch 제품 MCU S/W 개발 알바가능하신분 연락바랍니다. Quadro 11744 2010.07.17
51 개발용역 HOT전자회로,펌웨어등 유능한 인재를 모십니다. 파워짱 6404 2010.06.05
50 개발용역 HOTled콘트롤5 아크마 6843 2010.05.27
49 개발용역 HOT제작의뢰 : 8051 적외선센서5 벤트너 6203 2010.05.09
48 개발용역 HOT전광판 컨트롤러 개발자료 가지고 계신분 모십니다.3 쓰나미 5597 2010.05.03
47 개발용역 HOT샘플 보드 손으로 smd 땜해 주실분 있나요?5 땜고수 5129 2010.04.29
Prev 1 ... 3 4 5 6 7 8 9 10 11 12 Next
  • 사랑은 왕궁에서뿐 아니라 오두막집에서도 산다.
    - J.레이
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.