MSP430另一种UART实现

发布者:乐基儿vos最新更新时间:2017-01-03 来源: eefocus关键字:MSP430  UART 手机看文章 扫描二维码
随时随地手机看文章

  1 #include "msp430g2553.h"

  2 

  3 typedef unsigned char uchar;

  4 typedef unsigned int  uint;

  5 

  6 #define LED     BIT0

  7 #define TXD     BIT1                            // TXD on P1.1

  8 #define RXD    BIT2                             // RXD on P1.2

  9 #define POUT    P1OUT

 10 

 11 #define BITTIME_1b       13*4    //1bit宽度

 12 #define BITTIME_1b5      13*6    //1.5bit宽度

 13 

 14 uchar   bitcnt;

 15 uint    uart_buf;

 16 int    Send_flag;

 17 

 18 uchar  *str=" Hello EEWorld!  \r";

 19 

 20 void FaultRoutine(void)

 21  {

 22    while(1);                                 // 异常挂起

 23  }

 24 

 25 void ConfigClocks(void)

 26  {

 27  if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)

 28    FaultRoutine();                            // If calibration data is erased

 29                                              // run FaultRoutine()

 30   BCSCTL1 = CALBC1_1MHZ;                     // Set range

 31   DCOCTL = CALDCO_1MHZ;                      // Set DCO step + modulation

 32   BCSCTL3 |= LFXT1S_2;                      // LFXT1 = VLO

 33   IFG1 &= ~OFIFG;                           // Clear OSCFault flag

 34   BCSCTL2 = 0;                               // MCLK = DCO = SMCLK

 35  }

 36 

 37 void ConfigPins(void)

 38  {

 39   P1DIR |= TXD+LED;

 40   P1DIR &= ~RXD;                    // P1.3 input, other outputs

 41   P1OUT |= TXD;                                  // clear output pins

 42 

 43  }

 44 

 45 

 46 //发送一个字节

 47 void send_char(uchar tchar)

 48 {

 49   TACTL = TACLR + TASSEL_2 + ID_3;              //选择SMCLK时钟;清TAR

 50   CCR0 = BITTIME_1b5;                    //crr0定时间隔为1bit时间宽度

 51   CCTL0 |= CCIE;                        //打开CCR0中断

 52   bitcnt = 10;                           //待发送的位数

 53   uart_buf = 0x0100;                     //8+N+1

 54   uart_buf |= tchar;                  //stop bit and start bit;

 55   uart_buf <<=1;

 56   Send_flag = 0;

 57   TACTL |= MC_1;                        //Start TA, UP mode.

 58   _BIS_SR(GIE);

 59   while(!Send_flag);                   //wait until send complete

 60   Send_flag = 1;

 61 }

 62 

 63 //发送一个字符串

 64 void send_String(uchar *tstr)

 65 {

 66   while(*tstr)

 67     send_char(*tstr++);

 68 }

 69 

 70 

 71 void send_IRQ(void)

 72 {

 73   if(bitcnt>0)

 74   {

 75     if(uart_buf & 0x01)

 76       POUT |= TXD;

 77     else

 78       POUT &= ~TXD;

 79     uart_buf >>= 1;

 80     bitcnt--;

 81   }

 82   else

 83   {

 84     TACTL &= ~MC_3;                    //Close the TA when a Byte send over.   ??

 85     CCTL0 &= ~CCIE;                    //关闭CCR0中断

 86     Send_flag = 1;

 87   }

 88 

 89 }

 90 

 91 

 92 

 93 void main( void )

 94 {

 95   // Stop watchdog timer to prevent time out reset

 96   uint i;

 97 

 98 

 99 

100   WDTCTL = WDTPW + WDTHOLD;

101   ConfigClocks();

102   ConfigPins();

103 

104 

105   while(1)

106   {

107    send_String(str);

108 

109    for(i=50000;i>0;i--);

110    for(i=50000;i>0;i--);

111    for(i=50000;i>0;i--);

112    for(i=50000;i>0;i--);

113    POUT ^= LED; // 翻转LED

114   }

115 }

116 

117 // Timer A0 interrupt service routine

118 #pragma vector=TIMER0_A0_VECTOR

119 __interrupt void Timer_A (void)

120 {

121 

122 

123    send_IRQ();

124 }


关键字:MSP430  UART 引用地址:MSP430另一种UART实现

上一篇:MSP430单片机ADC模数转换操作
下一篇:Launchpad的温度测量及串口发送

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

MSP430 DMA控制器的特性和模块功能
特性: 1 l数据传送不需要CPU介入,完全由DMA控制器自行管理。 2 在整个地址空间范围内传输数据,块方式传输可达65536字节 3 能够提高片内外设数据吞吐能力,实现高速传输,每个字或者字节的传输仅需要2个MCLK 4 减少系统功耗,即使在片内外设进行数据输入或输出时,CPU也可以处于超低功耗模式而不需唤醒 5 字节和字数据可以混合传送:DMA传输可以是字节到字节、字到字、字节到字或者字到字节。当字到字节传输时,只有字中较低字节能够传输,当从字节到字传输时,传输到字的低字节,高字节被自动清零 6 四种传输寻址模式:固定地址到固定地址、固定地址到块地址、块地址到固定地址以及块地址到块地址 7 触发方式灵活:边沿或
[单片机]
msp430程序跑飞相关总结
=============================================================================================================================== 1.中断或主函数中有死循环,现象是程序停在某处。 2.堆栈溢出。现象是程序跑飞。 解决办法: A.看中断有没有用 _EINT(),引起中断嵌套. B.Project--Options--General Options---Stack/Heap 将Stack size设置大一些。 =================================================
[单片机]
采用MSP430F413单片机进行电子纸驱动低功耗的设计
1 引言 电子纸(ePaper)是新一代的显示装置,其对比度超高,超低功耗,超薄,而且可以任意弯曲折叠,柔韧性良好。MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗的混合信号处理器(Mixed Signal Processor)。称之为混合信号处理器,主要是由于其针对实际应用需求,把许多模拟电路、数字电路和微处理器集成在一个芯片上,以提供“单片”解决方案。这里介绍新一代显示装置电子纸的硬件驱动与设计,介绍主控制器MSP430微处理器的主要功能,实现电子纸驱动配置的低功耗.给出电子纸显示模块相应的功能子程序。利用其内置的LCDRAM作为显示缓存,I/O模拟时序,充分利用MCU的资源并提高程序的可
[单片机]
采用<font color='red'>MSP430</font>F413单片机进行电子纸驱动低功耗的设计
MSP430开发环境配置
一、安装IAR for MSP430 压缩包含有: EW430-EV-web-5101.exe IAR EW for MSP430安装指南和使用说明.pdf IAR kegen PartA.exe 下载地址: 链接:https://pan.baidu.com/s/1QlWFmNnWpRbFEHk2gsBCbA 提取码:qcsg 最近因为电脑系统故障重新安装iar,发现安装第一遍不会成功,卸载iar后再安装一遍,发现安装成功------ 所以要,安装后卸载,在安装 (仅供参考,有的一遍就可以成功,总之安装上这个软件,成功激活,可以编译文件就可以)
[单片机]
<font color='red'>MSP430</font>开发环境配置
MSP430电池电压采集Proteus仿真程序
单片机源程序如下: #include MSP430x24x.h #define uchar unsigned char #define uint unsigned int uchar const table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, //共阴数码管段选码表,无小数点 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; uchar table_volt = {0}; //数组,存储电压值 uchar Index; //变量 //*******延时函数*******
[单片机]
<font color='red'>MSP430</font>电池电压采集Proteus仿真程序
基于MSP430F449的电子血压计
  随着生活水平的不断提高以及城市老龄化比例的提高,医疗电子设备的家庭化逐渐成为了趋势。其中家用电子血压计就是典型的家庭医疗检测设备之一。目前血压计大致上可分为两种:一是水银式血压计,其优点为数值稳定,其缺点为无法一个人自行操作,必须专业医护人员操作,且肉眼观察误差极大,主观性强,体积较大不易携带。二是电子式血压计,其优点为:使用简易,可一人独自操作;测量值便于记录,体积轻巧便于携带。电子式血压计具备了诸多优点,越来越受到普通家庭的欢迎。本文介绍了以MSP430F449为控制核心,辅以BP01型压力传感器与MCU之间模拟信号处理电路以及LCD显示、语音提示,实现家用电子血压计的设计。    血压测量原理   血压的概念就是血
[医疗电子]
基于<font color='red'>MSP430</font>F449的电子血压计
MSP430F169(二)——UART中断
目录 1. UART中断工作的机制 UART只有一个发送中断向量和一个接收中断向量,通过判断中断向量的标志来控制数据的收发 1.1 发送机制 当用户想发送数据时,UxIFG产生一个中断,表明UxTXBUF已经准备好接收数据。当UxTXBUF接收字符后或中断被执行,URXIFG将会复位。 SWRST = 1或PUC会置位UxIFG (SWRST: 系统复位) SWRST = 1或PUC会复位UxIE 1.2接收机制 UxRXBUF每次接收一个字符并加载时,URXIFGx会产生一个中断标记 UxRXBUF被读取时或中断被执行时,URXIFG被自动复位 当PUC或SWRST = 1时UxRXIE 复位 建议接收中断函数的代码要精
[单片机]
MSP430程序设计
1、#define ME1_ (0x0004) DEFC( ME1 , ME1_) me1关联端口0x0004 defc的c是字节的意思,也就是me1 就是地址0004处的一个字节 2、#define FCTL1_ (0x0128) DEFW( FCTL1 , FCTL1_) 其功能是从指定地址开始,定义若干个16位数据 使用处理器专用扩展的保持可可移植性的 #pragma 伪指令 一、新增数据类型: 1、Sfrb----字节类型的特殊功能寄存器或外围模块
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

更多精选电路图
更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved