历史上的今天
返回首页

历史上的今天

今天是:2025年02月12日(星期三)

正在发生

2020年02月12日 | MSP430按键控制串口发送数据

2020-02-12 来源:eefocus

#include

//MSP430G2553  - 使用USCI_A0,Up Mode, DCO SMCLK

//

//  介绍: 该程序利用USCI_A0来与计算机通信 通过接在P1.3口的按键来实现按一次发送一个数据

//  波特率9600,数据格式8N1

//

//  ACLK = 32768, SMCLK = 32768  MCLK =  DCO-16M

//

//               MSP430G2553

//            -----------------

//        /||              XIN|-

//         | |                 |

//         --|RST          XOUT|-

//           |                 |

//           |         P1.0/TA1|-->led

//

//  使用 MSP430 LaunchPad , MSP430G2553芯片

//CCS5.2编译通过,P1.3内部上拉一定要开启,不然会没反应

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


void CLK_Init(void);

void USCIA0_Init(void);

void GPIO_Init(void);

void putchar(unsigned char tx_data);

void putstr(char *s);



unsigned char RX_DATA;

char *string1="Hello430!";

char string2[]="iamzhanhaibo!n";    //n是换行符



void main(void)

{

    WDTCTL = WDTPW + WDTHOLD;        // Stop WDT

    CLK_Init();

    GPIO_Init();

    USCIA0_Init();

    //_EINT();//开总中断

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

}


// Echo back RXed character, confirm TX buffer is ready first

#pragma vector=PORT1_VECTOR

__interrupt void P1_3ISR(void)

{

    P1IFG &= ~BIT3;//中断标志位清零

    P1OUT ^= BIT6;//P1.6状态翻转

    IE2 &= ~UCA0RXIE;   //发送时先关闭接收中断,不接收

    while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready? 等待TX buffer为空

    UCA0TXBUF = 0x08;                    // TX -> RXed character  发送字符c

    IE2 |= UCA0RXIE;    //发送完了打开接收中断

}


/*#pragma vector=USCIAB0RX_VECTOR

__interrupt void USCI0RX_ISR(void)

{

    while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready? 等待TX buffer为空

    UCA0TXBUF = UCA0RXBUF;                    // TX -> RXed character  发送接收到的数据

    RX_DATA=UCA0RXBUF;

    if(RX_DATA&0x01){

        P1OUT |= BIT0;

        putstr(string1);

        putstr(string2);

    }

    else

        P1OUT &= ~BIT0;

}*/


void putchar(unsigned char tx_data)    //发送字符函数

{

    while (!(IFG2&UCA0TXIFG));                // USCI_A0 TX buffer ready? 等待TX buffer为空

    UCA0TXBUF = tx_data;                    // TX -> RXed character  发送字符c

}


void putstr(char *s)   //发送字符串函数

{

    IE2 &= ~UCA0RXIE;   //发送时先关闭接收中断,不接收

    //如果没有发完,就继续循环发送

    while((*s)!=''){

        putchar(*s);

        s++;

    }

    IE2 |= UCA0RXIE;    //发送完了打开接收中断

}


void GPIO_Init(void)

{

    P1DIR = BIT0 + BIT6;    //p1.0,p1.6外接LED为输出状态

    P1OUT &= ~(BIT0 + BIT6);


    P1SEL  = BIT1 + BIT2 ;           // P1.1 = RXD, P1.2=TXD

    P1SEL2 = BIT1 + BIT2;             //第二外围模式选择


    P1REN |= BIT3; //pull up

    P1OUT |= BIT3;

    P1IE  |= BIT3;       //P1.3中断使能

    P1IES |= BIT3;       //P1.3下降沿有效

    P1IFG &= ~BIT3;      //P1.3中断标志位清零

}


void CLK_Init(void)

{

    BCSCTL3 |= LFXT1S_0;

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

        while(1);

    }

    BCSCTL1 = CALBC1_1MHZ;          // Set DCO 为1MHz

    DCOCTL = CALDCO_1MHZ;

}


void USCIA0_Init(void)

{

    UCA0CTL1 |= UCSSEL_1;      //ACLK

    UCA0BR0 = 3;                              // ACLK 32768Hz 9600   32768Hz/9600 = 3.41

    UCA0BR1 = 0;                              // 32768Hz 9600

    UCA0MCTL = UCBRS1 + UCBRS0;               // Modulation UCBRSx = 3  模式控制寄存器

    UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**  初始化释放,可以操作

    IE2 |= UCA0RXIE;                          // Enable USCI_A0 RX interrupt  接收中断使能

}

推荐阅读

史海拾趣

ENSIGN公司的发展小趣事

ENSIGN不仅关注传统电子行业的发展,还积极探索新的业务领域。最近,ENSIGN集团宣布收购位于亚利桑那州的医疗保健园区River Park Post Acute和Elmwood Senior Living,以及其他七家公司。这一收购标志着ENSIGN正逐步向医疗保健领域进军,寻求多元化的发展机会。

Ecera Comtek Corp公司的发展小趣事

Ecera Comtek Corp公司成立于XX世纪初,由几位热衷于电子通信技术的工程师共同创立。初创时期,公司面临着资金短缺、技术挑战和市场竞争等多重压力。然而,创始人们凭借对技术的热情和执着,不断研发创新产品,逐渐在行业内树立了口碑。他们经常通宵达旦地工作,试验新的设计方案,努力提升产品的性能和稳定性。经过数年的努力,Ecera Comtek Corp公司终于推出了首款具有竞争力的无线通信设备,为公司的发展奠定了坚实的基础。

Cosel公司的发展小趣事

1967年,Cosel公司的前身——木村电气销售(个人独资)在日本正式成立,标志着Cosel公司创业之路的开始。创始人凭借对电子行业的敏锐洞察和深厚技术背景,带领公司逐步在竞争激烈的市场中站稳脚跟。随着业务的不断拓展,1969年,公司撤消了木村电气销售,并成立了ELCO株式会社,这一变革为公司后续的发展奠定了坚实基础。

EMLSI公司的发展小趣事

随着电子行业的快速发展,市场竞争也日益激烈。为了保持领先地位,EMLSI公司开始实施全球化战略。公司先后在亚洲、欧洲和北美等地建立了生产基地和研发中心,与当地企业建立了紧密的合作关系。这一战略不仅让EMLSI能够更快地了解市场需求和技术趋势,还为公司带来了更多的商业机会和合作伙伴。

All Sensors公司的发展小趣事

随着电子行业的快速发展和市场竞争的加剧,All Sensors面临着越来越多的挑战。然而,公司始终保持着敏锐的市场洞察力和创新精神。通过与客户紧密合作,仔细聆听客户需求,All Sensors不断开发出适应市场变化的新产品和技术。同时,公司还注重提升产品质量和服务水平,赢得了客户的广泛认可和信赖。

这些故事只是All Sensors在电子行业发展历程中的一部分缩影。作为一家全球领先的传感器技术领军企业,All Sensors将继续秉承创新精神,不断推动电子行业的发展和进步。

Gumstix公司的发展小趣事
检查压敏元件是否老化或受到污染,必要时更换新的压敏元件。同时,也可以考虑调整电路参数以提高灵敏度。

问答坊 | AI 解惑

时间同步网络

在通信领域,“同步”概念是指频率的同步,即网络各个节点的时钟频率和相位同步,其误差应符合标准的规定。目前,在通信网中,频率和相位同步问题已经基本解决,而时间的同步还没有得到很好的解决。时间同步是指网络各个节点时钟以及通过网络连接的 ...…

查看全部问答>

单片机资料

《单片机开发与典型应用设计》 .pdf…

查看全部问答>

急!!请教模电知识!!

一个滞回比较器它的两个阀值电压怎么求,最好写出公式。如下图所示。非常感激各位大侠的帮助…

查看全部问答>

CE软键盘的问题

我用evc4.0写了一个软键盘程序,是基于对话框的,单击按钮模拟按键消息keybd_event,在模拟器上调试一切正常,可拿到2440板子上一试问题就出现了,我的程序A需要输入,可点击软键盘,模拟字符输出a-z,正常应该是两个keydown和keyup,可程序A只接收 ...…

查看全部问答>

急招ARM9+WINCE程序兼职工程师

项目要求:   在S3C2440A WINCE系统上,编写一个通过GPRS modem进行无线数据发送和接收的程序,将串口采集的数据,通过GPRS无线拨号,发送到指定的服务器上,确保数据正确性。   时间要求:3周   薪酬:面议 &nb ...…

查看全部问答>

D/A问题

我用了一个8位D/A (型号是AD7226  双电源供电 ) 我把它和单片机一相连 它就发热,不知道问题在哪?  我的硬件电路是按照数据手册上搭建的,大家跟我想想啊!!!!…

查看全部问答>

各位st32有仿真软件吗

                                 比如像 proteus…

查看全部问答>

原创重量级:TI Stellaris M3《LM3S9b96中文数据手册》发布

TI的Stellaris M3系列,CAN、USB、Ethernet、DMA、EPI等外设独具特色,功能强大,StellarisWare的加入使其易于上手,方便开发,同时官方提供了很多开源的软件包供大家参考,并会不断丰富。 同时TI收购luminary后,经过2年的沉淀,其功能强大的Temp ...…

查看全部问答>

好吧。我接受现实。如果我要换快板子,用什么型号好?打死也不买811了

好吧。我接受现实。如果我要换快板子,用什么型号好?打死也不买811了…

查看全部问答>

那位又基于TCP的modbus协议代码!

那位又基于TCP的modbus协议代码!急用,谢谢俄!…

查看全部问答>