打印
[STC单片机]

串口通信只能发送,接收不到数据的些许疑惑

[复制链接]
楼主: qq543538634
手机看帖
扫描二维码
随时随地手机跟帖
21
qq543538634 发表于 2016-8-16 15:46
版主。。
#include
#include

中断程序该接收还是要接受的呀

使用特权

评论回复
22
王太晓| | 2016-8-16 16:59 | 只看该作者
..............................................

使用特权

评论回复
23
qq543538634|  楼主 | 2016-8-16 17:12 | 只看该作者
ningling_21 发表于 2016-8-16 16:15
使用内部振荡器还是外部晶振?
另:试试发送接收都用查询方式


虽然不知道为什么都是乱码,但终于出结果了
版主我爱你!!!我去把周边人全部发展来注册论坛。
不过。。为嘛先前那个程序就不对呢  为什么要用到auxr这个辅助寄存器,以前上课老师都从来没提到过。。还有为什么现在是没意义的乱码呢。。
我先自己去找寻下答案,不能一味的等着人来教。
现贴出代码 供同意问题的同学参考。
#include<reg51.h>
#include<intrins.h>
unsigned int i;
unsigned char temp;
sfr AUXR=0x8e;
void init_serial()         //初始化串口
{                              //定时器T0使用工作方式1,波特率9600bit/s,允许接收晶振33.1776  
SCON=0X50;  
AUXR|=0X04;  
TH0=0xa0;
TL0=0xfc;  
TMOD=0X02;           //设置初值  
AUXR|=0X10;  
TI=1;  
EA=1;  
}


void main(void)
{
    while(1)
{
   temp=SBUF;
   SBUF=temp;
   while(TI==0);
   TI=0;
   }
}        

  void UART_SER(void)interrupt 3
{      
    if(RI == 1)  RI = 0;
}         


360截图-29661812.jpg (396.84 KB )

360截图-29661812.jpg

使用特权

评论回复
24
qq543538634|  楼主 | 2016-8-16 17:18 | 只看该作者
ningling_21 发表于 2016-8-16 16:44
只能用T2做串口波特率发生器,且要查询方式使用

代码里的TH2 TL1(T2H T2L) keil说没有定义。我没办法就把它改成T0计数器了啦。。

使用特权

评论回复
25
qq543538634|  楼主 | 2016-8-16 17:20 | 只看该作者
heishe1989 发表于 2016-8-16 16:46
中断程序该接收还是要接受的呀

while(1)
{
   temp=SBUF;
   SBUF=temp;
   while(TI==0);
   TI=0;
这句话含义不是把单片机接收放到temp里,然后再把数据返回给pc端么。。

使用特权

评论回复
评论
ningling_21 2016-8-16 17:22 回复TA
是的 
26
ningling_21| | 2016-8-16 17:22 | 只看该作者
qq543538634 发表于 2016-8-16 17:18
代码里的TH2 TL1(T2H T2L) keil说没有定义。我没办法就把它改成T0计数器了啦。。 ...

有些没定义的寄存器需要自己定义

使用特权

评论回复
27
coody| | 2016-8-16 17:47 | 只看该作者
这么有空闲时间折腾。。。
为什么不用STC官方的例程测试?

使用特权

评论回复
28
qq543538634|  楼主 | 2016-8-16 17:59 | 只看该作者
coody 发表于 2016-8-16 17:47
这么有空闲时间折腾。。。
为什么不用STC官方的例程测试?


你说的是这个吗...?官方的定义风格好深奥

使用特权

评论回复
29
zhouyuting| | 2016-8-16 18:15 | 只看该作者
学习一下

使用特权

评论回复
30
warrn| | 2016-8-16 19:47 | 只看该作者
串口中断打开了吗?

使用特权

评论回复
31
warrn| | 2016-8-16 19:49 | 只看该作者
ES=1;

使用特权

评论回复
32
waiter| | 2016-8-17 08:04 | 只看该作者
别的问题,围观!
“还有为什么现在是没意义的乱码呢。”,这个问题,我可以答? 呵呵,估计是你在之前哪个地方用了一个中文字符,或者输入过汉字,编辑器删除字符的时候,删除了“半个”汉字---- 因为一个汉字占两个字符,你删除了一个,剩下的就全是乱码了。

使用特权

评论回复
33
qq543538634|  楼主 | 2016-8-17 11:18 | 只看该作者
waiter 发表于 2016-8-17 08:04
别的问题,围观!
“还有为什么现在是没意义的乱码呢。”,这个问题,我可以答? 呵呵,估计是你在之前哪个 ...

我把它重新输入了一遍,问题依旧。。。

使用特权

评论回复
34
qq543538634|  楼主 | 2016-8-17 11:45 | 只看该作者
本帖最后由 qq543538634 于 2016-8-17 11:55 编辑
ningling_21 发表于 2016-8-16 17:22
有些没定义的寄存器需要自己定义

用查询方式跟定时器T2。。还是不对   。




#include<reg51.h>
#include<intrins.h>
unsigned int i;
unsigned char temp;
sfr AUXR=0x8e;
sfr        TH2  = 0xD6;
sfr        TL2  = 0xD7;
void init_serial()                     //初始化串口
{                                         //定时器T2使用工作方式1,波特率9600bit/s,允许接收晶振33.1776  
       SCON=0X50;  
       AUXR|=0X04;  
       TL2=0xa0;                   //设置初值  
       TH2=0xfc;  
       AUXR|=0X10;              
       TI=1;  
       EA=1;
       ES=1;  
}


void main(void)
{   
    while(1)
   {
    temp=SBUF;
    _nop_();
    SBUF=temp;
    while(RI==1);  }
        {
           RI=0;
         }
    while(TI==1);
       {
          TI=0;
        }
}


使用特权

评论回复
35
qq543538634|  楼主 | 2016-8-17 11:54 | 只看该作者
ningling_21 发表于 2016-8-16 17:22
有些没定义的寄存器需要自己定义

就这样一直给我回复000000000000000,我给他发送1111111他也不会回我。。。。每回发32个字节‘



使用特权

评论回复
36
ningling_21| | 2016-8-17 17:29 | 只看该作者
qq543538634 发表于 2016-8-17 11:54
就这样一直给我回复000000000000000,我给他发送1111111他也不会回我。。。。每回发32个字节‘

打个电话:0513-55012928,55012929,55012966

使用特权

评论回复
37
qq543538634|  楼主 | 2016-8-19 09:21 | 只看该作者
为什么不能点满意答案结贴啊。。

使用特权

评论回复
38
daijy| | 2016-8-19 12:09 | 只看该作者
看了下,我也不清楚什么原因

使用特权

评论回复
39
HARRY007| | 2016-8-21 20:52 | 只看该作者
你都用的STC15还包含reg51.h这个头文件……上STC官网下载最新的头文件和对用的例程代码,站在别人的肩膀上走的快

使用特权

评论回复
40
chiroudetuzi| | 2016-8-21 21:47 | 只看该作者
第1 我没有看到 init_serial()这个函数被调用,第2 在主程序中有这样的指令 temp=SBUF;
    _nop_();   SBUF=temp;而且这几条命令在一直循环执行,假设通信正常的情况下,如果SBUF为空(也就是0),temp也就是等于0,然后将0通过串口发送出去,应该收到的是0000000……吧,第3 while(RI==1);  }      { RI=0; },花括号使用有问题吧,编译器没提示吗??

使用特权

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

本版积分规则