就是在单片机上按下1键在串口调试助手里显示1,按下2键显示2,以此类推,共四个按键。波特率9600.
编译出错了,
#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,你看看是不是你的单片机晶振有问题。
本回答被提问者和网友采纳