打印

NEC单片机串口通信的问题

[复制链接]
4081|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lizexi486|  楼主 | 2010-8-5 11:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lizexi486 于 2010-8-5 11:28 编辑

我用PC向单片机发送一组数据,单片机在接收完数据后,再向PC发回一组数据以表示接收到数据,现在我通过串口助手调试没反应,不知道问题出在哪,不知道串口初始化寄存器设置对不对,请各位帮忙看看啊。


#define UART6_DATA_LENGTH_8 0x04            /* character length of data =8 bits*/
#define UART6_STOP_BIT_1    0x00 /* stop bits = 1 */
#define UART6_PARITY_NONE   0x00 /* transfer without parity */
#define UART6_ASICL6_INITIALVALUE   0x14
#define UART6_FIRST_BIT_LSB          0x02 /* LSB */
#define UART6_FIRST_BIT_MSB         0x00 /* MSB */
#define UART6_TXD6_OUTPUT_NORMAL    0x00 /* TxD6 output normal*/
#define UART6_BASECLK_8             0x07 /* fxclk0=fprs/128*/

#define UART6_TX_BUF_SIZE  5
#define  UART6_RX_BUF_SIZE   5

//--------------------------------------------------------------------------------
//--------------------------------------------------------------------------------
void UART6_Init( void )/*UART6串口初始化*/
{
TXE6 = 0; /* uart6 transmit disable*/
RXE6 = 0; /* uart6 receive disable*/
STMK6 =1; /* INTST6 disable */
SRMK6 =1; /* INTSR6 disable */
SREMK6 =1; /* INTSRE6 disable*/
STIF6 = 0; /* INTST6 IF clear*/
SRIF6 = 0; /* INTSR6 IF clear*/
SREIF6 =0; /* INTSRE6 IF clear*/
ASIM6 = UART6_ERR_INTSRE6|UART6_DATA_LENGTH_8|UART6_STOP_BIT_1|UART6_PARITY_NONE;
       /*8位数据位,1位停止位,无奇偶校验位*/
ASICL6 = UART6_ASICL6_INITIALVALUE |UART6_FIRST_BIT_LSB|UART6_TXD6_OUTPUT_NORMAL;
       /*SBF输出宽度13位,首位LSB,正常模式输出*/
CKSR6 = UART6_BASECLK_8;
       /*128分频*/
BRGC6 = 6;/*使用外部晶振:14.745M,波特率:14.745M/6*2*128近似等于9600*/
/*INTST6 中断高优先级*/
STPR6 = 1;
/*INTSR6 中断高优先级*/
SRPR6 = 1;
/*INTSRE6中断高优先级*/
SREPR6 = 1;
/*TXD6 引脚设为输出*/
P1 |= 0x08;
PM1 &=~0x08;
/*RXD6 引脚设为输入*/
PM1 |=0x10;
}
//-----------------------------------------------------------------------------
void UART6_Start( void )
{
STMK6 = 0; /* INTST6 enable */
SRMK6 = 0; /* INTSR6 enable */
SREMK6 = 0; /* INTSRE6 enable */
POWER6 =1; /* uart6 enable */
TXE6 = 1; /* uart6 transmit enable */
RXE6 = 1; /* uart6 receive enable */
}
//-----------------------------------------------------------------------------
//Uart6_Tx_Buff[]:发送缓冲区
//UART6_TX_CNT:发送计数值
//UART6_TX_BUF_SIZE:发送缓冲区最大容量
//-----------------------------------------------------------------------------
void Uart6_SendData( void )/*发送数据*/
{
    while(UART6_TX_CNT<=UART6_TX_BUF_SIZE-1)
       {
           TXB6=Uart6_Tx_Buff[UART6_TX_CNT];
           while(ASIF6&0x02);//等待发送使能
           UART6_TX_CNT++;
       }
}
//----------------------------------------------------------------------------
//uart6_rx_buffer[]:接收缓冲区
//UART6_RX_BUF_SIZE:接收缓冲区最大接收容量
//uart6_rx_buf_cnt:接收缓冲区计数变量
//
//----------------------------------------------------------------------------
__interrupt void MD_INTSR6( void )/*接收中断*/
{
UCHAR err_type;
UCHAR rx_data;

err_type = ASIS6;
rx_data = RXB6;
if( err_type & 0x07 )/* status check */
{
return;
}
       /* The interrut generated by receive end */
        if(uart6_rx_buf_cnt < UART6_RX_BUF_SIZE)
{
     uart6_rx_buffer[uart6_rx_buf_cnt++] =rx_data;
        }
        if(+uart6_rx_buf_cnt == UART6_RX_BUF_SIZE-1)/*接收满*/
   {
     RX_Finish=1;//置接收完成标志
     uart6_rx_buf_cnt = 0;
   }
}
}
//------------------------------------------------------------------------------

void main(void)
{
     
      UART6_Init();
      UART6_Start();
      while(1)
        {
           if(RX_Finish) //接收完成后开始发送数据回PC
             {
                 Uart6_SendData();
                 RX_Finish=0;//接收标志清零
              }
        }
}

相关帖子

沙发
zljzlj| | 2010-8-5 15:54 | 只看该作者
你只初始化了UART6,关于MCU型号配置,时钟、选项字配置,都没有啊
EI 中断要开的啊!

使用特权

评论回复
板凳
lizexi486|  楼主 | 2010-8-5 17:09 | 只看该作者
这个只是一个产品程序的一部分(调试)),另外的能够正常工作,MCU型号配置,时钟、选项字配置都已设置。

使用特权

评论回复
地板
天南星雨| | 2011-8-16 23:20 | 只看该作者
喂狗了吗??

使用特权

评论回复
5
yewuyi| | 2011-8-17 10:00 | 只看该作者
NEC有的有两个串口,需要注意区分。

使用特权

评论回复
6
xiaotann| | 2011-8-17 11:45 | 只看该作者
xuexi

使用特权

评论回复
7
草履虫| | 2011-8-18 00:27 | 只看该作者
线序没错吗,计算机的端口选对了吗.

使用特权

评论回复
8
leilong666| | 2014-7-11 17:50 | 只看该作者
请问如何对外部中断初始化?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

58

帖子

0

粉丝