MSP430串口收发程序

发布者:梅花居士最新更新时间:2016-08-15 来源: eefocus关键字:MSP430  串口收发 手机看文章 扫描二维码
随时随地手机看文章
/******************************************************

程序功能:接收PC机十六进制数据后回传至PC机

数据格式:十六进制

帧头:FD

帧尾: FE

*******************************************************/

#include

unsigned char RecBuf[255]; //接收数据缓存

unsigned char *SDat;     //指向要发送的数据

unsigned char Rindex;      //接收数据计数

unsigned char Tindex;      //发送数据计数

unsigned char SendLen;     //发送数据长度

/*************************************************

函数名称:ConfigUart0

功    能:配置UART0,使用SMCLK,N.8.1, 9600

          无校验,8个数据位,1个停止位,波特率9600

参    数:无

返回值 :无

**************************************************/

void ConfigUart0()

{

    P3SEL |= 0x30;                            // 选择P3.4和P3.5做UART通信端口

    ME1 |= UTXE0 + URXE0;                     // 使能USART0的发送和接受

    UCTL0 |= CHAR;                            // 选择8位字符

   

    UTCTL0 |= SSEL1;                          // UCLK = SMCLK

    UBR00 = 0xD0;                             // 波特率9600

    UBR10 = 0x00;                             //

    UMCTL0 = 0x40;                            // Modulation

    UCTL0 &= ~SWRST;                          // 初始化UART状态机

    IE1 |= URXIE0 + UTXIE0;                   // 使能USART0的收发中断   

}

/********************主函数********************/

void main(void)

{

    unsigned int i;

   

    WDTCTL = WDTPW + WDTHOLD;     // 关闭看门狗

    BCSCTL1 &= ~XT2OFF;           //使TX2有效,TX2上电默认是关闭的

    do

    {

      IFG1 &= ~OFIFG;             //清除振荡器失效标志

      for(i=0xff;i>0;i--);        //延时,待稳定

    }

    while((IFG1 & OFIFG)!=0);     //若振荡器失效标志有效

    BCSCTL2 |= SELM1;             //使MCLK=XT2

    BCSCTL2 |= SELS+DIVS1;        //SMCLK=XT2,4分频,即2MHZ

   

    BoardConfig(0xb8);            // 关闭数码管、流水灯和电平转换

    ConfigUart0();                //配置UART0

    _EINT();                      //打开全局中断

      

    while(1)

    {

        LPM1;

    }

}

/*******************************************

函数名称:UART0_RXISR

功    能:UART0的接收中断服务函数,在这里唤醒

          CPU,使它退出低功耗模式

参    数:无

返回值 :无

********************************************/

#pragma vector = UART0RX_VECTOR

__interrupt void UART0_RXISR(void)

{

    RecBuf[Rindex++] = RXBUF0;

    if(RecBuf[Rindex-1]==0xfe) //接收完毕

    {

        SendLen = Rindex;

        Rindex=0;

        if(RecBuf[0]==0xfd) //帧头正确

        {

            LPM1_EXIT;

            SDat = RecBuf;

            IFG1 |= UTXIFG0; // 设置中断标志,进入发送中断程序

        }

    }

}

/*******************************************

函数名称:UART0_TXISR

功    能:UART0的发送中断服务函数

参    数:无

返回值 :无

********************************************/

#pragma vector = UART0TX_VECTOR

__interrupt void UART0_TXISR(void)

{

      if(Tindex < SendLen)

      {

          TXBUF0 = *(SDat+Tindex);

          Tindex++;

      }

      else

      {

          Tindex=0;

          //LPM1;

      }

}

使用于MSP430F149

关键字:MSP430  串口收发 引用地址:MSP430串口收发程序

上一篇:利用MSP430调采集脉冲程序(疑问+解答)
下一篇:MSP430读写flash程序

推荐阅读最新更新时间:2024-03-16 15:05

基于MSP430F149的多功能测试仪表的设计
随着社会的发展,电子仪表的普及,原先大体积、高功耗功能单一的仪表已经逐步向手持低功耗多用途仪表发展,而TI就是低功耗芯片设计制造的佼佼者,该产品就是一款基于TI的MSP430单片机集低功耗、低成本、高精度、多功能、超便携于一身的新型数字仪表。它不仅集成了一般的数字万用表的基本功能,还具有简单的图形显示功能,能够对较低频率的波形进行时时测量及波形显示功能,方便工程师在实际中的使用,市场前景十分乐观。 1 结构设计 该系统以美国TI公司的低功耗16位单片机MSP430F149为核心,外部由分压网络、电压采集网络、恒流源测电阻网络、测频网络、液晶和USB上位机通信网络组成。核心A/D选择MSP430单片机内部集成的高精度逐次逼
[单片机]
浅谈MSP430单片机的8大输出方式
1 输出模式0 输出模式:输出信号OUTx由每个捕获/比较模块的控制寄存器CCTLx中的OUTx位定义,并在写入该寄存器后立即更新。最终位OUTx直通。 2 输出模式1 置位模式:输出信号在TAR等于CCRx时置位,并保持置位到定时器复位或选择另一种输出模式为止。 3 输出模式2 PWM翻转/复位模式:输出在TAR的值等于CCRx时翻转,当TAR的值等于CCR0时复位。 4 输出模式3 PWM置位/复位模式:输出在TAR的值等于CCRx时置位,当TAR的值等于CCR0时复位。 5 输出模式4 翻转模式:输出电平在TAR的值等于CCRx时翻转,输出周期是定时器周期的2倍。 6 输出模式5 复位模式:输出在TAR的值等于CCRx
[单片机]
浅谈<font color='red'>MSP430</font>单片机的8大输出方式
【stm8s003系列例程】2 基本串口收发(中断接收方式)
对于串口而言,最基本的就是 收发。 因为本例程系列及我个人的风格,我总是只让例程的功能——同时也就纯粹到 只展示这个功能的最小配置和最少代码。 而对我而言,串口 收发(1字节——因此也就不涉及另外 对 收发的缓冲处理 等 实质上 和 串口基本功能无关的 代码)。 当然大多数时候,我接收都是中断方式,而发送则无此必要——但是,我知道,在对速度有要求或者需要并行处理的场所,还需要 发送中断,但这个比较少用,因此不考虑。 下面是代码。 在贴以前,我讲一些对相关库,代码的改动。 首先,stm8s这个库,它的stm8s_uart1.c里,在计算波特率时,它需要获取当前时钟频率 它采用的是 CLK_GetClockFreq()
[单片机]
MSP430F5438A+TM1650四位数码管显示+16位AD转换器ADS1110
MSP430F5438A读取16位AD转换器ADS1110的采集值,通过TM1650串行驱动四位数码管进行显示。 开发环境采用IAR,数码管采用共阴极四位数码管,TM1650位串行控制方式,只需要2个IO口既可以实现 数据的显示,可以极大的减少IO口的占用。 系统电路图、TM1650数码管模块和程序如下所示。 /////////////////////////////主函数////////////////////////////////////// void main() { // uint j,p; WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 Init_Sys(); //初
[单片机]
MSP430单片机A/D过采样率的问题
对于MSP430单片机中的A/D过采样率的理解一直比较模糊,今天认真的研究了一下,终于弄清楚了, 现在写出来,欢迎大家前来拍砖。 ================================================= MSP430单片机中有很多A/D采样模块使用的是具有∑-△结构的SD16或者SD16_A模块,该模块中具有过 采样率(OSR,Oversampling ratio)的设置寄存器。这个寄存器不同的设置值在A/D采样的过程中到 底会产生怎样的影响呢? 在TI的手册中我们可以知道,OSR是SINC3梳状滤波器的一个参数,首先,来学习一下梳状滤波器。 1、 梳状滤波器的定义:是由许多按一定频率间隔相
[单片机]
Msp430定时器的介绍及其基本应用
Msp430单片机一共有5种类型的定时器。 看门狗定时器(WDT)、基本定时器(Basic Timer1)、8位定时器/计数器(8-bit Timer/Counter)、定时器A(Timer_A)和定时器B(Timer_B)。但是这些模块不是所有msp430型号都具有的功能。 1、看门狗定时器(WDT) 学过电子的人可能都知道,看门狗的主要功能就是当程序发生故障时能使受控系统重新启动。 msp430中它是一个16位的定时器,有看门狗和定时器两种模式。 2、基本定时器(Basic Timer1) 基本定时器是msp430x3xx和msp430F4xx系列器件中的模块,通常向其他外围提供低频控制信号。它可以只两
[单片机]
MSP430系列单片机的主要功能部件有哪些?
1 CPU:MSP430系列单片机的CPU和通用微处理器基本相同,只是在设计上采用了面向控制的结构和指令系统。MSP430的内核CPU结构是按照精简指令集和高透明的宗旨而设计的,使用的指令有硬件执行的内核指令和基于现有硬件结构的仿真指令。这样可以提高指令执行速度和效率,增强了MSP430的实时处理能力。 2 存储器:存储程序、数据以及外围模块的运行控制信息。有程序存储器和数据存储器。对程序存储器访问总是以字形式取得代码,而对数据可以用字或字节方式访问。其中MSP430各系列单片机的程序存储器有ROM、OTP、EPROM和FLASH型。 3 外围模块:经过MAB、MDB、中断服务及请求线与CPU相连。MSP430不同系列产品所包
[单片机]
基于MSP430的石油井下压力测试系统的设计
1 引言 压力数据在油田开采过程中是一项极重要的资料。而这其中的射孔工艺是关键环节,其对高质量打开油气层,提高油气井产能都有重要影响。射孔是打开油气层让地层流体流入井内的主要完井工序。测取射孔瞬间动态压力参数具有重要意义;确定每次射孔的施工效果;结合其他测试参数评价地质效果:研究射孔工艺机理,为我国射孔理论水平的发展创造有利条件。该参数的测取也是研究油气层特征,掌握油气层动态。检查地面采油工艺流程的重要手段。为此,必须借助于各种精密的压力测量仪表。以获得精确的压力数据。 2 测试系统设计 2.1 存储测试原理简介 存储测试系统是用以完成存储测试的物理系统,可工作在高温、高压、强冲击振动、高过载等恶劣环境下,自动完成被测信
[测试测量]
基于<font color='red'>MSP430</font>的石油井下压力测试系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved