单片机串口收不到数据

[复制链接]
1402|9
 楼主| damoyeren 发表于 2014-11-4 21:00 | 显示全部楼层 |阅读模式
  1. //串口收不到数据
  2. # include "recevie.h"
  3. uint8 a = 0xff;
  4. sbit led0 = P0^0;
  5. void uart_init()
  6. {        //SCON:SM0 SM1 SM2 REN TB8 RB8 TI RI
  7.         SCON = 0X50;//串口工作在方式1,不允许发送中断和接收中断(赋值50也行,本程序只有一个发送程序,故没让接收允许,REN=0)
  8.         TMOD = 0X20;//T1定时器工作在方式2,自动重装模式
  9.         TH1  = 0XFD;
  10.         TL1  = 0XFD;//T1定时器赋初值
  11.         TR1  = 1;
  12. }


  13. int uart_recevie ()
  14. {
  15.         if (RI)
  16.                 {        
  17.                         a = SBUF;
  18.                         RI = 0;
  19.                         led0 = 0;
  20.                 }
  21.         return a;         
  22. }

  23. void  main ()
  24. {
  25.         enled = 0;
  26.         addr3 = 1;

  27.         addr0 = 0;
  28.         addr1 = 1;
  29.         addr2 = 1;

  30.         uart_init();
  31.         P0 = uart_recevie ();        
  32. }

ningling_21 发表于 2014-11-5 11:48 | 显示全部楼层
尽量用中断接收
NE5532 发表于 2014-11-5 12:00 | 显示全部楼层
发送数据调通了么??
xmar 发表于 2014-11-5 16:35 | 显示全部楼层
1.   SCON = 0X50;//串口工作在方式1,不允许发送中断和接收中断,只有一个发送程序,故没让接收允许,REN=0。

2.   a = SBUF;   改为: char a = SBUF; (a 未定义)
 楼主| damoyeren 发表于 2014-11-5 20:41 | 显示全部楼层
ningling_21 发表于 2014-11-5 11:48
尽量用中断接收

为什么这样讲
 楼主| damoyeren 发表于 2014-11-5 20:42 | 显示全部楼层
xmar 发表于 2014-11-5 16:35
1.   SCON = 0X50;//串口工作在方式1,不允许发送中断和接收中断,只有一个发送程序,故没让接收允许,REN= ...

a在第二行就定义了啊
 楼主| damoyeren 发表于 2014-11-5 20:43 | 显示全部楼层
NE5532 发表于 2014-11-5 12:00
发送数据调通了么??

通了
NE5532 发表于 2014-11-5 20:55 | 显示全部楼层
你的主循环在什么地方??这段时间提问的,不写主循环的越来越多啊。
ningling_21 发表于 2014-11-6 08:53 | 显示全部楼层
damoyeren 发表于 2014-11-5 20:41
为什么这样讲

另,怎么没有while(1) {} 的死循环呢
samglz 发表于 2014-11-10 15:51 | 显示全部楼层
你的main函数上没有while(1) { } 程序只会执行一次就不执行了。。whlie(1) {P0 = uart_recevie ();}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

126

主题

393

帖子

2

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