proteus串口仿真问题

2019-03-24 17:46发布

问题描述:
       我用串口发送的数据既有字符,又有十六进制数。其中,发送的字符123ab时,在virtual terminal中有显示,但是程序不运行;而发送十六进制数01时,
virtual terminal没有显示,程序确运行正确,求大神指点~~~ 谢谢
PS:用开发板时,发送字符123ab,十六进制数01,都运行正确!



未命名.bmp

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit led=P1^0;
uchar i,flag,j;

void uart_initial()
{
        TMOD=0x20;
        TH1=0xfd;
        TL1=0xfd;
        TR1=1;
        SCON=0x50;
        EA=1;
        ES=1;
}

void main()
{
        uart_initial();
        while(1)
        {
                if(flag==1)
                {
                        ES=0;
                        flag=0;
                        switch(i)
                        {
                                case 'a':led=0;break;
                                case 'b':P1=0xf0;break;
                                case '1':P1=0xf2;break;
                                case '2':P1=0xf4;break;
                                case '3':P1=0xf8;break;
                                case 0x01:j++;P1=j;break;
               
                        }
                        ES=1;
                }
        }

}

void serial() interrupt 4
{
        RI=0;
        i=SBUF;
        flag=1;
}

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
qwqwqw2088
1楼-- · 2019-03-25 02:56
proteus+串口调试助手
单片机虚拟终端的选项作用如下: 360截图20160123160511839.jpg

输入的是ASCII码,那就不要勾选Hex Display mode
输入的是16进制,那就要勾选Hex Display mode

tangrui1220
2楼-- · 2019-03-25 05:27
原因找到了,早先把单片机的晶振设置成12MHz了,改成11.0592MHz就没问题了,程序正确运行
ywlzh
3楼-- · 2019-03-25 09:19
 精彩回答 2  元偷偷看……
eyecf
4楼-- · 2019-03-25 12:45
不错 看看  真不错
eyecf
5楼-- · 2019-03-25 17:22
串口仿真测试  谢谢分享
EE_MCU
6楼-- · 2019-03-25 18:15
 精彩回答 2  元偷偷看……

一周热门 更多>