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

📄 uart.c

📁 MSP430平台下的uart驱动程序代码
💻 C
字号:
////////////////////////////////////////////////////////////////
//              无线传感器网络节点程序                        //
//                Uart操作子程序                              //
//                编写:蒋路茸                                //
//                日期:2008.5                                //
//                版本:0.1                                   //
//                                                            //
//                  ZigBee模块串口:                           //
//                      UTXD0:  P3.4                          //
//                      URXD0:  P3.5                          //
//                  RS232:                                    //
//                      UTXD1:  P3.6                          //
//                      URXD1:  P3.7                          //
//                                                            //
////////////////////////////////////////////////////////////////

#include  <msp430x14x.h>
#include  "uart.h"


///////////////////////////////////////////////////
//    名称:uart_delay
//    功能:延时
//    输入:uint
//    输出:null
//    返回:null
///////////////////////////////////////////////////
void Uart_delay(unsigned int i)
{
  unsigned int j;
  for(j=0;j<i;)
    j++;  
}


///////////////////////////////////////////////////
//    名称:Uart0_initial
//    功能:异步串口0初始化
//    输入:null
//    输出:null
//    返回:null
///////////////////////////////////////////////////
void  Uart0_initial(void)          //异步串口0
{
  U0CTL = 0x10;                    //8bit数据,无校验位
  U0TCTL = 0x20;                   //波特率发生器选择SMCLK 16M Hz
  UBR0_0 = 0x41;                   //选择波特率  9600 kbps
  UBR1_0 = 0x03;
  UMCTL_0 = 0x00;  
  ME1 |= UTXE0 + URXE0;             //使能Uart0的TXD和RXD
  IE1 |= URXIE0;                    //使能Uart0的RX中断
//  IE1 |= UTXIE0;                   //使能Uart0的TX中断
  P3SEL |= BIT4;                   //设置P3.4为Uart0的TXD
  P3SEL |= BIT5;                   //设置P3.5为Uart0的RXD
  P3DIR |= BIT4;                    // P3.4输出
  P3DIR &= (~(BIT5));               // P3.5输入
}


///////////////////////////////////////////////////
//    名称:Uart1_initial
//    功能:异步串口1初始化
//    输入:null
//    输出:null
//    返回:null
///////////////////////////////////////////////////
void  Uart1_initial(void)          //异步串口1
{
  U1CTL = 0x10;                    //8bit数据,无校验位
  U1TCTL = 0x20;                   //波特率发生器选择SMCLK 16M Hz
  UBR0_1 = 0x41;                   //选择波特率  9600 kbps
  UBR1_1 = 0x03;
  UMCTL_1 = 0x00;  
  ME2 |= UTXE1 + URXE1;             //使能Uart1的TXD和RXD
  IE2 |= URXIE1;                    //使能Uart1的RX中断
//  IE2 |= UTXIE1;                   //使能Uart1的TX中断
  P3SEL |= BIT6;                   //设置P3.6为Uart0的TXD
  P3SEL |= BIT7;                   //设置P3.7为Uart0的RXD
  P3DIR |= BIT6;                    // P3.6输出
  P3DIR &= (~(BIT7));               // P3.7输入       
}


///////////////////////////////////////////////////
//    名称:Uart0_Send_Byte
//    功能:异步串口0发送一个字节
//    输入:uchar
//    输出:null
//    返回:null
///////////////////////////////////////////////////
void Uart0_Send_Byte(unsigned int sendbyte)
{
  while((IFG1 & UTXIFG0) == 0)              //  等待标志位置位(发送缓冲可用)
    _NOP();
  TXBUF0 = sendbyte;
}


///////////////////////////////////////////////////
//    名称:Uart1_Send_Byte
//    功能:异步串口1发送一个字节
//    输入:uhar
//    输出:null
//    返回:null
///////////////////////////////////////////////////
void Uart1_Send_Byte(unsigned int sendbyte)
{
  while((IFG2 & UTXIFG1) == 0)              //  等待标志位置位(发送缓冲可用)
    _NOP();
  TXBUF1 = sendbyte;
    
//        TXBUF1=sendbyte;  
 //     while ((UTCTL1&0x01)==0 );  
  
  
}


///////////////////////////////////////////////////
//    名称:Uart0_send_codes
//    功能:异步串口0发送N字节
//    输入:uhar
//    输出:null
//    返回:null
///////////////////////////////////////////////////
void Uart0_Send_Codes(unsigned char *pBuffer,unsigned char n)
{
  unsigned char i;
  for(i=0;i<n;i++)
  {
    Uart0_Send_Byte(*pBuffer);
    pBuffer++;
    Uart_delay(100);
  }
}


///////////////////////////////////////////////////
//    名称:Uart1_send_codes
//    功能:异步串口0发送N字节
//    输入:uhar
//    输出:null
//    返回:null
///////////////////////////////////////////////////
void Uart1_Send_Codes(unsigned char *pBuffer,unsigned char n)
{
  unsigned char i;
  for(i=0;i<n;i++)
  {
    Uart1_Send_Byte(*pBuffer);
    pBuffer++;  
    Uart_delay(100);
  }  
}

⌨️ 快捷键说明

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