[Microchip]/PIC16F2012. 5. 14. 01:01

[PIC16F723 EVM] UART 테스트

[PIC16F723 EVM] UART 테스트

 

 

 

 

PIC16F723 UART 블록도

 

 

 

 

 

PIC16F723 UART 보레이트 설정

 

 

 

PIC16F723 UART 초기화 함수

// Serial Prot0 Utility Fuction Routine
void U0_Init(unsigned char baud)
{
 U0_SetBaud(baud);
 
 TRISC6 = 0;     // TX Output
 TRISC7 = 1;     // RX Input
 
 TXSTA = 0b00000100;   // 8bit Transmission, Asynchronous Mode
        // High Speed,
 RCSTA = 0b10000000;   // Serial Port Enable, 8bit Reception
     `  
 TXEN = 1;     // TX Enable
 CREN = 1;     // RX Enable
}

 

 

 

PIC16F723 UART 송수신 함수

unsigned char U0_GetByte(void)
{
 while(!RCIF); // Wait for data in the UARTRx.

    return (RCREG);
}

 

void U0_PutByte(unsigned char Data)
{
 while(!TRMT);

 TXREG = Data;
}  

 

 

* 참고로 Hitech C 컴파일러는 무료버전을 사용하므로 printf는 지원이 안된다. 약간 다른 방법으로 구현 했는데.. 용량은 그렇게 많지 않는것 같다.

 

    Program space        used   3E9h (  1001) of  1000h words   ( 24.4%)
    Data space           used    37h (    55) of    C0h bytes   ( 28.6%)
    EEPROM space         None available
    Configuration bits   used     1h (     1) of     2h words   ( 50.0%)
    ID Location space    used     0h (     0) of     4h bytes   (  0.0%)

 

 

 

PICF723 UART 테스트 프로그램 소스

void main(void)
{
 unsigned char rx;
 unsigned int cnt = 0;
 SystemInit();
    Led1Init();
 
 U0_Init(BAUD_57600);
 DebugPrint("PIC16F723 EVM Test\r\n");

    while(1)
    {
  rx = U0_GetByte();

  switch(rx)
  {
   case '0':
    Led1Off();
    DebugPrint("LED Off = %d\r\n", cnt++);
    break;

   case '1':
    Led1On();
    U0_PutStr("LED On\r\n");
    break;
  }
    }
}

 

 

 

 

 

 

Posted by nexp

댓글을 달아 주세요