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

📄 ta_uart.c

📁 MSP430F149利用定时器捕获模拟的串口接收发送程序
💻 C
字号:
#include <msp430x14x.h>
#include "TA_Uart.h"
#include "General.h"

#define SEND_DELAY_TIME 	2

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发送一个字节子程序
\********************************************************/
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 );
	gTimer=0;
	while(gTimer<SEND_DELAY_TIME);
}

/********************************************************\
*	函数名:RX2_Ready
*	功能:  模拟串口2准备接收数据子程序(捕获模式0)
\********************************************************/
void RX2_Ready (void)
{
	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发送一个字节子程序
\********************************************************/
void TX3_Byte (void)
{
	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  );
	gTimer=0;
	while(gTimer<SEND_DELAY_TIME);
}


/********************************************************\
*	函数名:RX3_Ready
*	功能:  模拟串口3准备接收数据子程序(捕获模式1)
\********************************************************/
void RX3_Ready (void)
{
	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 + -