본문 바로가기

[Microchip]/PIC18F

[PIC18F-s EVM]LED테스트 (PIC18F2450)

[PIC18F-s EVM]LED테스트 (PIC18F2450, PIC18F2455)


PIC18F2450은 USB 때문에 클럭을 20Mhz로 사용해서 IO토글 속도가 500ns(470kHz)정도 나온다...
속도가 빠르니 for루프 딜레이 사용은 좀 그렇고... 자체 제공 delay함수를 사용했다.

PIC18F2450 LED제어 예제 소스





[PIC18F-s EVM]의 OnBoard LED는 PORTA0, 1에 연결되어 있다.


LED드라이버는 PORTA에 정의해서 작성 했고..
//-----------------------------------------------------------------------------
//LED Driver
#define LED1_BIT   BIT0
#define LED1_PORT   PORTA
#define Led1Init()   TRISAbits.TRISA0 = 0
#define Led1On()   Cbi(LED1_PORT, LED1_BIT)
#define Led1Off()   Sbi(LED1_PORT, LED1_BIT)
#define Led1Toggle()  Tbi(LED1_PORT, LED1_BIT)

#define LED2_BIT   BIT1
#define LED2_PORT   PORTA
#define Led2Init()   TRISAbits.TRISA1 = 0
#define Led2On()   Cbi(LED2_PORT, LED2_BIT)
#define Led2Off()   Sbi(LED2_PORT, LED2_BIT)  
#define Led2Toggle()  Tbi(LED2_PORT, LED1_BIT)
//-----------------------------------------------------------------------------
 
소스코드는 다른 MCU예제를 사용하는데... 컴파일러가 무료인지라 날짜가 지나서 그런지... 몇가지 제약이 있는것 같다. 다른 옵션이 있는지 알아 봐야 겠다.. 아무튼 업데이트를 하던지...

#include <p18cxxx.h>

#include <delays.h>

#pragma config WDT = OFF

#include "..\00_hal\config.h"

//#include "..\00_hal\system.h"

#define Delay   Delay10KTCYx

/*void Delay(unsigned int N)

{

        unsigned int i;

        for(i=0;i<N;i++)Delay1KTCYx(1);

}*/

void SystemInit(void)

{

}

void main (void)

{

        //Init System

        SystemInit();

       

        //Init LED

        Led1Init();

        Led2Init();

        Led2On();

        Led1On();       

        while(1)

        {

                Delay(300);

                Led2On();

                Led1Off();

                Delay(300);

                Led1On();

                Led2Off();       

       

}


확장 보드에 연결하여 테스트




동영상

반응형