📄 uart.c
字号:
SI03SEL &= ~ISR2; /* Select receive-finished interrupt */
SI03MASK &= ~T2MASK; /* Disable SIO2 transmit interrupt request */
SI03MASK |= R2MASK; /* Enable SIO2 receive interrupt request */
SI23STAT = ~( IRQT2 | IRQR2); /* Clear interrupt request */
/*** Starting transmission/reception ***/
S2TCNT |= TEN; /* Enable transmission */
S2RCNT |= REN; /* Enable reception */
}
/*""FUNC COMMENT""*******************************************************
* Function name: SIO3_init()
*-----------------------------------------------------------------------
* Description : Sets SIO3 for 8-bit UART
* : - Reception by interrupt
* : - Program transmission
*-----------------------------------------------------------------------
* Argument : -
*-----------------------------------------------------------------------
* Returns : -
*-----------------------------------------------------------------------
* Notes : Port input function must be enabled
* : Must be executed while interrupts are disabled
* : Interrupt priority levels are common to both SIO2,3 transmission and reception
*""FUNC COMMENT END""***************************************************/
void SIO3_init( void)
{
/*** Setting transfer mode */
S3RCNT = 0x00; /* Disable reception */
S3TCNT = SnTCNT_INI; /* f(BCLK) and disable transmission */
P17MOD |= P17MOD_SCI3; /* Set P17 for SCI3 mode */
S3MOD = SnMOD_INI; /* Set data format */
S3BAUR = BAUD_62_5; /* Set baud rate */
/*** Interrupt related settings ***/
ISIO23CR = SioILEVEL; /* Set SIO2,3 transmission and reception interrupt priority level */
SI03SEL &= ~ISR3; /* Select receive-finished interrupt */
SI03MASK &= ~T3MASK; /* Disable SIO3 transmit interrupt request */
SI03MASK |= R3MASK; /* Enable SIO3 receive interrupt request */
SI23STAT = ~( IRQT3 | IRQR3); /* Clear interrupt request */
/*** Starting transmission/reception ***/
S3TCNT |= TEN; /* Enable transmission */
S3RCNT |= REN; /* Enable reception */
}
/*""FUNC COMMENT""*******************************************************
* Function name: SIO4_init()
*-----------------------------------------------------------------------
* Description : Sets SIO4 for 8-bit UART
* : - Reception by interrupt
* : - Program transmission
*-----------------------------------------------------------------------
* Argument : -
*-----------------------------------------------------------------------
* Returns : -
*-----------------------------------------------------------------------
* Notes : Port input function must be enabled
* : Must be executed while interrupts are disabled
* : Interrupt priority levels are common to both SIO4,5 transmission and reception
*""FUNC COMMENT END""***************************************************/
void SIO4_init( void)
{
/*** Setting transfer mode */
S4RCNT = 0x00; /* Disable reception */
S4TCNT = SnTCNT_INI; /* f(BCLK) and disable transmission */
P20MOD |= P20MOD_SCI4; /* Set P20 for SCI4 mode */
S4MOD = SnMOD_INI; /* Set data format */
S4BAUR = BAUD_62_5; /* Set baud rate */
/*** Interrupt related settings ***/
ISIO45CR = SioILEVEL; /* Set SIO4,5 transmission and reception interrupt priority level */
SI45SEL &= ~ISR4; /* Select receive-finished interrupt */
SI45MASK &= ~T4MASK; /* Disable SIO4 transmit interrupt request */
SI45MASK |= R4MASK; /* Enable SIO4 receive interrupt request */
SI45STAT = ~( IRQT4 | IRQR4); /* Clear interrupt request */
/*** Starting transmission/reception ***/
S4TCNT |= TEN; /* Enable transmission */
S4RCNT |= REN; /* Enable reception */
}
/*""FUNC COMMENT""*******************************************************
* Function name: SIO5_init()
*-----------------------------------------------------------------------
* Description : Sets SIO5 for 8-bit UART
* : - Reception by interrupt
* : - Program transmission
*-----------------------------------------------------------------------
* Argument : -
*-----------------------------------------------------------------------
* Returns : -
*-----------------------------------------------------------------------
* Notes : Port input function must be enabled
* : Must be executed while interrupts are disabled
* : Interrupt priority levels are common to both SIO4,5 transmission and reception
*""FUNC COMMENT END""***************************************************/
void SIO5_init( void)
{
/*** Setting transfer mode */
S5RCNT = 0x00; /* Disable reception */
S5TCNT = SnTCNT_INI; /* f(BCLK) and disable transmission */
P20MOD |= P20MOD_SCI5; /* Set P20 for SCI5 mode */
S5MOD = SnMOD_INI; /* Set data format */
S5BAUR = BAUD_62_5; /* Set baud rate */
/*** Interrupt related settings ***/
ISIO45CR = SioILEVEL; /* Set SIO4,5 transmission and reception interrupt priority level */
SI45SEL &= ~ISR5; /* Select receive-finished interrupt */
SI45MASK &= ~T5MASK; /* Disable SIO5 transmit interrupt request */
SI45MASK |= R5MASK; /* Enable SIO5 receive interrupt request */
SI45STAT = ~( IRQT5 | IRQR5); /* Clear interrupt request */
/*** Starting transmission/reception ***/
S5TCNT |= TEN; /* Enable transmission */
S5RCNT |= REN; /* Enable reception */
}
/*""FUNC COMMENT""*******************************************************
* Function name: SIO0_Tr()
*-----------------------------------------------------------------------
* Description : Transmits data from SIO0
*-----------------------------------------------------------------------
* Argument : unsigned char *TrBuf Pointer to transmit data buffer
* : unsigned int TrNum Number of transmit bytes
*-----------------------------------------------------------------------
* Returns : -
*-----------------------------------------------------------------------
* Notes : Do not always need to wait for end of transmission
*""FUNC COMMENT END""***************************************************/
void SIO0_Tr( unsigned char *TrBuf, unsigned int TrNum)
{
unsigned long i;
for( i = 0; i < TrNum; i++) {
while(( S0TCNT & TBE) == 0); /* Wait until transmit buffer is empty */
S0TXB_L = *TrBuf++; /* Transfer return data */
}
while(( S0TCNT & TSTAT) != 0); /* Wait for end of transmission */
}
/*""FUNC COMMENT""*******************************************************
* Function name: SIO1_Tr()
*-----------------------------------------------------------------------
* Description : Transmits data from SIO1
*-----------------------------------------------------------------------
* Argument : unsigned char *TrBuf Pointer to transmit data buffer
* : unsigned int TrNum Number of transmit bytes
*-----------------------------------------------------------------------
* Returns : -
*-----------------------------------------------------------------------
* Notes : Do not always need to wait for end of transmission
*""FUNC COMMENT END""***************************************************/
void SIO1_Tr( unsigned char *TrBuf, unsigned int TrNum)
{
unsigned long i;
for( i = 0; i < TrNum; i++) {
while(( S1TCNT & TBE) == 0); /* Wait until transmit buffer is empty */
S1TXB_L = *TrBuf++; /* Transfer return data */
}
while(( S1TCNT & TSTAT) != 0); /* Wait for end of transmission */
}
/*""FUNC COMMENT""*******************************************************
* Function name: SIO2_Tr()
*-----------------------------------------------------------------------
* Description : Transmits data from SIO2
*-----------------------------------------------------------------------
* Argument : unsigned char *TrBuf Pointer to transmit data buffer
* : unsigned int TrNum Number of transmit bytes
*-----------------------------------------------------------------------
* Returns : -
*-----------------------------------------------------------------------
* Notes : Do not always need to wait for end of transmission
*""FUNC COMMENT END""***************************************************/
void SIO2_Tr( unsigned char *TrBuf, unsigned int TrNum)
{
unsigned long i;
for( i = 0; i < TrNum; i++) {
while(( S2TCNT & TBE) == 0); /* Wait until transmit buffer is empty */
S2TXB_L = *TrBuf++; /* Transfer return data */
}
while(( S2TCNT & TSTAT) != 0); /* Wait for end of transmission */
}
/*""FUNC COMMENT""*******************************************************
* Function name: SIO3_Tr()
*-----------------------------------------------------------------------
* Description : Transmits data from SIO3
*-----------------------------------------------------------------------
* Argument : unsigned char *TrBuf Pointer to transmit data buffer
* : unsigned int TrNum Number of transmit bytes
*-----------------------------------------------------------------------
* Returns : -
*-----------------------------------------------------------------------
* Notes : Do not always need to wait for end of transmission
*""FUNC COMMENT END""***************************************************/
void SIO3_Tr( unsigned char *TrBuf, unsigned int TrNum)
{
unsigned long i;
for( i = 0; i < TrNum; i++) {
while(( S3TCNT & TBE) == 0); /* Wait until transmit buffer is empty */
S3TXB_L = *TrBuf++; /* Transfer return data */
}
while(( S3TCNT & TSTAT) != 0); /* Wait for end of transmission */
}
/*""FUNC COMMENT""*******************************************************
* Function name: SIO4_Tr()
*-----------------------------------------------------------------------
* Description : Transmits data from SIO4
*-----------------------------------------------------------------------
* Argument : unsigned char *TrBuf Pointer to transmit data buffer
* : unsigned int TrNum Number of transmit bytes
*-----------------------------------------------------------------------
* Returns : -
*-----------------------------------------------------------------------
* Notes : Do not always need to wait for end of transmission
*""FUNC COMMENT END""***************************************************/
void SIO4_Tr( unsigned char *TrBuf, unsigned int TrNum)
{
unsigned long i;
for( i = 0; i < TrNum; i++) {
while(( S4TCNT & TBE) == 0); /* Wait until transmit buffer is empty */
S4TXB_L = *TrBuf++; /* Transfer return data */
}
while(( S4TCNT & TSTAT) != 0); /* Wait for end of transmission */
}
/*""FUNC COMMENT""*******************************************************
* Function name: SIO5_Tr()
*-----------------------------------------------------------------------
* Description : Transmits data from SIO6
*-----------------------------------------------------------------------
* Argument : unsigned char *TrBuf Pointer to transmit data buffer
* : unsigned int TrNum Number of transmit bytes
*-----------------------------------------------------------------------
* Returns : -
*-----------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -