MSP430F149学习之路——UART

代码一:

 1 #include <msp430x14x.h>
 2 void int_clk()
 3 {
 4   BCSCTL1 &= ~XT2OFF;
 5   BCSCTL2 |= SELM_2 + SELS;
 6   do
 7   {
 8     IFG1 &= ~OFIFG;
 9     for(int i=0;i<100;i++)
10       _NOP();
11   }while((IFG1 & OFIFG)!=0);
12   IFG1 &= ~OFIFG;
13 }
14 void int_usart()
15 {
16   U0CTL |= SWRST;    //复位串口
17   U0CTL |= CHAR;     //8位数据
18   U0TCTL |= SSEL1;   //选择SMCLK
19   //波特率19200
20   U0BR1 = 0X01;
21   U0BR0 = 0XA0;
22   UMCTL0 = 0XC0;
23
24   ME1 |= UTXE0 + URXE0;   //使能接收和发送
25   U0CTL &= ~SWRST;        //清楚串口复位信号
26
27   IE1 |= URXIE0;          //使能接收中断
28   P3SEL |= BIT4 + BIT5;
29   P3DIR |= BIT4;
30 }
31 void sent_byte(unsigned char data)
32 {
33   while((IFG1 & UTXIFG0)==0);
34   U0TXBUF = data;
35 }
36 #pragma vector=UART0RX_VECTOR
37 __interrupt void UART0(void)
38 {
39   unsigned char data = 0;
40   data = U0RXBUF;
41   sent_byte(data);
42 }
43 int main()
44 {
45   WDTCTL = WDTPW + WDTHOLD;
46   int_clk();
47   int_usart();
48   _EINT();
49   return 0;
50 }

代码二:

 1 #include <msp430x14x.h>
 2 void int_clk()
 3 {
 4   BCSCTL1 &= XT2OFF;
 5   BCSCTL2 |= SELS + SELM_2;
 6   do
 7   {
 8     IFG1 &= ~OFIFG;
 9     for(int i=0;i<100;i++)
10       _NOP();
11   }while((IFG1 & OFIFG)!=0);
12   IFG1 &= ~OFIFG;
13 }
14 void int_usart()
15 {
16   U0CTL |= SWRST;
17   U0CTL |= CHAR;
18   U0TCTL = SSEL1;
19    //9600
20   U0BR1 = 0X03;
21   U0BR0 = 0X41;
22   U0MCTL = 0X00;
23
24   ME1 |= UTXE0 + URXE0;
25   U0CTL &= ~SWRST;
26   IE1 |= URXIE0;
27
28   P3SEL |= BIT4 + BIT5;
29   P3DIR |= BIT4;
30 }
31 void send_byte(unsigned char data)
32 {
33   while((IFG1 & UTXIFG0)==0);
34   U0TXBUF = data;
35 }
36 //串口0发送字符串函数
37 /*void Print_Str(char *s)
38 {
39   while(*s != ‘\0‘)
40   {
41     send_byte(*s++);
42   }
43 }
44 */
45 #pragma vector=UART0RX_VECTOR
46 __interrupt void UART0_RX_ISR(void)
47 {
48   unsigned char data;
49   data = U0RXBUF;
50   P6OUT = data;
51   send_byte(data);
52 }
53 void main()
54 {
55   WDTCTL = WDTPW + WDTHOLD;
56   P6DIR = 0XFF;
57   P6OUT = 0XFF;
58   int_clk();
59   int_usart();
60   _EINT();
61 //  Print_Str("hello!\n");
62 }
时间: 2024-08-10 15:10:15

MSP430F149学习之路——UART的相关文章

MSP430F149学习之路——时钟1

代码一: /************************** 功能:LED每隔1秒闪烁一次 ****************************/ #include <msp430x14x.h> void main() { P6DIR = 0XFF; P6OUT = 0X00; TACCR0 = 4095; TACCTL0 = CCIE; TACTL = TASSEL_1 + ID_3 + MC_1; _EINT(); LPM3; } #pragma vector=TIMERA0_VE

MSP430F149学习之路——LED

1 #include <msp430x14x.h> 2 3 void int_clk(); 4 void delay(int i); 5 void main() 6 { 7 WDTCTL = WDTPW + WDTHOLD; 8 int_clk(); 9 P6DIR = 0XFF; 10 P6OUT = 0Xff; 11 while(1) 12 { 13 P6OUT = 0XFF; 14 delay(20000); 15 P6OUT = 0x00; 16 delay(20000); 17 }

MSP430F149学习之路——PWM信号

代码一: 1 /******************************* 2 程序功能:ACLK=32768Hz 3 PWM波 T=512/32768 占空比75% 4 *********************************/ 5 6 #include <msp430x14x.h> 7 void main() 8 { 9 WDTCTL = WDTPW + WDTHOLD; 10 TACTL = TASSEL_1 + TACLR; 11 12 CCTL0 = 0X00; 13

MSP430F149学习之路——按键

代码一: 1 /********************************** 2 程序功能:用按键控制LED灯熄灭 3 ***********************************/ 4 #include <msp430x14x.h> 5 6 void int_clk(); 7 void main() 8 { 9 WDTCTL = WDTPW + WDTHOLD; 10 int_clk(); 11 P1DIR = 0Xf0; 12 P1OUT = 0Xff; 13 P6DIR

MSP430F149学习之路——SPI

代码一: 1 //****************************************************************************** 2 //Description:SPI slave talks to SPI master using 3-wire mode. Data is sent 3 //to the master starting at 0x00 and increments. Received data from the 4 //master

MSP430F149学习之路——捕获/比较模式

1.捕获模式 1 #include <msp430x14x.h> 2 unsigned int last0=0,last1=0; 3 unsigned int k=0,j=0; 4 void mian(void) 5 { 6 WDTCTL = WDTPW + WDTHOLD; 7 TACTL = TACLR + TASSEL_2 + ID_3 + MC_3; 8 9 TACCTL0 = CM_3 + CCIS_0 + SCS + CAP + CCIE; 10 TACCTL1 = CM_3 +

MSP430F149学习之路——按键与LED

代码 1 /*********************************** 2 程序功能:用按键控制LED状态 3 缺点:按键按下后无法改变LED灯的状态,可以利用板上的复位键^~^ 4 *************************************/ 5 #include <msp430x14x.h> 6 7 int k,i=0; 8 void int_clk(); 9 void led(int n); 10 void main() 11 { 12 WDTCTL = WD

MSP430F149学习之路——AD

代码一:Timer_A触发转换 1 #include <msp430x14x.h> 2 void main() 3 { 4 WDTCTL = WDTPW + WDTHOLD; 5 P6SEL |= BIT0; 6 TACTL |= TASSEL_2 + MC_2; 7 TACCTL1 = OUTMOD_3; 8 TACCR1 = 0X0FFF; 9 ADC12CTL0 = ADC12ON + SHT0_2; 10 ADC12CTL1 = SHS_1 + SHP; 11 while(1) 12

MSP430F149学习之路——蓝牙模块

注意蓝牙模块的接法! 1 #include <msp430x14x.h> 2 char data[100]; 3 int k=0; 4 void int_clk() 5 { 6 BCSCTL1 &= ~XT2OFF; 7 BCSCTL2 |= SELM_2 + SELS; 8 do 9 { 10 IFG1 &= ~OFIFG; 11 for(int i=0;i<100;i++) 12 _NOP(); 13 }while((IFG1 & OFIFG)!=0); 14