📄 usart.c
字号:
#include <htc.h>
#include <stdio.h>
#include "dtypes.h"
#include "usart.h"
void USART_Init(void)
{
RX_PIN = 1; /* set RX_PIN as input */
TX_PIN = 0; /* set TX_PIN as output */
ANSELH = 0x00; /* config analog chanel as digital input */
SPBRG = DIVIDER; /* baudrate */
RCSTA = (NINE_BITS | 0x90); /* 9-bit receive enable/disable */
TXSTA = (SPEED | NINE_BITS); /* config speed and 9-bit transmit enable/disable*/
SPEN = 1; /* serial port enable */
SYNC = 0; /* asynchronous */
TXEN = 1; /* enable TX */
CREN = 1; /* enable RX */
}
void USART_PutByte(u8 byte)
{
while (!TXIF) /* set when register is empty */
continue;
TXREG = byte;
return;
}
u8 USART_GetByte(void)
{
while (!RCIF) /* set when register is not empty */
continue;
return RCREG; /* RXD9 and FERR are gone now */
}
u8 USART_CheckOERR(void)
{
if (OERR) /* re-enable after overrun error */
{
CREN = 0;
CREN = 1;
return 1;
}
return 0;
}
#define USART_PutNinth(bitnine) (TX9D = bitnine ? 1 : 0)
u8 USART_GetNinth(void)
{
while (!RCIF)
continue;
return RX9D; /* RCIF is not cleared until RCREG is read */
}
u8 USART_GetFERR(void)
{
while (!RCIF)
continue;
return FERR; /* RCIF is not cleared until RCREG is read */
}
void putch(u8 byte)
{
/* output one byte */
while (!TXIF) /* set when register is empty */
continue;
TXREG = byte;
}
u8 getch(void)
{
/* retrieve one byte */
while (!RCIF) /* set when register is not empty */
continue;
return RCREG;
}
u8 getche(void)
{
u8 c;
putch(c = getch());
return c;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -