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 송수신 함수
{
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;
}
}
}