!!!急 求助~~~C51单片机和上位机通信简单程序~~~~(Proteus虚拟实现)新手无奈求助中!!!

#include<reg51.h>#include<stdio.h>#defineucharunsignedcharucharcom_pc;voiddelay1ms(){... #include <reg51.h>
#include <stdio.h>
#define uchar unsigned char
uchar com_pc ;
void delay1ms()
{
unsigned int i;
for(i=500000;i>0;i--);
}
void Init()
{
EA=0;
ES=1;
SCON=0x50;
TMOD=0x20;
TH1=0Xfd;
TH1=0Xfd;
EA=1;
TR1=1;
}
void main()
{
Init();
while(1)
{
while(!RI);
RI=0;
com_pc=SBUF;
SBUF=com_pc;
while(!TI);
delay1ms();
delay1ms();
TI=0;
}
}
想法是从上位机(串口调试工具)发送一个字符给C51,然后51在回显至上位机。。。但是串口只能发送单片机 不能回显。。。

由串口调试工具发送字符时 P1中RXD亮 但是TXD不亮。。。配置环境应该没错~~~ 因为之前实现一个功能还是可以的。。。
展开
 我来答
47okey
2012-08-02 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5900
采纳率:75%
帮助的人:2341万
展开全部

1.不知你这个虚拟终端什么用。用了串口调试助手,这个就不要用了。

2.你的程序开了串口中断,那程序就用串口中断子函数来收发。

程序改一下:

#include <reg51.h>

//#include <stdio.h>

#define uchar unsigned char 

uchar com_pc;

/*void delay1ms()

{

 unsigned int i;

  for(i=500000;i>0;i--);

}

*/

void Init()

{

  EA=1;

  ES=1;

  SCON=0x50;

  TMOD=0x20;

  TH1=0Xfd;

  TL1=0xfd;  //你的程序少了这条

  //TH1=0Xfd;

  TR1=1;

}

void main()

{

 Init();

 while(1)

 {

    //while(!RI);

    //RI=0;

    //com_pc=SBUF;

    //SBUF=com_pc;

    //while(!TI);

    //delay1ms();

    //delay1ms();

    //TI=0;

 }

}

void UART() interrupt 4

{

   if(RI);

   RI=0;

   com_pc=SBUF;

   SBUF=com_pc;

   while(!TI);

   TI=0;

 

 

 

善如南0hHb23
2012-08-02 · TA获得超过174个赞
知道小有建树答主
回答量:777
采纳率:0%
帮助的人:491万
展开全部
上位机需要有个虚拟串口
要安装的

设定好波特率 和对发端口

我有这方面的资料,网上可少了
可以交流
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wmgi7205
2012-08-02 · TA获得超过388个赞
知道小有建树答主
回答量:771
采纳率:66%
帮助的人:410万
展开全部
这个 虚拟的需要指定晶振频率和波特率吗?没玩过 不知道
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式