51 串口发送的一个问题

[复制链接]
 楼主| frankfly 发表于 2008-1-3 09:37 | 显示全部楼层 |阅读模式
程序如下,大家看看
#include<reg52.h>
delay(int i)
{
int j;
for(;i>0;i--)
  for(j=0;j++;j<0);
}
send_char(char c)
{
SBUF=c;
while(TI==0);
TI=0;
}
send(char *ch,int len)
{
int i=0;
do
{
  send_char(*(ch+i));
   i++;
  }while(i<len) ;
}
main()
{
IE=0x00;   
SCON=0x50; 
TMOD=0x20; 
PCON=0x80;                                 
TH1=0xFA;                                      
TR1=1;
    send("hello everybody!",17);
   send_char(0x55);
   delay(500);
   }
此程序能正常显示: hello everybody!U
但是如果注释了send("hello everybody!",17);,就会不停显示U,何解?
computer00 发表于 2008-1-3 10:29 | 显示全部楼层

没有主循环...跑飞了。最后加个while(1);让它停住

 楼主| frankfly 发表于 2008-1-3 10:35 | 显示全部楼层

原来是圈圈大虾

为什么加上 send("hello everybody!",17);后
就可以正常显示了阿
computer00 发表于 2008-1-3 11:14 | 显示全部楼层

那是因为它飞到另外一个地方去了...

你用软件仿真调试一下,运行到main函数最后,你看它返回到哪去了?肯定乱了。

第一个估计刚好堆栈里面内容为0,所以返回就复位了...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

68

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部