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)); } }