NEC单片机UART0串口接收时出现溢出错误,接收不到RXB0中数据,请
时间:10-02
整理:3721RD
点击:
单片机是NEC的uPD78F0513,在调试UART0通信时有溢出错误,在未读取RXB0寄存器之前先读取ASIS0,指示帧错误(如果接收完成时未检测到停止位),然后再读取RXB0寄存器,但是读出来的始终是00,我不知道是没有读出来,还是其它的什么原因.
出现帧错误是什么原因,该怎样解决呢?
请帮忙分析指点下,谢谢~
补充:下面是我的代码。
void UART0_Init( void )
{
TXE0 = 0; /* uart0 transmit disable */
RXE0 = 0; /* uart0 receive disable */
STMK0 = 1; /* INTST0 disable */
SRMK0 = 1; /* INTSR0 disable */
STIF0 = 0; /* INTST0 IF clear */
SRIF0 = 0; /* INTSR0 IF clear */
BRGC0 = UART0_BASECLK_4 | UART0_BASECLK_divISION;
ASIM0 = UART0_ASIM0_INITIALVALUE | UART0_DATA_LENGTH_8|UART0_STOP_BIT_1|UART0_PARITY_NONE;
/* INTST0 priority low */
STPR0 = 1;
/* INTSR0 priority low */
SRPR0 = 1;
/* TXD0 pin setting */
P1 |= 0x01;
PM1 &= ~0x01;
/* RXD0 pin setting */
PM1 |= 0x02;
}
void UART0_Start( void )
{
STMK0 = 0; /* INTST0 enable */
SRMK0 = 0; /* INTSR0 enable */
POWER0 = 1; /* uart0 enable */
TXE0 = 1; /* uart0 transmit enable */
RXE0 = 1; /* uart0 receive enable */
}
void main( void )
{
UART0_Init();
UART0_Start();
while (1)
{
;
}
}
__interrupt void MD_INTSR0( void )
{
err_type = ASIS0;
rx_data = RXB0;
if( err_type & 0x07 )
{
CALL_UART0_Error( err_type );
return;
}
else CALL_UART0_Receive( );
}
单片机发送数据能够用串口调试助手接收到,所以没有贴出发送部分的程序代码;
有两种可能会进入INTSR0,第一种是UART0接收结束,第二种是产生接收错误;通过测试,我没有给单片机发送数据的前提下,程序运行后即进入INTSR0,那么就可能是由于产生接收错误而使程序进入INTSR0,并通过进一步测试产生的接收错误是帧错误(如果接收完成时未检测到停止位),我现在就是不知道为什么会产生帧错误,该从哪找到出现这个错误的原因?
请帮帮!
ddddddddddddddddddddddddddddddddddddd
谢谢小编分享学习资料