串口通信问题帮忙看看,在调试助手收到的是空格,怎么回事?另外可否说明一下如何发一个字符串,返回一个

#include<reg51.h>voidInitUART();//串口初始化函数voidUART_Send(charc);//串口发送函数voidINT_UART();... #include <reg51.h>
void InitUART(); //串口初始化函数
void UART_Send(char c); //串口发送函数
void INT_UART();//串口中断函数
void InitUART()
{
SCON=0x50;//8-bitUART使能接受
TMOD=0x02;//选择模式1,数据位为8位
TH1=0xFD;//设置波特率为9600
TR1=1; //定时器模式为1
EA=1;//开中断,允许
}
void UART_Sendchar(char c)
{
SBUF=c;
while(!TI);
TI=0;//清零
}
void UART_Sendstring(unsigned char *s)
{
while(s!='\0')
{UART_Sendchar(*s);
s++;}
}
void INT_UART() interrupt 4
{
unsigned char temp;
if(RI)
{
RI=0; //判断接受中断标志
temp=SBUF;//读取数据放入缓存区
P1=temp;//输出到P1口,便于观察
SBUF=temp;//返回数据到串口助手
}
if(TI)
TI=0; //判断发送中断标志,1表示已发送
}
void main()
{
InitUART();
UART_Sendstring("Hello UART!");
ES=1;//打开串口中断
}
另外可否说明一下如何实现发一个字符串,返回一个另一个字符串,谢谢啦!
展开
 我来答
chenzilianggz
2013-05-17 · TA获得超过140个赞
知道答主
回答量:77
采纳率:0%
帮助的人:41.5万
展开全部
收到空字符,也许是晶振用错了,可以检查一下你的晶振是12.000还是11.059
程序给上,自己写的,很稳定。有疑问找我

//串口通信初始设定
void serialcom_init(void)
{
SCON = 0x50; //UART为模式1,8位数据,允许接收
TMOD |= 0x20; //定时器1为模式2,8位自动重装
//PCON |= 0x80; //SMOD=1;
TH1 = 0xFD; //Baud:9600 fosc="11.0592"MHz
TL1 = 0xFD;
IE |= 0x90; //Enable Serial Interrupt
TR1 = 1 ; // timer 1 run
}
//向串口发送一个字符
void send_char_com(unsigned char ch)
{
SBUF=ch;
while (TI==0);
TI=0 ;
}
//串口接收中断函数
void serial () interrupt 4 using 3
{
if (RI)
{
RI=0;
ch=SBUF;
read_flag=1 ; //就置位取数标志
}
}
Semiscone
2013-05-13
知道答主
回答量:17
采纳率:100%
帮助的人:5.5万
展开全部
检查下波特率等配置,然后以十六进制发送、接收,看看收到的是什么。
建议使用 超级终端 或者 友善串口调试助手 试下
追问
不能发送,以十六制接受总为00
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
叉烧包005
2013-05-17 · 超过14用户采纳过TA的回答
知道答主
回答量:158
采纳率:0%
帮助的人:53.1万
展开全部
发送的和返回的是需要特定的字符串么?还是随便返回一个字符串。
如果发送和返回是特定的字符串需要对收到的字符串进行判断。strcmp这个函数不错,可以直接用!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-04-05
展开全部
在数字或者变量后面加个‘0’,亲测有效
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式