打印

请教一下一个关于proteus仿真51串口的问题!!!

[复制链接]
2550|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhaigch|  楼主 | 2011-3-10 20:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我在proteus中仿真51单片机的串口,我使用了proteus中的compim这个东西,通过虚拟串口,和计算机上的串口调试助手进行,仿真!可是单片机只能收到串口调试助手发来的数据,而串口调试助手 却显示不了单片机发来的数据! 想请教下为什么?是proteus本身的问题还是我的程序的问题?

电路.PNG (68.79 KB )

电路.PNG

相关帖子

沙发
zhaigch|  楼主 | 2011-3-10 20:21 | 只看该作者
程序如下:
#include <reg51.h>


#define uchar         unsigned char
uchar recv_buff=0;
uchar flag=0;
void init()
{
        SCON=0x50;   //串行工作方式1,允许接收数据
        TMOD=0x20; //定时器1 ,方式2,自动重装的8位定时器
        PCON=0x00; //波特率不加倍
        TH1=0xFA; //波特率为4800
        TL1=0xFA;
        TR1=1; //定时器开启
        EA=1;    //开中断
        ES=1; //串行口中断允许位
}

void send_char(uchar one_bit)
{
        SBUF=one_bit;
        while(TI==0);
        TI=0;
}

void delay(uchar temp1)
{                 
        unsigned int temp2;
        for(;temp1<200;temp1++)
                for(temp2=0;temp2<50000;temp2++);
}

void main(void)
{
        init();
       
        while(1)
        {
                if(flag==1)
                {
                        flag=0;
                        ES=0;
                        send_char(recv_buff);
                        delay(100);
                        ES=1;                               
                }

        }
}


void UART_SER(void) interrupt 4 using 0
{
        if(RI==1)
        {
                recv_buff=SBUF;
                P1=recv_buff;
                RI=0;
                flag=1;
        }       
}

使用特权

评论回复
板凳
zhaigch|  楼主 | 2011-3-10 20:22 | 只看该作者
波特率都设置成了4800.。。。。。

使用特权

评论回复
地板
zjswuyunbo| | 2011-3-11 23:15 | 只看该作者
别整这个了,赶紧弄实物

使用特权

评论回复
5
zhaigch|  楼主 | 2011-3-16 13:01 | 只看该作者
我错了,没有把晶震频率改成11.0592M

使用特权

评论回复
6
szdianzijie| | 2011-3-16 14:05 | 只看该作者
都看不懂!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

64

主题

158

帖子

1

粉丝