新增虚拟串口对
使用虚拟串口软件,虚拟一对虚拟串口,如COM1–COM2
PORTEUS中增加串口控件COMPIM
在PROTEUS中增加一个串口控件,MCU使用AT89C51RD2
绘制原理图
原理图中仅包含了一个AT89C51和一个串口控件
设置串口控件属性
这里我们设置的属性要跟MCU的属性、串口调试助手的属性一致。
这儿我们都设置为"9600,N,8,1"
编写MCU发送程序
/******************************************************************
例程:
使用串口接受一个字符,如果字符为'X',则打印“Hello World!”,"9600,n,8,1"
*******************************************************************/
#include <reg51.h>
unsigned char UartBuf=0;
void SendStr(unsigned char *p);
void SendOneByte(unsigned char c);
void InitUART(void)
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
}
void main(void)
{
InitUART();
while(1)
{
if(UartBuf=='X')
{
UartBuf=0;
SendStr("Hello world!\n\r");
}
}
}
void UARTInterrupt(void) interrupt 4
{
if(RI)
{
RI = 0;
//add your code here!
UartBuf=SBUF;
}
else
TI = 0;
}
void SendOneByte(unsigned char c)
{
SBUF = c;
while(!TI);
TI = 0;
}
void SendStr(unsigned char *p)
{
while(*p!= '\0')
{
SendOneByte(*p);
p++;
}
}
注意:AT89C51RD2的晶振要设置为11.0592MHz
调试
proteus点击运行。
在串口调试助手里面,我们发送 X 字符,会收到AT89C51发送回来的命令。
仿真源文件
仿真文件放在了https://download.csdn.net/download/cw_huang/85244407
下载后,使用proteus8.7打开,需要添加虚拟串口对COM1 COM2
仿真程序使用的是COM1 9600 N 8 1
使用SSCOM打开COM2,9600.
运行仿真程序,可以接收到字符串“hello world”
发送字符‘X’,程序会回应“hello world”