⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.c

📁 基于MSP430F14X单片机的红外接收程序
💻 C
字号:
/****************************************************************************************************
* 文件名:   UART.c										    *
* Copyright (c) 2008 *********武汉理工大学信息工程学院电信系				            *
* 创建人:   王康										    *
* 日 期:   2008.8.13                                                           		    *
* 修改人:   王康									            *
* 日 期:                                                                       		    *
* 描 述:   本文件包含了MSP430F149的串口通信的各个模块,能完成与PC机的串口通信,包括数据接收和数据发送*
*           所有的函数均以UART开头来命名.注意数据的发送和接收都是从最低位开始的.                    *
* 接口定义: UTXD0--P3.4                                                                             *
*           URXD0--P3.5										    *
* 版 本:   IAR V4.11										    *
****************************************************************************************************/


//头文件
#include "config.h"


/*****************************************************************************
* 函数名:   UART_Init
* 输 入:   无
* 输 出:   无
* 功能描述: 本函数为UART初始化子函数
*           UART模块初始化顺序如下:
*           1.在SWRST=1的情况下设置串口(时钟源选择,通信方式,波特率设置等)
*           2.然后设置SWRST=0
*           3.最后设置相应的中断使能
* 全局变量: 无
* 调用模块: 无
* 作 者:   王康
* 日 期:   2008.8.13
* 修 改:   王康
* 日 期:
* 版  本:   IAR V4.11
******************************************************************************/
void UART_Init(void)
{ 
    UCTL0 |= SWRST;                             //在控制位SWRST为1的情况下设置串口
    
    UTCTL0 |= SSEL1;                            //时钟源选择,UCLK=SMCLK=8MHz              
    UCTL0 |= CHAR;                              //设置字符长度为8bit
    
    UBR00 = 0x41;                               //在8MHz下进行9600波特率通信
    UBR10 = 0x03;                               //在8MHz下进行9600波特率通信
    UMCTL0 = 0x00;                              //设置波特率调整控制寄存器
    
    UCTL0 &= ~SWRST;
    
    ME1 |= UTXE0 + URXE0;                       //使能USART0 TXD/RXD
    IE1 |= URXIE0;                              //使能USART0 RX中断
    IFG1 = 0x00;
    
    P3SEL |= BIT4 + BIT5;                       //P3.4,P3.5用作USART0 TXD/RXD
    P3DIR |= BIT4;                              //将P3.4设为输出(发),P3.5默认为输入(收)
    
    _EINT();
}


/*****************************************************************************
* 函数名:   UART_Send
* 输 入:   无
* 输 出:   无
* 功能描述: 本函数为UART发送子函数
* 全局变量: 无
* 调用模块: 无
* 作 者:   王康
* 日 期:   2008.8.13
* 修 改:   王康
* 日 期:
* 版  本:   IAR V4.11
******************************************************************************/
void UART_Send(void)
{
    while((UTCTL0 & 0x01) != 0x01);             //等待直到没有数据发送
    TXBUF0 = g_Uart_TBuf;                       //发送数据    
}


/*****************************************************************************
* 函数名:   UART_Receive
* 输 入:   无
* 输 出:   无
* 功能描述: 本函数为UART0数据接收中断子函数
* 全局变量: 无
* 调用模块: 无
* 作 者:   王康
* 日 期:   2008.8.13
* 修 改:   王康
* 日 期:
* 版  本:   IAR V4.11
******************************************************************************/
#pragma vector = UART0RX_VECTOR
__interrupt void UART_Receive(void)             //将接收到的数据发送回去
{       
    g_Uart_RBuf = RXBUF0;
    while((UTCTL0 & 0x01) != 0x01);             //等待直到没有数据发送
    TXBUF0 = g_Uart_RBuf;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -