Protues虚拟串口通信仿真 及遇到的问题
本帖最后由 fengyuxiaoxiao 于 2012-5-18 12:59 编辑本人新手,最近两天在搞单片机串口通信,遇到了点问题:程序是根据郭天翔的例子写的,我在自己的开发板里能够通过,但是用Protues 仿真的时候就出现问题 程序:#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]=" I get";
uchar code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0xc,39,0x5e,0x79,0x71};
ucharflag,a,i;
void init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
// SCON=0x50;
EA=1;
ES=1;
}
void main()
{P1=0xf0;
P0=0x3f;
P2=0xff;
init();
while(1)
{
if(flag==1)
{ ES=0;
for(i=0;i<7;i++)
{
SBUF=table;
while(!TI);
TI=0;
}
SBUF=a;
while(!TI);
TI=0;
flag=0;
ES=1;
P0=table1;
}
}
}
void ser()interrupt 4
{
RI=0;
a=SBUF;
flag=1;
}
就是还没发送数据,单片机就已经接收到数据了,一次发出6个 I get,请问高手能告诉我这是什么原因? 这是个虚拟串口工具 attach://18408.zip 楼主啊,protues里面那个串口是不需要MAX232做电平转换的,默认是转换过的~你接了个232是不对的~ 我删了,但是还是有问题,单片机都不发出数据了,貌似没有收到数据,收到数据数码管 应该显示的,虚拟窗口也没有 提示 貌似右边的虚拟表要连rxd 不知道我的回答是不是晚了点,
1貌似你的table【】中并没有7个字符。
2郭天祥的这个列子在初始化中不应该这样写,直接写SCON=0X50就不会有串口干扰的问题。
3protues仿真的时候,收集到的输入数字并不是你数字键盘上的1 2 3.....9,而是对应数字的十进制ASCII码。
页:
[1]