회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
752 마이크로프로세서 HOT8051질문입니다2 스카드잼 1449 2010.10.19
751 마이크로프로세서 HOT코드비전 질문입니다..ㅋㅋ1 POV매니아 7028 2010.10.19
750 마이크로프로세서 HOTATmega128 led의 불이 왔다갔다 하는 소스인데 분석좀 부탁 드립니다,3 goesoo 3377 2010.10.14
749 마이크로프로세서 HOT8051보드질문2 스카드잼 1268 2010.10.13
748 마이크로프로세서 HOT질문 하나 더 드려볼게요 ㅠ1 오창길2 1525 2010.10.13
747 펌웨어 & 코딩언어 HOTGPS 데이터를 받아서 지도로 맵핑을 하고자 합니다. 더그라스 1084 2010.10.13
746 마이크로프로세서 HOTisp 다운로드 관련 질문 드립니다6 텐지무용 1397 2010.10.13
745 마이크로프로세서 HOT인터럽트 관련 아이디어좀...3 가랑 1158 2010.10.11
마이크로프로세서 HOTkeil 컴파일러에서 delay함수 만드는 법 문의드립니다.4 히쟈 3383 2010.10.11
743 마이크로프로세서 HOT어떤 좋은 MCU를 써야할까요?3 letsgokcs 892 2010.10.08
742 마이크로프로세서 HOTpwm제어!! 부탁드립니다^^;;4 128 1886 2010.10.07
741 마이크로프로세서 HOTPWM 으로 DC 모터를 제어할때 문의 사항2 이씨죽고잡기 2051 2010.10.07
740 마이크로프로세서 HOT코드비젼 isp 다운로드 속도 질문2 운기칠삼 1482 2010.10.07
739 마이크로프로세서 HOT질문 드려요~^^1 오창길2 2168 2010.10.05
738 마이크로프로세서 HOTAT89S52와 ATMEGA128의 차이점 질문입니다.1 마검량 2043 2010.10.05
737 마이크로프로세서 HOTAtmega128 과 바코드 통신 yjw 1880 2010.10.05
736 마이크로프로세서 HOT바코드와 ATmega128 연동1 붑붑붑붑 1475 2010.10.04
735 마이크로프로세서 HOTLED POV를 제작해보려 합니다1 POV매니아 2338 2010.10.04
734 마이크로프로세서 HOTAVR과 STM의 프로그래밍에 질문입니다.2 브이프 993 2010.10.02
733 마이크로프로세서 HOT인터럽트가 무엇인가요 ㅠ4 성공하자yh 1008 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.