📄 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 + -