标题:
串口UART实现电脑发送数据当430接收到数据后再发回电脑
[打印本页]
作者:
shanz
时间:
2018-4-22 21:41
标题:
串口UART实现电脑发送数据当430接收到数据后再发回电脑
串口UART实现电脑发送数据当430接收到数据后再发回电脑
0.jpg
(35.41 KB, 下载次数: 85)
下载附件
2018-4-22 23:15 上传
单片机源程序如下:
#include<msp430g2553.h>
#include "UART_Global.h"
unsigned char Rx_FIFO[RX_FIFO_SIZE]={0}; //UART接收FIFO数组
unsigned int Rx_FIFO_DataNum=0; //UART接收FIFO的“空满”指示变量
unsigned int Rx_FIFO_IndexR=0; //UART接收FIFO的模拟“读指针”变量
unsigned int Rx_FIFO_IndexW=0; //UART接收FIFO的模拟“写指针”变量
unsigned char Tx_FIFO[TX_FIFO_SIZE]={0}; //UART发送FIFO数组
unsigned int Tx_FIFO_DataNum=0; //UART发送FIFO的“空满”指示变量
unsigned int Tx_FIFO_IndexR=0; //UART发送FIFO的模拟“读指针”变量
unsigned int Tx_FIFO_IndexW=0; //UART 发送 FIFO 的模拟“写指针”变量
char Rx_FIFO_WriteChar(unsigned char Data)
{
if(Rx_FIFO_DataNum==RX_FIFO_SIZE) return(0);
//判断FIFO是否已装满未读数据,如果装满返回0
__disable_interrupt(); //操作FIFO前一定要关总中断
Rx_FIFO_DataNum++; //未读取数据个数加一
Rx_FIFO[Rx_FIFO_IndexW]=Data; //将数据写入写读指针位置的FIFO数组
Rx_FIFO_IndexW++; //写指针移位
if (Rx_FIFO_IndexW>=RX_FIFO_SIZE) //判断指针是否越界
Rx_FIFO_IndexW=0; //写指针循环归零
__disable_interrupt(); //恢复总中断使能
return(1); //返回成功
}
char Rx_FIFO_ReadChar(unsigned char *Chr)
{
if(Rx_FIFO_DataNum==0) return(0); //判断FIFO是是否有未读数据,如果没有返回0
__disable_interrupt(); //操作FIFO前一定要关总中断
Rx_FIFO_DataNum --; //待读取数据个数减一
*Chr=Rx_FIFO[Rx_FIFO_IndexR]; //将读指针位置的FIFO数据赋给指针所指变量
Rx_FIFO_IndexR++; //读指针移位
if (Rx_FIFO_IndexR>=RX_FIFO_SIZE) //判断指针是否越界
Rx_FIFO_IndexR=0; //读指针循环归零
__disable_interrupt(); //恢复总中断使能
return(1);
}
void Rx_FIFO_Clear()
{
__disable_interrupt(); //操作FIFO前一定要关总中断
Rx_FIFO_DataNum=0; //FIFO中未读取数据数目
Rx_FIFO_IndexR=0; //FIFO中模拟读指针清零
Rx_FIFO_IndexW=0; //FIFO中模拟写指针清零
__disable_interrupt(); //恢复总中断使能
}
char Tx_FIFO_WriteChar(unsigned char Data)
{
if(Tx_FIFO_DataNum==TX_FIFO_SIZE) return(0);
//判断FIFO是否已装满未读数据,如果装满返回0
__disable_interrupt(); //操作FIFO前一定要关总中断
//-----“全新”一次发送数据必须手动触发Tx 中断-----
if((Tx_FIFO_DataNum==0) &&( !(UCA0STAT & UCBUSY)))
//判断是否为一次“全新”发送
IFG2 |=UCA0TXIFG; // 手动触发一次
Tx_FIFO_DataNum++; //未读取数据个数加一
Tx_FIFO[Tx_FIFO_IndexW]=Data; //将数据写入写读指针位置的FIFO数组
Tx_FIFO_IndexW++; //写指针移位
if (Tx_FIFO_IndexW >= TX_FIFO_SIZE) //判断指针是否越界
Tx_FIFO_IndexW=0; //写指针循环归零
__disable_interrupt(); //恢复总中断使能
return(1); //返回成功
}
char Tx_FIFO_ReadChar(unsigned char *Chr)
{
if(Tx_FIFO_DataNum==0) return(0); //判断FIFO是是否有未读数据,如果没有返回0
__disable_interrupt(); //操作FIFO前一定要关总中断
Tx_FIFO_DataNum --; //待读取数据个数减一
*Chr=Tx_FIFO[Tx_FIFO_IndexR]; //将读指针位置的FIFO数据赋给指针所指变量
Tx_FIFO_IndexR++; //读指针移位
if (Tx_FIFO_IndexR>=TX_FIFO_SIZE) //判断指针是否越界
Tx_FIFO_IndexR=0; //读指针循环归零
__disable_interrupt(); //恢复总中断使能
return(1); //返回成功
}
void Tx_FIFO_Clear()
{
__disable_interrupt(); //操作FIFO前一定要关总中断
Tx_FIFO_DataNum=0; //FIFO中未读取数据数目清零
Tx_FIFO_IndexR=0; //FIFO中模拟读指针清零
Tx_FIFO_IndexW=0; //FIFO中模拟写指针清零
__disable_interrupt(); //恢复总中断使能
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
串口UART实现电脑发送数据当430接收到数据后再发回电脑.rar
(120.48 KB, 下载次数: 42)
2018-4-22 21:41 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1