要个计算机与单片机的串口通信上位机C语言程序
展开全部
兄弟,下面是我自己写的,希望给你帮助,把数据用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;
//-----读入缓冲区的值
}
}
//-----头文件
#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;
//-----读入缓冲区的值
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
意法半导体(中国)投资有限公司
2021-01-14 广告
2021-01-14 广告
推荐STC的抗干扰很好。用9块钱的STC89C54RD+,16K的ROM,1K的RAM。我用过的,实现你的功能不成问题。如果环境恶劣,也可以选择工业级的STC89C54RD+,14块钱。而且这个单片机带AD,10位分辨率。可以用来接你的压力...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询