历史上的今天
今天是: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)!='




