PIC C18自带串口程序
(串口无论接收还是发送都有轮询法和中断法)
读一个字节
#include
#include
/********************************************************************
* Function Name: ReadUSART *
* Return Value: char: received data *
* Parameters: void *
* Description: This routine reads the data from the USART *
* and records the status flags for that byte *
* in USART_Status (Framing and Overrun). *
********************************************************************/
#if defined (AUSART_V1) || defined (EAUSART_V3) || defined (EAUSART_V4) || defined (EAUSART_V5)
char ReadUSART(void) //this function can be removed by macro #define ReadUSART RCREG
{
char data; // Holds received data
USART_Status.val &= 0xf2; // Clear previous status flags
if(RCSTAbits.RX9) // If 9-bit mode
{
USART_Status.RX_NINE = 0; // Clear the receive bit 9 for USART
if(RCSTAbits.RX9D) // according to the RX9D bit
USART_Status.RX_NINE = 1;
}
if(RCSTAbits.FERR) // If a framing error occured
USART_Status.FRAME_ERROR = 1; // Set the status bit
if(RCSTAbits.OERR) // If an overrun error occured
USART_Status.OVERRUN_ERROR = 1; // Set the status bit
data = RCREG; // Read data
return (data); // Return the received data
}
#endif
获取字符串#include
#include
/********************************************************************
* Function Name: getsUSART *
* Return Value: void *
* Parameters: buffer: pointer to string *
* len: length of characters to receive *
* Description: This routine receives a string of characters *
* from the USART of length specified by len. *
********************************************************************/
#if defined (AUSART_V1) || defined (EAUSART_V3) || defined (EAUSART_V4) || defined (EAUSART_V5)
void getsUSART(char *buffer, unsigned char len)
{
char i; // Length counter
unsigned char data;
for(i=0;i { while(!DataRdyUSART());// Wait for data to be received data = getcUSART(); // Get a character from the USART =ReadUSART(void) // and save in the string *buffer = data; buffer++; // Increment the string pointer } } #endif #include #include /******************************************************************** * Function Name: WriteUSART * * Return Value: none * * Parameters: data: data to transmit * * Description: This routine transmits a byte out the USART. * ********************************************************************/ #if defined (AUSART_V1) || defined (EAUSART_V3) || defined (EAUSART_V4) || defined (EAUSART_V5) void WriteUSART(char data) { if(TXSTAbits.TX9) // 9-bit mode? { TXSTAbits.TX9D = 0; // Set the TX9D bit according to the if(USART_Status.TX_NINE) // USART Tx 9th bit in status reg TXSTAbits.TX9D = 1; } TXREG = data; // Write the data byte to the USART } #endif #include #include /********************************************************************** * Function Name: putsUSART * * Return Value: void * * Parameters: data: pointer to string of data * * Description: This routine transmits a string of characters * * to the USART including the null. * **********************************************************************/ #if defined (AUSART_V1) || defined (EAUSART_V3) || defined (EAUSART_V4) || defined (EAUSART_V5) void putsUSART( char *data) { do
写一个字符
写一个字符串
PIC串口程 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)