MSP430-RS232发送解析

串口通信是我们平常经常用到的,我第一次接触串口是直接学习32,当时我一直以为所谓的串口通信就是usb接口再通过CH340转换芯片就是串口通信。串口通信记串行通信接口,是处理器和外界进行数据通信的一种方式。其又可以分成同步串口通信和异步串口通信,这个却决于他们是否有同步时钟(有就是同步通信)。咱们用的RS23就是一种异步通信,SPI,IIC就是同步通信。

 #include <MSP430x14x.h>

void main( void )
{
int a=0xD5D6;  // 定义的一个int类型的数据,两个字节,一会将这个int类型的数据发送到PC端

WDTCTL = WDTPW + WDTHOLD; 

P1DIR = 0XFF;P1OUT = 0XFF;
P2DIR = 0XFF;P2OUT = 0XFF;
P3DIR = 0XFF;P3OUT = 0XFF;
P4DIR = 0XFF;P4OUT = 0XFF;
P5DIR = 0XFF;P5OUT = 0XFF;
P6DIR = 0XFF;P6OUT = 0XFF;

P6DIR |= BIT2;P6OUT |= BIT2;

P3SEL=BIT4+BIT5;  //P3的4,5端口是数据发送口和接收口,开启复用功能

ME1=UTXE0+URXE0;  //ME:Module Enable Register模块使能寄存器

                                      //UTXE0: usart transmit enable  使能发送端和接收端
                                      //URXE0: usart receive enable

UCTL0=CHAR;  // 默认 异步通信模式,8位数据,无校验,1位停止位

UTCTL0=SSEL0;//时钟源的选择

UBR00=0X0D;
UBR10=0X00;
UMCTL0 = 0x6B;

/**************************插入一段用于解释这个串口波特率*****************/

/*与串口波特率相关的有5个寄存器

 SSELx:串口波特率发生器的时钟源,一般对于9600以下的用辅助时钟ACLK就可以解决,以上可以选择SMCLK, 00-UCLK,  01-ACLK, 10-SMCLK, 11-SMCLK
CKPL:UCLK管脚输入的极性,0是输入, 1是取反
UxBR0寄存器:波特率发生器分频系数低8位
UxBR1寄存器:波特率发生器分频系数低8位
UxMCTL:波特率发生器分频系数的余数(8位)
分频系数计算方法就是UxBR=CLK/BAUD,

上边的赋值是有一个表格的,我们不用自己算,可以直接按照表格写 */

/********************************************************************/
UCTL0 &= ~SWRST; // 初始化UART0状态机
IE1 |= URXIE0; // 使能接收中断
_EINT();
while(1)
  {
    TXBUF0 = a >> 8; //每次只能发送TXBUF0(一个字节),这是取了a的高八位
    while (!(IFG1 & UTXIFG0));// 等待发送结束
    TXBUF0 = a&0x00ff;// 这是取了a的低八位
    while (!(IFG1 & UTXIFG0));
  }
}

  

   

  

posted @ 2020-09-04 10:42  采风远行  阅读(438)  评论(0编辑  收藏  举报