历史上的今天
返回首页

历史上的今天

今天是:2025年03月11日(星期二)

正在发生

2020年03月11日 | MSP430F149单片机实现uart数据接收中断

2020-03-11 来源:eefocus

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

程序功能: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 != '')

      {

            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);

}


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

推荐阅读

史海拾趣

达方(DARFON)公司的发展小趣事

进入21世纪后,达方电子在技术研发上取得了重大突破,成功研发出多款具有竞争力的新产品。同时,公司积极开拓国际市场,通过与国际知名品牌的合作,将产品销往全球各地。这一阶段的成功,不仅使达方电子的营收大幅增长,也进一步提升了公司的品牌影响力。

Datatronic公司的发展小趣事

随着市场竞争的加剧,Datatronic公司意识到单纯依靠技术创新已不足以保持竞争优势。于是,公司开始调整市场策略,注重与客户的沟通和合作。通过深入了解客户需求,公司能够提供更符合市场需求的定制化产品和服务。同时,公司还加强了与上下游企业的合作,形成了稳定的供应链体系。

Floeth Electronic Ltd公司的发展小趣事

Datatronic公司自创立之初,就致力于电子技术的创新。在早期,公司开发了一款具有革命性的数据处理器,该处理器以其高效的运算能力和稳定性迅速在市场上获得了认可。通过不断的技术迭代和优化,Datatronic公司逐渐在数据处理领域树立了技术领先的地位,吸引了大量客户。

Antenna Factor公司的发展小趣事

随着无线通信技术的快速发展,Antenna Factor公司始终保持敏锐的洞察力,不断推出创新产品。他们研发的智能天线系统,能够根据信号环境的变化自动调整参数,显著提高通信质量和稳定性。这一技术创新在市场上引起了广泛的关注,使得Antenna Factor公司在行业中树立了技术领先的形象。

FREESCALE (NXP)公司的发展小趣事

Antenna Factor公司始终注重产品质量和客户体验。他们建立了严格的质量管理体系,从原材料采购到产品生产的每一个环节都进行严格的把控。同时,公司还加强了对售后服务的管理和改进,确保客户在使用过程中能够得到及时、有效的支持。这些举措使得Antenna Factor公司的产品质量和品牌形象得到了显著提升。

Anaheim Automation公司的发展小趣事

随着公司技术的不断进步和产品质量的提升,AMOTECH在1996年被政府通讯部评为“光明前途企业”。这是对公司技术实力和市场潜力的认可,也为公司的后续发展提供了有力支持。同年,公司还获得了ISO9000认证,这标志着公司的质量管理体系达到了国际标准,为公司进一步拓展国际市场打下了坚实基础。

问答坊 | AI 解惑

薄膜电容

电容器依着介质的不同,它的种类很多,例如:电解质电容、纸质电容、薄膜电容、陶瓷电容、云母电容、空气电容等。但是在音响器材中使用最频繁的,当属电解电容器和薄膜(Film)电容器。电解电容大多被使用在需要电容量很大的地方,例如主电源部份的滤 ...…

查看全部问答>

脑电图基础知识幻灯片

这里面主要介绍了脑电图的基本知识,还有各种脑电图波形,正常脑电图的诊断标准, 异常脑电图的诊断标准,一些专有名词等。有兴趣的朋友可以下来看看!! [ 本帖最后由 charlie1982 于 2009-12-31 15:34 编辑 ]…

查看全部问答>

基于mega8的简易循迹小车

放假啦,回到家了。上学期遗留了一些问题。 上学期做了一个基于mega8的简易循迹小车,循黑线行驶。车模是淘宝里购买的,控制电路是自己做的。做出来的效果很不好,虽然能沿黑线行驶,但是摇头晃脑的。 大概原理: 采用4对红外对管识别黑线,得到 ...…

查看全部问答>

变压器设计大师 3.0

变压器是常用的一种器件,本软件可以帮助您快速的计算出变压器的各项参数。同时还附带大量的资料以便您在设计变压器时查询。 与同类软件相比具有许多优点: 1、支持初级绕组多种输入电压。 2、支持次级绕组多绕组、多种电压输出。 3、支持 ...…

查看全部问答>

大家帮忙看一下这个偏移量对不对啊?

本帖最后由 paulhyde 于 2014-9-15 09:20 编辑 一个bmp图片由3大部分组成:BITMAPFILEHEADER结构体,BITMAPINFO结构体,DIB数据区。 Private Type BITMAPFILEHEADER // 14 bytes bfType As Integer bfSize As Long bfReserved1 As I ...…

查看全部问答>

电梯控制器

想用VHDL语言编一个二层的电梯控制器。要求:一,二极管指示灯指示上升和下降。二,用数码管指示所在层数。…

查看全部问答>

windows XP 下读写4GB memory

如何在windows XP 下读写4GB memory?有用过WinIO.dll,但只能读写0X000FFFFF以下的物理内在!Memaccess是可以,但要注册,不是免费的! 请教哪位高人有方法可以读写4GB memory,特别是在0XFF000000以上的物理内存。有可用的DLL也行。在网上找了很 ...…

查看全部问答>

驱动是不是都指pc机上的编程?

毕业设计要做usb驱动 但是这个驱动是指的什么呢? pc机上的编程 还是下位机上的编程?…

查看全部问答>

高薪诚聘嵌入式人才(北京)

招聘职位:渠道拓展 职位描述 工作职责1、负责院校渠道的拓展和建设,洽谈院校合作业务,最终实现教育产品(课程)的销售;2、维护渠道关系并根据情况进行需求分析达成更多合作计划;3、调查分析渠道市场状况,配合公司制定相应的渠道销售策略和 ...…

查看全部问答>

版主,给我们解释一下ifdefinedSTM32F10X_LD_VL

                                 解释一下这些玩意那里定义的,有何用途?那种型号该用那个定义??…

查看全部问答>