【PROTEUS】使用PROTEUS与电脑串口调试助手进行通讯

新增虚拟串口对

使用虚拟串口软件,虚拟一对虚拟串口,如COM1–COM2
【PROTEUS】使用PROTEUS与电脑串口调试助手进行通讯_第1张图片

PORTEUS中增加串口控件COMPIM

在PROTEUS中增加一个串口控件,MCU使用AT89C51RD2
【PROTEUS】使用PROTEUS与电脑串口调试助手进行通讯_第2张图片

绘制原理图

原理图中仅包含了一个AT89C51和一个串口控件
【PROTEUS】使用PROTEUS与电脑串口调试助手进行通讯_第3张图片

设置串口控件属性

这里我们设置的属性要跟MCU的属性、串口调试助手的属性一致。
这儿我们都设置为"9600,N,8,1"
【PROTEUS】使用PROTEUS与电脑串口调试助手进行通讯_第4张图片

编写MCU发送程序

/******************************************************************
例程:
使用串口接受一个字符,如果字符为'X',则打印“Hello World!”,"9600,n,8,1"
*******************************************************************/
#include 

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的晶振要设置为115200

调试

proteus点击运行。
在串口调试助手里面,我们发送 X 字符,会收到AT89C51发送回来的命令。

【PROTEUS】使用PROTEUS与电脑串口调试助手进行通讯_第5张图片

你可能感兴趣的:(Proteus,MCS51)