帮忙调试个程序,用串口助手直接查看来自51单片机上的字符,关键部分不知怎么写

想在串口助手上能够一直显示:hello,contana,但就是不知道SBUF怎么用,也不明白要不要加串口中断

第1个回答  推荐于2016-10-06
#include<reg51.h>
#define uchar unsigned char
uchar tdata[]="hello.contana";
main()
{
uchar i,dat;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
SCON=0x50;
TR1=1;
while(1)
{
i=0;

while(1)

{
dat=tdata[i];

if(dat==NULL)break;

SBUF=dat;

while(TI==0);

TI=0;

i++;

}

SBUF="\n";

while(TI==0);

TI=0;

}

}追问

谢谢了,不过显示h的时候会乱码,不知道改哪里

追答

#include
#define uchar unsigned char
uchar tdata[]="hello.contana";
main()
{
uchar i,dat;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
SCON=0x50;
TR1=1;
while(1)
{
i=0;
while(1)
{
dat=tdata[i];
if(dat==NULL)break;
SBUF=dat;
while(TI==0);
TI=0;
i++;
}
}
}

本回答被提问者和网友采纳

怎么通过串口读取51单片机某个地址的数据?请用C语言写出来。
unsigned int *p= (unsigned int*)0x22 ;\/\/定义指针,并且使指针指向了0x22这个 内存地址;那么*p就是最终你要读取的数据了。4.至于如何通过串口显示到电脑我就不多说了(这不是难点),数据你都知道了,写到串口 缓冲区,在串口调试助手下就可以看到。5.虽然没有贴出具体代码,但这里面...

为什么我51串口通信时在串口调试助手里看到的是乱码 求指点 这是我的...
乱码的话,一般情况是波特率不正确导致的。确认你单片机的波特率和上位机接收的波特率是一样的。上层软件的波特率设置为9600就应该可以了。

想用单片机接受从串口调试助手那里发送过来的数值数据,如何写代码(C...
\/\/ 单片机串行口发送\/接收程序,每接收到字节即发送出去 \/\/ 和微机相接后键入的字符回显示在屏幕上 \/\/ 可用此程序测试 \/\/ include <reg51.h> define XTAL 11059200 \/\/ CUP 晶振频率 define baudrate 9600 \/\/ 通信波特率 void main(void){ unsigned char c;TMOD = 0x20; \/\/ 定时器...

如何用51串口接受和发送数据,具体程序。
给你一个我自己写的串口通信程序,上层软件用串口调试助手即可,单片机软件如下:include <reg52.h> define uchar unsigned char sbit k5=P2^1;uchar zf[]={'0','1','2','3','4','5','6','3','7','8','9','a','b','c','d','e','f',0x00};uchar code dis[]={0xc0...

用51单片机读取c2402中的数据然后用串口调试助手显示出来怎么用c语言写...
24c02的程序网上都有,串口程序网上也有,把51单片机的串口通讯线P3.0,P3.1连接到下载板上的P3.0,P3.1,并且共地,再把现在板通过串口连接方式与电脑连接就可以了,注意波特率的选择

怎么用51单片机向串口调试助手发送字符串?有程序解释更好啊,求解~
ASCII码在单片机中也是用16进制来表示的,只是解码后显示的是字符,你要是随便发一个字符,串口调试助手选择字符显示接收就可以显示一个字符出来(可能我们不认识这个字符)。发送一个字符串就是不停的发送直到发送完毕,51单片机有自己的串行发送端口P3.0和P3.1端口,但是它是一个字节一个字节发送的,...

51单片机与PC机的串口通讯设计的一个问题
1、用串口调试助手 2、用PC机通过串口控制8952让端口上的LED亮灭很简单,如只需发送0XFE内容,再让P0=SUBF就可让P0口上的一个LED灭。3、若要实现双工方式,设置SCON=0X50,也就是让REN=1即可,4、若要有语音提示,在主程序相应位置加一发音程序即可。以上希望能帮到你。

...51单片机C 语言有无错误。(串口调试助手输入X,单片机返回I GET X...
while(1)后不应该有分号否则就是死循环。还有格式比较乱,看起来不太清楚

51单片机,通过串口助手向单片机发送字符串,单片机将字符串逆序发送回计...
像这种发送字符串的,需要有一个字符串结束标志,不能用0作为字符串结束标志了!这里以回车作0xd为结束标志!include <reg51.h> typedef unsigned char uint8;bit flag = 0;uint8 idata buf[30];uint8 ct;void InitUART(void) \/\/串口初始化 9600bps { TMOD = 0x20;SCON = 0x50;TH1 = 0x...

51单片机串口接收单字符后如何进行判断
如果在串口助手上发送字符数据 那么在单片机上接收的就可以用该字符对应的十六进制码进行判断 比如你的数据 0,以字符形式发送0,换成十六进制就是 30 单片机用0x表示十六进制数据,所以就是 0x30 判断语句如下 if ( c==0x30 ){ LED = ~LED; } 具体的字符与十六进制码对换,可以参考下表 ...

相似回答