!!!急 求助~~~C51单片机和上位机通信简单程序~~~~(Proteus虚拟实现)新手无奈求助中!!!
#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不亮。。。配置环境应该没错~~~ 因为之前实现一个功能还是可以的。。。 展开
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;
}