打印
[AVR单片机]

51 串口的另外一个问题

[复制链接]
1143|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
frankfly|  楼主 | 2008-1-2 21:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序如下,大家看看
#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,何解?

相关帖子

沙发
ga333mao| | 2008-1-2 22:02 | 只看该作者

试试只让SEND_CHAR(0X55)只执行一次的结果。

使用特权

评论回复
板凳
frankfly|  楼主 | 2008-1-3 09:23 | 只看该作者

试了阿,不行啊

main()中改为
main()
{
IE=0x00;   
SCON=0x50; 
TMOD=0x20; 
PCON=0x80;                                 
TH1=0xFA;                                      
TR1=1;
   send_char(0x55);
   delay(500);
   }

于是单片机就不行的发U,也就是0x55

使用特权

评论回复
地板
pantodd| | 2008-1-3 16:37 | 只看该作者

程序中无主循环,不断发送U,是不是复位了。

使用特权

评论回复
5
computer00| | 2008-1-3 16:48 | 只看该作者

背后加个while(1)让它停住。

使用特权

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

本版积分规则

21

主题

68

帖子

0

粉丝