代码实现
发送数据:
void Send_Data_To_UART1 (UINT8 c)
{
TI_1 = 0;
if(Checkcode_check_Flag == 2) //判断是不是奇校验
{
var = c;
var0 = 0;
var += var0;
TB8_1 = !P;
SBUF_1 = var;
}
else if(Checkcode_check_Flag == 1) //判断是不是偶校验
{
var = c;
var0 = 0;
var += var0;
TB8_1 = P;
SBUF_1 = var;
}
else if(Checkcode_check_Flag == 0)
{
SBUF_1 = c;
}
while(TI_1==0);
}
串口中断接收:
void SerialPort1_ISR(void) interrupt 15
{
u8 tmpBuf;
if (RI_1==1)
{ /* if reception occur */
clr_RI_1; /* clear reception flag for next reception */
if(Checkcode_check_Flag == 0)
{
Usart_Process();
}
else
{
if( Checkcode_check_Flag == 1) //系统计算是偶检验且设置为偶校验
{
tmpBuf= SBUF_1;
var = tmpBuf;
var0= 0;
var += var0;
if(P == RB8_1)
{
Usart_Process();
}
}
else if(Checkcode_check_Flag == 2) //系统计算是奇检验且设置为奇校验
{
tmpBuf = SBUF_1;
var = tmpBuf;
var0= 0;
var += var0;
if(P != RB8_1)
{
Usart_Process();
}
}
else
{
COM1.B_RX_OK = 0;
}
}
}
if(TI_1==1)
{
clr_TI_1; /* if emission occur */
}
}