历史上的今天
返回首页

历史上的今天

今天是:2025年01月16日(星期四)

正在发生

2020年01月16日 | MSP430 - G2553之串口操作

2020-01-16 来源:eefocus

#include

 

void delay1s(void) 

{

  int t = 1000;

  while (t--)

    __delay_cycles(1000);    

}

 

#define UART_TXD 0x02                                  // TXD on P1.1 (Timer0_A.OUT0)

                                              

#define UART_TBIT (1000000 / 9600)                     // 9600 Baud, SMCLK = 1MHz

                                                       // Globals for transmit UART communication

unsigned int txData;                                   // UART internal variable for TX

 

void TimerA_UART_tx(unsigned char byte);               // Function prototypes

void TimerA_UART_print(char *string);

 

void main(void)

{

  WDTCTL = WDTPW + WDTHOLD;                            // Stop watchdog timer

  DCOCTL = 0x00;                                       // Set DCOCLK to 1MHz

  BCSCTL1 = CALBC1_1MHZ;

  DCOCTL = CALDCO_1MHZ;

 

  P1OUT = UART_TXD;                                    // Initialize P1.1

  P1SEL = UART_TXD;                                    // Timer function for TXD pin

  P1DIR = UART_TXD;                                    // Set TXD pin to output

                                                       // Timer_A for transmit UART operation

  TA0CCTL0 = OUT;                                      // Set TXD Idle as Mark = '1'

  TA0CCTL1 = SCS + CM1 + CAP;                          // Sync, Neg Edge, Capture

  TA0CTL = TASSEL_2 + MC_2;                            // SMCLK, start in continuous mode

 

  P2DIR |= (BIT3 | BIT4); //Set P1.0 and P1.6 to outputs

  

  _BIS_SR(GIE);                                        // Enable CPU interrupts

 

  while (1) {

    TimerA_UART_print("G2553 TimerA UARTrn");          // Send test message 

    TimerA_UART_print("READY.rn");

    P2OUT ^= 0x18;

    delay1s();

  }

}

 

void TimerA_UART_tx(unsigned char byte)              // Outputs one byte using the Timer_A UART

{              

  while (TACCTL0 & CCIE);                              // Ensure last char got TX'd

 

  TA0CCR0 = TAR;                                       // Current state of TA counter

  TA0CCR0 += UART_TBIT;                                // One bit time till first bit

  txData = byte;                                       // Load transmit data, e.g. 'A'=01000001

  txData |= 0x100;                                     // Add mark stop bit, e.g. 101000001

  txData <<= 1;                                        // Add space start bit, e.g. 1010000010

  TA0CCTL0 = OUTMOD0 + CCIE;                           // Set TXD on, enable counter interrupt

}

 

void TimerA_UART_print(char *string) {                 // Prints a string using the Timer_A UART

  while (*string)

    TimerA_UART_tx(*string++);

}

 

#pragma vector = TIMER0_A0_VECTOR                      // Timer_A UART - Transmit ISR

 

__interrupt void Timer_A0_ISR(void) {

  static unsigned char txBitCnt = 10;

  TA0CCR0 += UART_TBIT;                                // Add Offset to CCRx

 

  if (txBitCnt == 0) {                                 // All bits TXed?

    TA0CCTL0 &= ~CCIE;                                 // All bits TXed, disable interrupt

    txBitCnt = 10;                                     // Re-load bit counter

  }

  else {

    if (txData & 0x01)

      TA0CCTL0 &= ~OUTMOD2;                            // TX Mark '1'

    else

      TA0CCTL0 |= OUTMOD2;                             // TX Space '0'

  }

  txData >>= 1;                                        // Shift right 1 bit (low bits TX'ed first)

  txBitCnt--;

}

推荐阅读

史海拾趣

DATEL Inc公司的发展小趣事

随着技术的不断进步,DATEL Inc.的数据采集产品逐渐在军事领域找到了用武之地。公司接到一项为军方开发高精度数据采集系统的订单。经过深入研究和反复测试,DATEL Inc.成功交付了一套满足军方严苛要求的数据采集系统,为军方提供了准确、可靠的数据支持。这一突破不仅为DATEL Inc.赢得了军方的高度认可,也进一步扩大了公司在军事领域的影响力。

Bergquist Company公司的发展小趣事

在60年代,Bergquist Company作为一家私人拥有的美国公司,在明尼苏达州的一个小城市诞生。创立初期,公司面临着资金短缺、市场竞争激烈等诸多困难。然而,创始人凭借着对导热材料行业的深刻洞察和坚定信念,带领公司一步步走过了创业初期的艰难岁月。他们不断研发新产品,提升产品质量,逐渐在市场上获得了一席之地。

富之光(Fujicon)公司的发展小趣事

富致科技的研发团队最早可以追溯到1997年,当时一群在电子、材料、化工领域拥有深厚背景的专家聚集在一起,共同探索高分子正温度系数PPTC技术的可能性。随着技术的不断成熟,他们于1999年12月正式成立了富致科技股份有限公司,将研发成果转化为实际产品,并迅速在台湾新北市五股工业园区建立了生产基地。这一初期的技术积累和团队组建,为富致科技后续的发展奠定了坚实的基础。

Brainboxes公司的发展小趣事

Brainboxes一直注重与客户建立紧密的合作关系。公司深入了解客户的需求和应用场景,为其提供定制化的解决方案。此外,Brainboxes还积极参与工业连接领域的发展,与多家知名企业建立合作关系,共同推动行业的技术进步和应用创新。这种客户亲密度和工业连接能力使得Brainboxes在市场竞争中占据有利地位。

EMC Component Group公司的发展小趣事

Brainboxes公司成立于1984年,总部位于英国利物浦市。创立之初,公司专注于数据和I/O连接产品的设计和制造。凭借对串行通信技术的深刻理解,Brainboxes迅速在行业内崭露头角。其早期产品,如串口服务器和适配器,因高度可配置和可靠的特性而受到市场的欢迎。随着业务的发展,公司逐渐扩大产品线,涵盖IO模块等多个领域。

大毅科技公司的发展小趣事

为了进一步提升产品质量和竞争力,大毅科技积极申请并获得了多项国际品质认证,如ISO9001、ISO14001、TS16949等。这些认证不仅证明了大毅科技在品质管理方面的卓越能力,还为公司打开了通往国际市场的大门。随着认证的不断增多,大毅科技的产品开始出口到全球各地,与索尼、雅马哈等知名企业建立了长期合作关系。

问答坊 | AI 解惑

现场总线温度变送器原理及应用

一、引言   信息技术的飞速发展,引起了自动化系统结构的变革,逐步形成了以网络集成自动化系统为基础的企业信息系统。现场总线就是顺应这一形势发展起来的新技术。现场总线是应用在生产现场,在微机化测量控制设备(称为现场总线仪表)之间实 ...…

查看全部问答>

怎么用VHDL语言实现1602的字母的直接输入

我想通过FPGA实现与1602的控制 想显示几个英文字母 但是不知道用VHDL语言怎么实现 知道的告诉一声…

查看全部问答>

合格的电子工程师需要掌握的知识和技能

掌握了一下的硬件和软件知识,基本上就可以成为一个合格的电子工程师: 第一部分:硬件知识 一、 数字信号 1、 TTL和带缓冲的TTL信号 2、 RS232和定义 3、 RS485/422(平衡信号) 4、 干接点信号 二、 模拟信号视频 1、 非平衡信号 ...…

查看全部问答>

计数器与定时器

计数器与定时器一、计数概念的引入 从选票的统计谈起:画“正”。这就是计数,生活中计数的例子处处可见。例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等,再举一个工业生产中的例子,线缆行业在电线生产出来之后要计米,也就是测 ...…

查看全部问答>

VS 中的EDIT Control 控件的问题

VS Edit Control 控件的编辑框滚动条动往下滚   随着内容的增加 而自动往下滚动 怎么设置…

查看全部问答>

求助,VxWorks异常

各位大侠,我在VxWorks下写了一个程序,在shell中敲入入口函数运行一段时间,就会出现问题,Shell中显示的错误是这样的: Error while polling for events WTX Error 0x100d2(AGENT_GOPHER_TRUNCATED) 有哪位大侠知道这是什么错误啊?多谢了。…

查看全部问答>

帮我解释两个名词?

最近在学ARM,其中提到模块的四个状态:Enable、Disable、SyncRst、SwRstDisable,请问后两个状态是什么意思啊,怎么理解呢?谢谢哦…

查看全部问答>

ST发布基于STM8的TouchSensingLibrary,支持按键、滑轮

ST刚刚发布基于STM8系列MCU的电容触摸感应固件库,相信基于STM32的库也很快就会提供。下载地址:http://www.st.com/mcu/files/mcu/1234113356.exe================================================================================ &nb ...…

查看全部问答>

基于Verilog计算精度可调的整数除法器的设计

本帖最后由 paulhyde 于 2014-9-15 09:26 编辑 基于Verilog计算精度可调的整数除法器的设计  …

查看全部问答>

线性汇编数组问题

最近刚开始接触,有个问题想请教一下各位大大们我如何在线性汇编中调用C语言中已经定义的数组 例如:int A[3]={0,1,2};B[2][3]={{0,1,2},{0,1,2},{0,1,2}}如果在线性汇编中如何定义数组并赋值(一维、二维、三维),如何调用数组针对结构体如何写成 ...…

查看全部问答>