单片机STC-89C52RC 通过发送按键字符在串口助手里显示,求程序,急用,在线等……

就是在单片机上按下1键在串口调试助手里显示1,按下2键显示2,以此类推,共四个按键。波特率9600.

在串口助手,选择“文本模式”就可以显示字符了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-05-04
#include<reg51.h>

sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;

main()
{
TMOD=0x20;
SCON=0x50;
TH1=0xfd;
TL1=0xfd;
TR1=1;
while(1)
{
if(key1==0){while(key1==0);SBUF='1',while(!TI);TI=0;}

if(key2==0){while(key2==0);SBUF='2',while(!TI);TI=0;}

if(key3==0){while(key3==0);SBUF='3',while(!TI);TI=0;}

if(key4==0){while(key4==0);SBUF='4',while(!TI);TI=0;}

}

}追问

编译出错了,

追答

#include

sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;

main()
{
TMOD=0x20;
SCON=0x50;
TH1=0xfd;
TL1=0xfd;
TR1=1;
while(1)
{
if(key1==0){while(key1==0);SBUF='1';while(!TI);TI=0;}

if(key2==0){while(key2==0);SBUF='2';while(!TI);TI=0;}

if(key3==0){while(key3==0);SBUF='3';while(!TI);TI=0;}

if(key4==0){while(key4==0);SBUF='4';while(!TI);TI=0;}

}

}

追问

谢谢了,发过去显示是十六进制的,调不对,还是要谢谢你了

追答

你将显示模式切换为字符模式就可以了。

追问

切换了 ,还是不行的,没办法了。

切换了 ,还是不行的,没办法了。

追答

你截图是十六进制模式显示呀,不行你将发送的地方改一下
if(key1==0){while(key1==0);SBUF=0x31;while(!TI);TI=0;}

if(key2==0){while(key2==0);SBUF=0x32;while(!TI);TI=0;}

if(key3==0){while(key3==0);SBUF=0x33;while(!TI);TI=0;}

if(key4==0){while(key4==0);SBUF=0x34;while(!TI);TI=0;}

追问

程序也修改了,还是一样的,试了好多了,无论是字符还是十六进制,几本组合都尝试了

追答

接收的数据显然是不对的,这个原因可能是波特率不一致造成,你看看单片机的晶振是多少,程序的设计如果晶振是11.0592M或12M的情况下是9600,你看看是不是你的单片机晶振有问题。

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