📄 ta_uart.c
字号:
/********************************************************\
* 文件名: TA_Uart.C
* 创建时间:2004年12月7日
* 创建人:
* 版本号: 1.00
* 功能: 根据MSP430的特点,这部分实现MSP430三个模拟串口的功能
包括三个模拟串口的发送和接收
* 文件属性:公共文件
* 修改历史:(每条详述)
\********************************************************/
#include <msp430x14x.h>
#include "TA_Uart.h"
#include "General.h"
#include "Sub_C.h"
#include "Define_Bit.h"
#define SEND_DELAY_TIME 3
unsigned char SBUFIN2,SBUFIN3,SBUFIN4;
unsigned char SBUFOUT2,SBUFOUT3,SBUFOUT4;
unsigned char BitCnt2,BitCnt3,BitCnt4;
unsigned char RTI2,RTI3,RTI4;
unsigned char RIE;
unsigned int RXTXData2,RXTXData3,RXTXData4;
void TX2_Byte(void);
void TX3_Byte(void);
void TX4_Byte(void);
/********************************************************\
* 函数名:TX2_Byte
作用域:本文件调用
* 功能: 模拟串口2发送一个字节子程序
* 参数: SBUFOUT2
* 返回值:无
* 创建人:
*
* 修改历史:(每条详述)
\********************************************************/
void TX2_Byte (void)
{
RXTXData2=(int)SBUFOUT2;
BitCnt2=0x0A; // Load Bit counter, 8data + ST/SP,装10个BIT位
RTI2 |= ~SEND_FLAG; //清除相应的发送标志位
TACCR0 = TAR; // Current state of TA counter,清空记数器
TACCR0 += Bitime0; // Some time till first bit
RXTXData2 |= 0x100; // Add mark stop bit to RXTXData 1为停止位
RXTXData2 = RXTXData2 << 1; // Add space start bit 0为开始位(位左移1位)
TACCTL0 = OUTMOD0+CCIE; // TXD先设置1,中断允许
//while ( TACCTL0 & CCIE ); // Wait for TX completion,等待所有的位都发送完成
while ( (~RTI2)&SEND_FLAG );
gDelay_Com_Timer=0;
while(gDelay_Com_Timer<SEND_DELAY_TIME);
}
/********************************************************\
* 函数名:RX2_Ready
作用域:外部文件调用
* 功能: 模拟串口2准备接收数据子程序(捕获模式0)
* 参数: 无
* 返回值:无
* 创建人:
*
* 修改历史:(每条详述)
\********************************************************/
void RX2_Ready (void)
{
TA_Init();
RTI2 &= ~RECEIVE_FLAG;
BitCnt2=0x08; //Load Bit counter,装8个BIT位
TACCTL0=SCS+OUTMOD0+CM1+CAP+CCIE; //同步捕获Sync
//CCIS0=0,在捕获模式中,定义捕获事件的输入源为CCI0A
//OUTMOD0=1,输出模式为置位
//CM1=1,设置捕获模式1,下降沿捕获
//CAP=1,设置为捕获模式
//CCIE=1,中断允许
} //SCS同步捕获,(CCIS0=1,CCIS1=0)定义提供捕获事件的输入源
/********************************************************\
* 函数名:TX3_Byte
作用域:本文件调用
* 功能: 模拟串口2发送一个字节子程序
* 参数: SBUFOUT3
* 返回值:无
* 创建人:
*
* 修改历史:(每条详述)
\********************************************************/
void TX3_Byte (void)
{
TACCTL0 &=~ CCIE;
TBCCTL0 &=~ CCIE;
IE2&=~URXIE1;
RXTXData3=(int)SBUFOUT3;
BitCnt3 = 0xA; // Load Bit counter, 8data + ST/SP,装10个BIT位
RTI3 |= ~SEND_FLAG; //清除相应的发送标志位
TACCR1 = TAR; // Current state of TA counter,清空记数器
TACCR1 += Bitime1; // Some time till first bit
RXTXData3 |= 0x100; // Add mark stop bit to RXTXData 1为停止位
RXTXData3 = RXTXData3 << 1; // Add space start bit 0为开始位(位左移1位)
TACCTL1 = OUTMOD0+CCIE; // TXD先设置1,中断允许,设置CCIFG能进入中断
//while (TACCTL1 |= CCIE); // Wait for TX completion,等待所有的位都发送完成
while( (~RTI3)&SEND_FLAG );
gDelay_Com_Timer=0;
while(gDelay_Com_Timer<SEND_DELAY_TIME);
}
/********************************************************\
* 函数名:RX3_Ready
作用域:外部文件调用
* 功能: 模拟串口3准备接收数据子程序(捕获模式1)
* 参数: 无
* 返回值:无
* 创建人:
*
* 修改历史:(每条详述)
\********************************************************/
void RX3_Ready (void)
{
TA_Init();
RTI3 &= ~RECEIVE_FLAG;
BitCnt3=0x8; //Load Bit counter,装8个BIT位
TACCTL1=SCS+OUTMOD0+CM1+CAP+CCIE; //同步捕获Sync,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -