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

📄 ta_uart.c

📁 车载GPS监控终端的完整代码,与监控中心的通讯采用GPRS.
💻 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 + -