第一范文网 - 专业文章范例文档资料分享平台

MSP430通用串口的应用

来源:用户分享 时间:2025/8/11 19:12:23 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P1DIR = 0xFF; // P1口设为输出

P1OUT = 0; // P1口输出全为低电平

P3SEL = 0x30; // P3.4,5 为UART的 TXD/RXD UCA0CTL1 |= UCSSEL_1; // 选择辅助时钟 ACLK UCA0BR0 = 0x03; // 32kHz/9600 = 3.41 UCA0BR1 = 0x00;

UCA0MCTL = UCBRS1 + UCBRS0; // 分频调制值UCBRSx = 3 UCA0CTL1 &= ~UCSWRST; // USCI状态机初始化完毕 IE2 |= UCA0RXIE; // 使能USCI_A0接收中断 _BIS_SR(LPM3_bits + GIE); // 进入 LPM3, 使能全局中断 }

// USCI A0/B0 Transmit ISR

#pragma vector=USCIAB0TX_VECTOR

__interrupt void USCI0TX_ISR(void) // USCI A0/B0发送中断服务函数 {

UCA0TXBUF = string1[i++]; //发送字符串数组的下一个数据 if (i == sizeof string1) //判断字符串数组数据是否发送完毕 IE2 &= ~UCA0TXIE; // 发送完则禁止USCI_A0发送中断 }

#pragma vector=USCIAB0RX_VECTOR

__interrupt void USCI0RX_ISR(void) // USCI A0/B0接收中断服务函数 {

string1[j++] = UCA0RXBUF; //将收到的数据写入string数组

P1OUT =UCA0RXBUF; //将收到的数据显示在P1口的LED灯上 if (j > sizeof string1 - 1) //判断字符串数组数据是否写满 {

i = 0; //计数变量i和j清零 j = 0;

IE2 |= UCA0TXIE; // 使能 USCI_A0 发送中断 UCA0TXBUF = string1[i++]; //发送字符串数组的第一个数据 } }

3)仿真结果

双击msp430f249单片机,装载可执行文件Debug\\Exe\\ex7_4.hex,设置仿真参数ACLK=1MHz,如果未设定,则仿真无结果或结果不对。运行后可以在发射数据虚拟终端中用键盘输入字符,每输入一个字符,在P1口的数码管显示该字符的16进制ASCII码;输入八个字符后才在接收数据虚拟终端中显示8个字符的信息,如图实例7_11的仿真结果图。

17

图7_11 实例7_4仿真结果

7.2.4 USCI_A型模式下UART的寄存器

USCI_A0型模式下UART的控制和状态寄存器如表7-3所示: 地址 寄存器标志 操作 寄存器说明 060h UCA0CTL0 R/W 控制寄存器0 061h UCA0CTL1 R/W 控制寄存器1 062h UCA0BR0 R/W 波特率控制寄存器0 063h UCA0BR1 R/W 波特率控制寄存器1 064h UCA0MCTL R/W 调制控制寄存器 065h UCA0STAT R/W 状态寄存器 066h UCA0RXBUF R 接收数据寄存器 067h UCA0TXBUF R/W 发送数据寄存器 05Dh UCA0ABCTL R/W 自动波特率寄存器 05Eh UCA0IRTCTL R/W IrDA发送控制寄存器 05Fh UCA0IRRCTL R/W IrDA接收控制寄存器 001h IE2 R/W 中断使能寄存器2 003h IFG2 R/W 中断标志寄存器2 USCI_A1型模式下UART的控制和状态寄存器如表7-4所示: 地址 寄存器标志 操作 寄存器说明 0D0h UCA1CTL0 R/W 控制寄存器0 0D1h UCA1CTL1 R/W 控制寄存器1

18

0D2h UCA1BR0 R/W 波特率控制寄存器0 0D3h UCA1BR1 R/W 波特率控制寄存器1 0D4h UCA1MCTL R/W 调制控制寄存器 0D5h UCA1STAT R/W 状态寄存器 0D6h UCA1RXBUF R 接收数据寄存器 0D7h UCA1TXBUF R/W 发送数据寄存器 0CDh UCA1ABCTL R/W 自动波特率寄存器 0CEh UCA1IRTCTL R/W IrDA发送控制寄存器 0CFh UCA1IRRCTL R/W IrDA接收控制寄存器 006h UC1IE R/W 中断使能寄存器2 007h UC1IFG R/W 中断标志寄存器2 USCI_Ax控制寄存器0——UCAxCTL0 7 6 5 4 3 2 1 0 UCPEN UCPAR UCMSB UC7BIT UCSPB UCMODEx UCSYNC UCPEN:校验使能位,奇偶校验与发送和接受寄存器有关。在具有地址的多处理器模式下,其奇偶校验位值的计算还包含地址位。

0:校验禁止; 1:校验允许。

UCPAR:奇偶校验位,当UCPEN位禁止时,该位无效。 0:奇校验; 1:偶校验。

UCMSB:最高优先选择位,用于控制发送和接收移位寄存器的方向。 0:最低位优先; 1:最高位优先。 UC7BIT:字符长度。 0:8位数据; 1:7位数据。

UCSPB:停止位选择。 0:1位停止位; 1:2位停止位。

UCMODEx:USCI模式选择位,在UCSYNC=0时,控制异步通信模式。 00b:UART模式;

01h:空闲线多处理器模式; 10b:地址线多处理器模式;

11b:波特率自动检测UART模式。 UCSYNC:同步使能。 0:异步模式; 1:同步模式。

USCI_Ax控制寄存器1——UCAxCTL1 7 6 5 4 3 2 1 0 UCSELx UCXEIE UCBRKIE UCDORM UCTXADDR UCTXBPK UCSWRST UCSELx:USCI时钟选择,决定BRCLK的时钟源。 00b:外部时钟;

19

01b:辅助时钟(ACLK);

10b和11b:子系统时钟(SMCLK)。 UCXEIE:接受错误字符中断使能。 0b:禁止中断;

1b:使能中断,且使UCXIFG置位。 UCBRKIE:接受中止字符中断使能。 0b:禁止中断;

1b:使能中断,且使UCXIFG置位。 UCDROM:休眠控制位。 0b:禁止休眠;

1b:休眠,在空闲线多处理器模式或地址线多处理器模式下,使UCXIFG置

位,在波特率自动检测UART模式下只有设置了中止和同步有效时,才使UCXIFG置位。

UCTXADDR:发送地址位。在多处理器模式下,判断发送的是地址帧还是数据

帧。

0b:下一帧为发送数据; 1b:下一帧发送地址。

UCTXBRK:发送终止位。将发送的终止命令写入发送缓存器中。在波特率自

动检测UART模式下,写55h到UCAxTXBUF缓存器中,其余情况下写00h到UCAxTXBUF缓存器中。 0b:下一帧不是中止;

1b:下一帧是中止或中止/同步信息。 UCSWRST:软件复位使能。 0b:禁止,正常操作; 1b:使能,保持复位状态。

USCI_Ax波特率控制寄存器0——UCAxBR0 7 6 5 4 3 2 1 0 UCBRx USCI_Ax波特率控制寄存器1——UCAxBR1 7 6 5 4 3 2 1 0 UCBRx 这两个寄存器的值,都只有在UCSWRST=1b时,才可以更改。这两个寄存器用于存放波特率的时钟预置定标器的值。其中UCAxBR0为低字节,UCAxBR1为高字节。

USCI_Ax调制控制寄存器——UCAxMCTL 7 6 5 4 3 2 1 0 UCBRFx UCBRSx UCOS16 UCBRFx:第一调制段选择,这些位在UCOS16=1时决定了BITCLK16的调制模式,见表7-2所示。当UCOS16=0时,忽略不计。

UCBRSx:第二调制段选择,这些位在决定了BITCLK的调制模式,见表7-1

所示。

这两个字段值的设定,参见―波特率设定‖一节的说明

20

搜索更多关于: MSP430通用串口的应用 的文档
MSP430通用串口的应用.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c30y5p4dgku2p7v440mim_5.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top