PIC C18自帶串口程序
(串口無論接收還是發(fā)送都有輪詢法和中斷法)
讀一個(gè)字節(jié)
#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
寫一個(gè)字符
寫一個(gè)字符
#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
寫一個(gè)字符串
寫一個(gè)字符串
#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
{ // Transmit a byte
while(BusyUSART());
putcUSART(*data); //=WriteUSART
} while( *data++ );
}
#endif
關(guān)鍵詞:
PIC串口程
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論