
小弟用proteus仿真单片机的串口通信单片机接收不了信号,如下程序,目的是当电脑向单片机输入1时做点事
#include<REG52.H>sbitfu=P1^2;sbitok=P1^1;bitFlag;unsignedintReData,SenData;voidmain(v...
#include <REG52.H>
sbit fu=P1^2;
sbit ok=P1^1;
bit Flag;
unsigned int ReData,SenData;
void main (void)
{
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
TMOD|= 0x20; //定时器工作方式2
PCON= 0x00;
TH1 = 0xFD; //baud reload value 9600、数据位8、停止位1。效验位无 (11.0592)
TL1 = 0xFD;
TR1 = 1;
ES = 1; //开串口中断
EA = 1; // 开总中断
while(1)
{
if (Flag==1)
{
Flag=0;
if(SenData==1)
{
fu=0;
}
}
}
}
void ser_int (void) interrupt 4 using 1
{
if(RI==1) //RI接受中断标志
{
RI=0; //清除RI接受中断标志
ReData=SBUF; //SUBF接受/发送缓冲器
SenData=ReData;
Flag=1;
ok=~ok;
}
} 展开
sbit fu=P1^2;
sbit ok=P1^1;
bit Flag;
unsigned int ReData,SenData;
void main (void)
{
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
TMOD|= 0x20; //定时器工作方式2
PCON= 0x00;
TH1 = 0xFD; //baud reload value 9600、数据位8、停止位1。效验位无 (11.0592)
TL1 = 0xFD;
TR1 = 1;
ES = 1; //开串口中断
EA = 1; // 开总中断
while(1)
{
if (Flag==1)
{
Flag=0;
if(SenData==1)
{
fu=0;
}
}
}
}
void ser_int (void) interrupt 4 using 1
{
if(RI==1) //RI接受中断标志
{
RI=0; //清除RI接受中断标志
ReData=SBUF; //SUBF接受/发送缓冲器
SenData=ReData;
Flag=1;
ok=~ok;
}
} 展开
2个回答
迪凯特科技(北京)有限公司_
2025-01-03
展开全部
展开全部
PROTEUS图中加入串口COMPIM.或者用虚拟终端输入数据,我的图是用PIC单片机做的异步串行通信.
更多追问追答
追问
我有虚拟串口的软件,发现这个虚拟开了一次就可以了,虚拟串口显示 com口是有接收到数据的,换了一个一定正确的proteus电路图后,要什么截图,立刻接,在线等
追答
你的图太小看不清,虚拟终端的接收脚要接串口的发送脚,虚拟终端的发送脚接串口的接收脚.

2025-01-03 广告
程序逻辑混乱,出现不确定现象,测试结果时好时坏。理顺一下程序思路,保证采集按键、发送、接收数据、显示为一个完整的周期跟后面其他的操作没有关系.你可以联系迪凯特问问,他家挺好的,下边有链接。...
点击进入详情页
本回答由迪凯特科技(北京)有限公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询