打印

单片机串口收不到数据

[复制链接]
1028|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
damoyeren|  楼主 | 2014-11-4 21:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//串口收不到数据
# include "recevie.h"
uint8 a = 0xff;
sbit led0 = P0^0;
void uart_init()
{        //SCON:SM0 SM1 SM2 REN TB8 RB8 TI RI
        SCON = 0X50;//串口工作在方式1,不允许发送中断和接收中断(赋值50也行,本程序只有一个发送程序,故没让接收允许,REN=0)
        TMOD = 0X20;//T1定时器工作在方式2,自动重装模式
        TH1  = 0XFD;
        TL1  = 0XFD;//T1定时器赋初值
        TR1  = 1;
}


int uart_recevie ()
{
        if (RI)
                {        
                        a = SBUF;
                        RI = 0;
                        led0 = 0;
                }
        return a;         
}

void  main ()
{
        enled = 0;
        addr3 = 1;

        addr0 = 0;
        addr1 = 1;
        addr2 = 1;

        uart_init();
        P0 = uart_recevie ();        
}

相关帖子

沙发
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 未定义)

使用特权

评论回复
5
damoyeren|  楼主 | 2014-11-5 20:41 | 只看该作者
ningling_21 发表于 2014-11-5 11:48
尽量用中断接收

为什么这样讲

使用特权

评论回复
6
damoyeren|  楼主 | 2014-11-5 20:42 | 只看该作者
xmar 发表于 2014-11-5 16:35
1.   SCON = 0X50;//串口工作在方式1,不允许发送中断和接收中断,只有一个发送程序,故没让接收允许,REN= ...

a在第二行就定义了啊

使用特权

评论回复
7
damoyeren|  楼主 | 2014-11-5 20:43 | 只看该作者
NE5532 发表于 2014-11-5 12:00
发送数据调通了么??

通了

使用特权

评论回复
8
NE5532| | 2014-11-5 20:55 | 只看该作者
你的主循环在什么地方??这段时间提问的,不写主循环的越来越多啊。

使用特权

评论回复
9
ningling_21| | 2014-11-6 08:53 | 只看该作者
damoyeren 发表于 2014-11-5 20:41
为什么这样讲

另,怎么没有while(1) {} 的死循环呢

使用特权

评论回复
10
samglz| | 2014-11-10 15:51 | 只看该作者
你的main函数上没有while(1) { } 程序只会执行一次就不执行了。。whlie(1) {P0 = uart_recevie ();}

使用特权

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

本版积分规则

126

主题

393

帖子

2

粉丝