MSP430F149单片机实现uart数据接收中断

2018-07-11 20:53:31编辑:什么鱼 关键字:MSP430F149  单片机  数据接收  中断

/*****************************************************
程序功能:MCU不停向PC机发送数据,在屏幕上显示0~127对应
          的ASCII字符
------------------------------------------------------
通信格式:N.8.1, 9600
------------------------------------------------------
测试说明:打开串口调试精灵,正确设置通信格式,观察屏幕
******************************************************/


#include  


typedef unsigned char uchar;
typedef unsigned int  uint;


extern void Delays(void);
extern uchar GetChar(void);
extern void PutChar(uchar c);
extern void PutString(uchar *ptr);
extern void InitUART(void);


static uchar pstr = 'A';


/********************主函数**********************/
void main(void)
{
    uchar *tishi = " MCU sends 0~127 to PC and the\
                    \n screen will display their corresponding\
                    \n ASCII code as follows:";
    uchar value = 0;
    //uchar c;
    int i = 10;
    int j = 100;
    
    WDTCTL = WDTPW + WDTHOLD;                 // 关狗
    
    InitUART();
    _EINT();                                  //打开全局中断
    
    while(i--)
    {    
        while (!(IFG1 & UTXIFG0));
        TXBUF0 = value++;
        value &= 0x7f;                        // 保证value的数值小于128
        while (!(IFG1 & UTXIFG0));
        TXBUF0 = '\n';
        Delays();
    }
    
    PutString(tishi);


    while(j--)
    {
        PutChar(pstr);    
        //if(IFG1 & URXIFG0)      //如果收到字符
          //c = RXBUF0;
        //PutChar(c);        
        Delays();   
    }
 
    while(1)
    {
        Delays();            
    }
}


#include  


typedef unsigned char uchar;
typedef unsigned int  uint;


void Delays(void);
uchar GetChar(void);
void PutChar(uchar c);
void PutString(uchar *ptr);
void InitUART(void);




/*******************************************
函数名称:GetChar
功    能:向开发板发送字符
参    数:无
返回值  :char
********************************************/
uchar GetChar(void)
{
      uchar c;
      
      while(URXIFG0 == 1);
      c = RXBUF0;
      
      return c;                       //将收到的字符发送出去 
}


/*******************************************
函数名称:PutChar
功    能:向开发板发送字符
参    数:uchar
返回值  :无
********************************************/
void PutChar(uchar c)
{
      while (!(IFG1 & UTXIFG0));
      TXBUF0 = c;              //将收到的字符发送出去 
}


/*******************************************
函数名称:PutSting
功    能:向PC机发送字符串
参    数:无
返回值  :无
********************************************/
void PutString(uchar *ptr)
{
      while(*ptr != '\0')
      {
            while (!(IFG1 & UTXIFG0));                // TX缓存空闲?
            TXBUF0 = *ptr++;                       // 发送数据
      }
      while (!(IFG1 & UTXIFG0));
      TXBUF0 = '\n';
}
/*******************************************
函数名称:Delays
功    能:延时一会
参    数:无
返回值  :无
********************************************/
void Delays(void)
{
    uchar i=20;
    uint j;


    while(i--)
    {
            j=2000;
            while(j--);
    }
}
/*******************************************
函数名称:InitUART
功    能:初始化UART端口
参    数:无
返回值  :无
********************************************/
void InitUART(void)
{
    P3SEL |= 0x30;                            // P3.4,5 = USART0 TXD/RXD
    ME1 |= URXE0 + UTXE0;                             // Enable USART0 T/RXD
    UCTL0 |= CHAR;                            // 8-bit character
    UTCTL0 |= SSEL0;                          // UCLK = ACLK
    UBR00 = 0x03;                             // 32k/9600 - 3.41
    UBR10 = 0x00;                             //
    UMCTL0 = 0x4A;                            // Modulation
    UCTL0 &= ~SWRST;                          // Initialize USART state machine
    IE1 |= URXIE0;                            // 使能USART0的接收中断
}


#pragma vector=UART0RX_VECTOR
__interrupt void UART0_RXISR(void)
{
    uchar *Pstring = " Receive Data :";
    pstr = RXBUF0;
    PutString(Pstring);
    PutChar(pstr);

}


在串口调试助手显示如下:


关键字:MSP430F149  单片机  数据接收  中断

来源: eefocus 引用地址:http://www.eeworld.com.cn/mcu/2018/ic-news071140248.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:MSP430自毁功能设计
下一篇:MSP430单片机理论复习知识点

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

msp430f149单片机串口C程序

msp430f149单片机简介:MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。msp430f149是基于闪存或 ROM 的超低功耗 MCU,提供 8MIPS,工作电压为 1.8V - 3.6V,具有高达 60KB 的闪存和各种高性能模拟及智能数字外设。超低功耗低至:0.1μA RAM (保持模式) 0.7μA (实时时钟模式) 200μA/MIPS (工作模式) 在 6μs 之内快速从待机模式唤醒器件参数:闪存选项:1KB – 60KB ROM 选项:1KB – 16KB RAM 选项:512B
发表于 2018-07-11 20:55:52

msp430f149波特率设置

TI MSP430系列单片机,usart模块的波特率值设定是通过以下三个寄存器决定的:UxBR0,UxBR1,UxMCTL 波特率=BRCLK/N ,主要是计算出N。BRCLK:时钟源,可以通过寄存器设定何为时钟源; 通过寄存器UCAxCTL1的SSEL两位选择,01:ACLK,02:SMCLKN:波特率产生的分频因子。N=UxBR1+UxBR0+UxMCTL,其中UxBR1+UxBR0为整数部分,UxMCTL为设定小数部分,其中 UxBR1为高位,UxBR0为低位,两者结合起来为一     个16位的字。举例说明:波特率=115200,时钟源=8MHz ,为外部
发表于 2018-05-05 20:38:48

MSP430F149小系统开发板实现RS232串口通信

。******************************************************/#include  <msp430x14x.h>typedef unsigned char uchar;typedef unsigned int  uint;void Delays(void);void PutString(uchar *ptr);/********************主函数**********************/void main(void){    uchar *tishi = " MCU sends 0~127 to PC and the\             
发表于 2018-05-05 20:28:40

基于MSP430F5438A的ESP8266模块STA模式程序调试成功

ESP8266模块STA模式程序,主控芯片为MSP430F5438A,开发环境为IARMSP430F5438A通过串口,以115200的波特率与ESP8266通信,对ESP8266进行配置,主要完成室内WiFi的连接配置,和连接远端服务器的配置,远端服务器采用USR-TCP232-Test软件进行模拟,USR-TCP232-Test软件打开时自动显示你的电脑IP和所用的端口号,将其直接写入程序中的需要连接的IP和端口号即可。配置完成后可以实现以STA方式与远端服务器进行双向数据传输。在串口发送数据时,以字符型(“AT”)发送出去,指令发送之后,马上发送\r\n,表示回车换行,完成一条指令的发送操作。硬件上,在ESP8266模块上电
发表于 2018-05-05 20:27:38

个人总结之MSP430F5510串口通讯(485)

:  UART 模式  脉冲调整的 IRDA 通信  自动波特率检测的 LIN 通信  SPI 模式USCI_Bx 模块支持:  I2C 模式  SPI 模式2. USCI介绍:UART 在异步模式中,USCI_Ax 模块是通过两个外部引脚连接 MSP430 到外部系统,分别是 UCAXRXD和 UCAXTXD。当 UCSYNC位被清零时 
发表于 2018-05-05 20:25:46

51单片机实现LED流水灯(数组方式和位运算方式)

/* 名称:51单片机实现LED流水灯(数组方式和位运算方式)说明:今天又重新开始系统的学习51了,LED就算个开端吧。 要注意两点: 1、sfr和sbit是C语言扩展出来的关键字。其中sfr用于对特殊功能寄存器进行声明,sbit用于对某些特殊功能寄存器的某位进行声明。这里和宏定义很相似,但是不能用宏定义进行替换,对于前者是因为51单片机的寄存器存在于内部空间0x80-0xFF,这空间属于直接寻址,51特殊功能寄存只能直接寻址,不能间接寻址。如果用宏定义的话,在翻译成汇编时就会认为是通过总线访问对应的外部地址了。对于后者,sbit是定义一个标志位,也叫位变量。而类似于#define key1 P3
发表于 2018-07-21 13:08:22

小广播

最新视频课程更多

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved