51单片机的串口通信问题。。

2019-07-15 15:55发布

发送数据里到底要不要关闭中断?
如果先关闭了串口中断的话,等待发送完毕后,再打开串口中断,那么在发送数据的等待期间内,如果收到了数据,将不能进入中断函数,也就不会保存的这个新收到的数据。
如果发送数据之前,没有关闭串口中断的话,反而让发送引起的中断,执行了接收中断的程序。

所以这个到底要怎么办。。。求大神讲解一番。。看郭天祥的是直接把串口中断关掉了。。。

#include<reg52.h>
unsigned char flag,a;
void main()
{
        TMOD=0x20;
        TH1=0xfd;
        TL1=0xfd;
        TR1=1;
        REN=1;
        SM0=0;
        SM1=1;
        EA=1;
        ES=1;
        while(1)
                {
                        if(flag==1)
                                {       
                                        ES=0;
                                        flag=0;
                                        SBUF=a;
                                        while(!ti);
                                        TI=0;
                                        ES=1;
                                }
}
       
}
void ser() interrupt 4
{
        RI=0;
        P1=SBUF;
        a=SBUF;
        flag=1;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
aleng
1楼-- · 2019-07-15 20:39
太久没看51居然给忘得差不多了。。不好意思手头没资料,帮顶先
xiaosong000
2楼-- · 2019-07-15 21:08
发送和接收两者触发的中断是可以通过寄存器判断的
刘方南
3楼-- · 2019-07-16 01:28
 精彩回答 2  元偷偷看……
a62501536
4楼-- · 2019-07-16 07:27
xiaosong000 发表于 2015-10-18 11:57
发送和接收两者触发的中断是可以通过寄存器判断的

怎么判断??。。。。。。。。。。。。。
xiaosong000
5楼-- · 2019-07-16 11:15
a62501536 发表于 2015-10-18 16:45
怎么判断??。。。。。。。。。。。。。

TI:发送中断标志,RI:接收中断标志位。

一周热门 更多>