求助、学习51中、串口通信的问题

2019-07-15 23:29发布

#include<reg52.h>
#define uchar unsigned char
main()
{
        REN=1;
        TMOD=0x20;
        TH1=0xfd;
        TL1=0xfd;
        TR1=1;
//        EA=1;
//        ES=1;
        SM0=0;
        SM1=1;
        while(1)
        {
                if(RI==1)
                        {        RI=0;
                                P1=SBUF;
                        }
        }
}
void rx() interrupt 4
{
        RI=0;
        P1=SBUF;
}
上面这个程序、在用串口调试助手、向单片机传输数据、单片机接收数据 的时候只能接受一次、然后就算再次改变串口调试助手的数值、单片机的二极管却不会再变化、而把串口调试助手的、关闭串口按钮、然后再次点、开启串口、按钮、就又可以向单片机传输一次数据、为什么啊、是因为我用的USB接口、而不是串口的问题吗、、?

改成这种就可以实现、串口调试助手与单片机的、多次传输数据了、
#include<reg52.h>
#define uchar unsigned char
uchar a,flag;
void main()
{       
        TMOD=0x20;
        TH1=0xfd;
        TL1=0xfd;
        TR1=1;
        SM0=0;
        SM1=1;
        EA=1;
        ES=1;
        REN=1;
        PCON=0x80;
        while(1)
        {
                if(flag==1)
                {
                        ES=0;
                        flag=0;
                        SBUF=a;
                        while(!ti);
                        TI=0;
                        ES=1;
                }
        }
}

void serial() interrupt 4
{
        P1=SBUF;
        a=SBUF;
        flag=1;
        RI=0;
}
为什么啊、希望高手指点、

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
dongyumin
1楼-- · 2019-07-16 02:48
 精彩回答 2  元偷偷看……
PWR
2楼-- · 2019-07-16 03:25
不懂....................................
笨蛋、跟着我
3楼-- · 2019-07-16 06:47
和我当时遇到的问题一模一样,用中断法就OK了,具体为什么用查询不行?我也不清楚
zhchzh
4楼-- · 2019-07-16 10:48
笨蛋、跟着我 发表于 2013-7-25 23:05
和我当时遇到的问题一模一样,用中断法就OK了,具体为什么用查询不行?我也不清楚 ...

同样遇到此问题。。。
leitiechui
5楼-- · 2019-07-16 13:17
dongyumin 发表于 2013-7-25 21:23
这个···这个···还真没遇到过。一般我都用中断接收。你换个串口助手试试。 ...

、用中断接受的时候、就可以重复多次了啊?
leitiechui
6楼-- · 2019-07-16 14:46
 精彩回答 2  元偷偷看……

一周热门 更多>