2837|1

7

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

求一个关于launchpad 2553芯片的USCI 的UART 代码 大神们帮忙啊! [复制链接]

求一个关于launchpad 2553芯片的USCI 的UART 代码 大神们帮忙啊!

最新回复

//****************************************************************************** //   MSP430G2xx3 Demo - USCI_A0, 9600 UART Echo ISR, DCO SMCLK // //   Description: Echo a received character, RX ISR used. Normal mode is LPM0. //   USCI_A0 RX interrupt triggers TX Echo. //   Baud rate divider with 1MHz = 1MHz/9600 = ~104.2 //   ACLK = n/a, MCLK = SMCLK = CALxxx_1MHZ = 1MHz // //                MSP430G2xx3 //             ----------------- //         /|\|              XIN|- //          | |                 | //          --|RST          XOUT|- //            |                 | //            |     P1.2/UCA0TXD|------------> //            |                 | 9600 - 8N1 //            |     P1.1/UCA0RXD| RXed character         //IFG2&=~UCA0TXIFG;     //IFG2&=~UCA0RXIFG;         temp[0]=UCA0TXBUF/100;         temp[1]=UCA0TXBUF%100/10;         temp[2]=UCA0TXBUF%10;         W_1byte(0,0,0x80);         W_1byte(0,1,0x30+temp[0]);             //数字只是占有半个字节         W_1byte(0,1,0x30+temp[1]);         W_1byte(0,1,0x30+temp[2]); }  详情 回复 发表于 2012-8-28 12:37
 
点赞 关注

回复
举报

63

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

一个例程

//******************************************************************************
//   MSP430G2xx3 Demo - USCI_A0, 9600 UART Echo ISR, DCO SMCLK
//
//   Description: Echo a received character, RX ISR used. Normal mode is LPM0.
//   USCI_A0 RX interrupt triggers TX Echo.
//   Baud rate divider with 1MHz = 1MHz/9600 = ~104.2
//   ACLK = n/a, MCLK = SMCLK = CALxxx_1MHZ = 1MHz
//
//                MSP430G2xx3
//             -----------------
//         /|\|              XIN|-
//          | |                 |
//          --|RST          XOUT|-
//            |                 |
//            |     P1.2/UCA0TXD|------------>
//            |                 | 9600 - 8N1
//            |     P1.1/UCA0RXD|<------------
//
//   D. Dang
//   Texas Instruments Inc.
//   February 2011
//   Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
//******************************************************************************
/*波特率寄存器计算公式:要处理三个寄存器
*   Fclk=SMCLK=8M.
     N=Fclk/9600=833.333;
     则UCxBRx=INT(N)=833  (N取整) 。
     又UCxBRx=UCBR0+(UCBR1*256) ,所以UCxBR1=3;UCxBR0=65 ;
     UCBRSx=(N-INT(N)) *8=2  (四舍五入)
*/
#include  "msp430g2553.h"
#include  "12864.h"
unsigned char temp[];
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  BCSCTL1 = CALBC1_12MHZ;                    // Set DCO
  DCOCTL = CALDCO_12MHZ;

  P1SEL |= (BIT1 + BIT2) ;                     // P1.1 = RXD, P1.2=TXD
  P1SEL2 |= (BIT1 + BIT2) ;                     // P1.1 = RXD, P1.2=TXD
  LCD_Init();
  UCA0CTL1 |= UCSSEL_2;                     // SMCLK 不需要加外部晶振就可以的时钟

  UCA0BR0 = 226;                            // 12MHz 9600
  UCA0BR1 = 4;                              // 12MHz 9600

  UCA0MCTL &= ~UCBRS0;                        // Modulation UCBRSx = 1
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**    ^-^USCI复位释放
  IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt^-^中断使能,使能接收中断,同样发送中断也能使能

  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, interrupts enabled
}

//  Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
    while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready?   ^-^如果在发送状态就不会去再继续运行

    if(UCA0RXBUF==0x10)
        UCA0TXBUF=16;                        //给返回的赋值
    else
            UCA0TXBUF=64;
    UCA0TXBUF = UCA0RXBUF;                    // TX -> RXed character
   
    //IFG2&=~UCA0TXIFG;
    //IFG2&=~UCA0RXIFG;
        temp[0]=UCA0TXBUF/100;
        temp[1]=UCA0TXBUF%100/10;
        temp[2]=UCA0TXBUF%10;
        W_1byte(0,0,0x80);
        W_1byte(0,1,0x30+temp[0]);             //数字只是占有半个字节
        W_1byte(0,1,0x30+temp[1]);
        W_1byte(0,1,0x30+temp[2]);
}
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表