兄弟,下面是我自己写的,希望给你帮助,把数据用Send_One_Uart()这个函数直接发送到串口就行了!最后求采纳,哈哈!

//-----头文件

#include

//-----定义全局变量

unsigned char Temp;

/***************************************************

** 函数名称: UART_Init

** 功能描述: 串口初始化函数

** 输 入:无

** 输 出: 无

** 说 明: 无

****************************************************/

void UART_Init(void)

{

SCON = 0x50; //-----SCON: 模式 1, 8-bit UART, 使能接收

TMOD |= 0x20; //-----TMOD: timer 1, mode 2, 8-bit 重装

TH1 = 0xFD; //-----TH1: 重装值 9600 波特率 晶振 11.0592MHz

TR1 = 1; //-----TR1: timer 1 打开

ES = 1; //-----打开串口中断

EA = 1; //-----打开总中断

}

/***************************************************

** 函数名称: SendByte

** 功能描述: 发送字节函数

** 输 入:无

** 输 出: 无

** 说 明: 无

****************************************************/

void SendByte(unsigned char dat)

{

SBUF = dat;

while(!TI);

TI = 0;

}

/***************************************************

** 函数名称: SendStr

** 功能描述: 发送字符串函数

** 输 入:无

** 输 出: 无

** 说 明: 无

****************************************************/

void SendStr(unsigned char *s)

{

while(*s!='\0')

{

SendByte(*s);

s++;

}

}

/***************************************************

** 函数名称: main

** 功能描述: 主函数

** 输 入:无

** 输 出: 无

** 说 明: 无

****************************************************/

void main (void)

{

UART_Init(); //-----串口初始化

while(1)

{

if(Temp=='H'&&'i')

{

Temp=0;

SendStr("hello");

}

}

}

/***************************************************

** 函数名称: UART_SER

** 功能描述: 串口中断服务子函数

** 输 入:无

** 输 出: 无

** 说 明: 无

****************************************************/

void UART_SER (void) interrupt 4 //-----串行中断服务程序

{

if(RI) //-----判断是接收中断产生

{

RI=0; //-----标志位清零

Temp=SBUF; //-----读入缓冲区的值

}

}

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐