用串口调试助手只能发送一次数据啊,如发送十六进制fe后,有反应,但是如果再发ff或f4等等数据都无效了
程序如下#include<reg52.h>unsignedcharaa,flag;voidmain(){while(1){TMOD=0x20;TH1=0xfd;TL1=0...
程序如下
#include<reg52.h>
unsigned char aa,flag;
void main()
{
while(1)
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
ET1=1;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
if(RI==1)
{
RI=0;
P1=SBUF;
}
} 展开
#include<reg52.h>
unsigned char aa,flag;
void main()
{
while(1)
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
ET1=1;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
if(RI==1)
{
RI=0;
P1=SBUF;
}
} 展开
展开全部
这样写程序不对应该将TMOD =0X20(含)至ES=1(含)之间的语句放到while(1)之前,否则总在做初始化,会有问题的。
这样改下在试试。
这样改下在试试。
更多追问追答
追问
我原先就是将它放在while外面的,也是一样的
追答
如果你的程序没有用到中断,EA、ES、ET1都该置0,尤其是ET1,作为波特率发生器不需要中断。理论上如果都置1的话,程序执行会乱的,比如ET1=1后,到时产生中断,单片机程序将会从程序地址0x001B开始执行,你的程序中又不包括相应的中断程序,所以整个过程可能就会乱了。
把这几句都注掉再试试。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询