登录
首页 单片机论坛
回帖 发帖
正文

主题:大家帮我看看这个程序啊

点击:1681 回复:9

Tx_Char(Comand_Setled);
   TR0=1;
while(1)
{
recive[i]=Rx_OneChar();                                                      
i++;
if(TF0==1)
break;
}
TF0=0;
P2=recive[1];
   while(1);
 }
void Init_RS232(void)                                                      
 {
   TMOD=0x21;                                                                //定时器1工作模式2,自动装载
   SCON=0x50;                                                                //串口工作方式1,允许接收
   TH1=0xFD;
   TL1=0XFD;                                                                 //晶振频率11.0592mhz,波特率为11.0592误差为0%
TH0=0X19;                                                                 //定时为0.25ms
TL0=0X19;
PCON=0x80;                                                                //波特率倍增
   TR1=1;                                                                    //开始定时器                        
}
void Tx_Char(uchar *str)                                                      //发送子程序
{
   uint i=0;
   while(str[i]!=0xEE)
   {
   while(!TI);
SBUF=str[i];
   TI=0;
   i++;
   }
}
uchar Rx_OneChar(void)                                                         //接收子程序          
{
    while(!RI);
RI=0;
return SBUF;    
}
这个程序只能发送,不能接收,不知怎么的?
08-11-14 15:59
好难啊
08-11-14 21:18
2楼
该帖内容不符合相关规定!
08-11-14 22:34
同样的疑问:你用什么编程啊?
08-11-15 14:18
怎么这里面很多大侠都做其他的,还没有解答············就是c语言了
08-11-15 14:19
while(1)
{
recive[i]=Rx_OneChar();                                                      
i++;
if(TF0==1)
break;
}
在Tx_Char(Comand_Setled);
后定时0.25ms
TH0=0X19;                                                                 //定时为0.25ms
TL0=0X19;
如果定时到就停止接收串口数据了
可能是你发送数据后还没接收到数据就定时时间到了
所以收不到数据,可以吧定时时间延长,试下
08-11-16 16:22
不好意思,看漏了一点,是收到第一个数据后,如果定时到了,就退出接收了
因为P2=recive[1];
所以P2可能就没有输出了,你可以改成P2=recive[0];
或延长定时时间
08-11-16 16:25
发个汇编的吧。这个是C语言啊
08-11-17 09:49
不好意思啊,我习惯用c语言编,还有 downdown的朋友,接收数据时间长短不影响,因为数据命令一发送完毕,在几十个us内,就有数据发送,而且已经完毕,现在也不知道怎么办才通?
08-11-17 10:05
程序设置的波特率是9600,那么接收1个字节需要1ms,
而你延时是250us,所以最多只能收到一个字节后,就会退出接收程序。
你可以P2=recive[0];
这样就可以看到是不是可以收到数据。
要么就延长延时时间!
08-11-20 13:49

工控新闻

更多新闻资讯