发新帖我要提问
12
返回列表
打印
[51单片机]

关于串口中断的问题,,,

[复制链接]
楼主: 浪浪云
手机看帖
扫描二维码
随时随地手机跟帖
21
浪浪云|  楼主 | 2013-10-7 13:27 | 只看该作者 回帖奖励 |倒序浏览
受不了了 发表于 2013-10-7 10:58
你程序这么短,那就把灯一路点过去好了,也就一会的事情,看究竟程序在哪里不是照你的意图运行 ...

关闭串口再打开可以发送但还是一次、、、再发送还得关闭  打开。。。何解???

使用特权

评论回复
22
NE5532| | 2013-10-7 14:58 | 只看该作者
在哪里填充了SBUF就在哪里检测TI。不填充是检测不到TI的自然要死机。

使用特权

评论回复
23
yirongfu| | 2013-10-7 15:23 | 只看该作者
串口助手的参数配置跟单片机这边的配置一样吧?

再不行,你就找个现成的程序烧上去看看是否是硬件问题。
对于51单片机自身来说,你的程序思路应该可以连续接收的,但你开发板什么情况不得而知,所以最好还是用开发板配套例程来验证一下。

使用特权

评论回复
24
sedatefire| | 2013-10-7 16:44 | 只看该作者
传说中的“死锁”

使用特权

评论回复
25
m564522634| | 2013-10-7 17:27 | 只看该作者
不是程序与电路的问题了,你看下你的硬件的设置吧孩子

使用特权

评论回复
26
m564522634| | 2013-10-7 17:32 | 只看该作者
把自己的开发板下载完以后要不要重新配置下短路帽,程序的话你每次发一个字节应该没什么问题了。还有下载完程序复位下单片机在发,51单片机串口和下载口是不是用的同一个串口,下载完复位,重新打开一次串口助手了

使用特权

评论回复
27
m564522634| | 2013-10-7 17:34 | 只看该作者
还有不要拿P1口直接读取SBUF里的数据去,应该先设一个变量读玩在去把这个变量给P1口

使用特权

评论回复
28
ntstar_zl| | 2013-10-7 19:43 | 只看该作者
各位大神是不是这样:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void init()
{
        TMOD=0x20;//定时器1工作方式2
        TH1=0xfd;
        TL1=0xfd;//初值波特率9600
        TR1=1;//开启定时器1
        REN=1;//允许串口中断
        SM0=0;
        SM1=1;//SCON   方式1
        EA=1;//开总中断
        ES=1;        //开串口中断
}
void main()
{      
        init();//初始化函数
        while(1);
}

void ser() interrupt        4        //串口中断
{
        RI=0;                //取消中断申请
        P1=SBUF;          //把接收到的值赋给P1  即发光二极管
        EA=1;//开总中断
        ES=1;        //开串口中断
}

使用特权

评论回复
29
NE5532| | 2013-10-7 19:52 | 只看该作者
ntstar_zl 发表于 2013-10-7 19:43
各位大神是不是这样:
#include
#define uint unsigned int

总中断个串口中断之类的中断允许标志,在上电初始化以后开一次就可以了,不用在中断里来回的开。

使用特权

评论回复
30
解博| | 2013-10-7 21:37 | 只看该作者
不要想了,肯定是程序的问题,慢慢搞,搞个两天就可以了。

使用特权

评论回复
31
浪浪云|  楼主 | 2013-10-9 08:57 | 只看该作者
解博 发表于 2013-10-7 21:37
不要想了,肯定是程序的问题,慢慢搞,搞个两天就可以了。

是串口助手的关系,我换了一个串口助手,结果正常了

使用特权

评论回复
32
corset| | 2013-10-11 14:26 | 只看该作者
怎么好像没有清中断标准位的命令?

使用特权

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

本版积分规则