单片机可以发送数据 ,但收不到PC机发给它的 求指教

#include <reg52.h>#include <stdio.h> //初始化串行口
void InitCom(unsigned char BaudRate){unsigned char THTL;switch (BaudRate){case 1: THTL = 0xE8; break; //波特率1200case 2: THTL = 0xF3; break; //波特率2400case 3: THTL = 0xFA; break; //波特率4800case 4: THTL = 0xFD; break; //波特率9600default: THTL = 0xFD;}EA=1;ET1=0;ES=1;TR1 = 1; //启动定时器
SCON = 0x50; //串口方式1,允许接收TMOD = 0x20; //定时器1定时方式2TCON = 0x40; //设定时器1开始计数TH1 = THTL;TL1 = THTL;PCON = 0x00; //波特率加倍控制,SMOD位RI = 0; //清收发标志TI = 0;
}

void main() { int i,j; char c='A'; InitCom(2);
while(1) { TI=0; P0=c; SBUF=c; while(!TI); TI=0; for(j=0;j<25;j++) for(i=0;i<5000;i++); c++; if(c=='Z'+1) c='A'; } }
void intrr() interrupt 4 { char temp; temp=SBUF; P2=temp; RI=0; }

单片机向PC发送开始时候关闭串口中断(ES=0),结束后打开串口中断,否则发送时候也会促发中断的
例如:
ES=0;
SBUF=c;
while(!TI);
TI=0;
ES=1;追问

#include
#include
//初始化串行口
bit flag;

void main()
{
InitCom(2);//初始化
while(1)
{
if(flag==1)
{
char temp;
ES=0;
temp=SBUF;
P2=temp;
RI=0;
ES=1;
}

}
}
void intrr() interrupt 4
{
flag=1;
}
把程序改成只接收pc机发送的数据,可数码管一直显示的是FF

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-10
请用我的信号接收中断试试

//串口接收中断函数
void INT_UartRcv(void) interrupt 4
{
unsigned char Rcv = 0;
if(RI) //查询接收标志位(有数据发送过来时置为1)
{
RI = 0; //接收标志位清零
Rcv = SBUF; //存储缓冲区的数据
P2=SBUF;

}
}追问

不行 情况是一样的~~

相似回答
大家正在搜