打印
[DemoCode下载]

ML51的串口0发送接收中断

[复制链接]
687|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiekou001|  楼主 | 2019-11-29 21:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2019 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

//***********************************************************************************************************
//  Website: http://www.nuvoton.com
//  E-Mail : MicroC-8bit@nuvoton.com
//  Date   : Jan/21/2019
//***********************************************************************************************************

/***********************************************************************************************************
//  File Function: ML51 UART0 receive and transmit loop test
/***********************************************************************************************************/
#include "ML51.H"

unsigned char uart_receive_data;
bit receiveFlag,bufOverFlag;

/*************************************************************
//  UART interrupt subroutine.
/**************************************************************/
void Serial_ISR (void) interrupt 4
{
    if (RI)
    {   
      receiveFlag = 1;
      uart_receive_data = SBUF;
      clr_SCON_RI;                                         // Clear RI (Receive Interrupt).
    }
    if (TI)
    {      
        clr_SCON_TI;                                       // Clear TI (Transmit Interrupt).
    }

}


void main(void)
{
  
/* Initial UART0 */
    MFP_P31_UART0_TXD;
    P31_PUSHPULL_MODE;
    MFP_P30_UART0_RXD;
    P30_INPUT_MODE;
    UART_Open(24000000,UART0_Timer3,115200);                 /*condition is: Fsys, UART0 or UART1 , Baudrate  */
    ENABLE_UART0_PRINTF;

    ENABLE_UART0_INTERRUPT;                                  /* Enable UART0 interrupt */
    ENABLE_GLOBAL_INTERRUPT;                                 /* Global interrupt enable */
  
/* while receive data from RXD, send this data to TXD */
  while(1)
  {
    if (receiveFlag)
    {
      receiveFlag = 0;
      clr_IE_ES;
      UART_Send_Data(UART0,uart_receive_data);
      set_IE_ES;
    }
  }
}


使用特权

评论回复
沙发
天灵灵地灵灵| | 2019-11-30 18:10 | 只看该作者
代码很熟悉,先启用外设的中断,然后启用全局中断。

使用特权

评论回复
板凳
新塘初级用户| | 2020-7-31 09:39 | 只看该作者
楼主,我想问一下,我在使用例程的时候,把main函数里的if(receiveFlag)条件删了,想让他无条件执行,为什么反而不执行了

使用特权

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

本版积分规则

134

主题

1347

帖子

2

粉丝