OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5236|回复: 12

一个简单的串口通讯,但是有个问题一直搞不定,求指教!

[复制链接]

8

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2015-1-3
在线时间
0 小时
发表于 2015-3-28 16:57:34 | 显示全部楼层 |阅读模式
5金钱
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar flag;
sbit key=P2^0;
sbit led=P0^0;
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--)
        ;
}
void init()
{
         TMOD=0x21;        //计时器1工作在方式2
         TH1=0xfd;         //设初值,TH1的值自动重装到TL1
         TL1=0xfd;
         
         TH0=(65535-50000)/256;
         TL0=(65535-50000)%256;
         ET0=1;
         
         SCON=0x50;
         CON=0x80;
         TR1=1;           //开计时器
         EA=1;            //开总中断
         ES=1;
}

void main()
{
         
         init();
         0=0;
         while(1)
         {        
                  while(key==1);
                  SBUF=0xff;
                        while(!TI);
                        TI=0;
                        led=0;
                  while(!flag);
                        flag=0;
                  led=1;
                        
         }
}
void ser() interrupt 4
{
        RI=0;
        if(SBUF==0xff)
        {        
                flag=1;
        }
}
这段程序的功能是按键发送一个ff,发光二极管是灭的,然后接收一个ff,二极管亮。
问题在于第一次发送ff,正常,接收灯亮,
从第二次开始,按下后会发送很多ff,不用接收二极管常亮,个人感觉问题出在flag上,但是flag我有清零,又或者说发送进入中断使flag变一,但是,为什么呢?

最佳答案

查看完整内容[请看2#楼]

if(RI==1&&SBUF=0XFF) {     RI=0;          .    ............ } 既然用到了中断还要搞多一个标志位。。。??还有串口中断是先判断收发标志位的,再往下处理的。。。
加油加油加油
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

374

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1309
金钱
1309
注册时间
2014-7-23
在线时间
418 小时
发表于 2015-3-28 16:57:35 | 显示全部楼层
if(RI==1&&SBUF=0XFF)
{
    RI=0;          .
   ............
}
既然用到了中断还要搞多一个标志位。。。??还有串口中断是先判断收发标志位的,再往下处理的。。。
回复

使用道具 举报

58

主题

6291

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11406
金钱
11406
注册时间
2014-4-1
在线时间
1282 小时
发表于 2015-3-28 17:08:51 | 显示全部楼层
while(!flag)

少点什么?
回复

使用道具 举报

8

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2015-1-3
在线时间
0 小时
 楼主| 发表于 2015-3-29 10:36:34 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
嗯,的确少了一个(;)本来我写了,后来改的时候拉了,但加上他还是老样子
加油加油加油
回复

使用道具 举报

70

主题

6697

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12687
金钱
12687
注册时间
2012-11-26
在线时间
3710 小时
发表于 2015-3-29 10:44:59 | 显示全部楼层
回复【4楼】水天一色:
---------------------------------
楼主 你逻辑有问题 好好检查下吧
学无止境
回复

使用道具 举报

8

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2015-1-3
在线时间
0 小时
 楼主| 发表于 2015-3-29 11:04:41 | 显示全部楼层
回复【3楼】guset_03:
---------------------------------
谢谢,你改的很好。加了一个标志位是麻烦,我的疑惑在于SBUF的判断,发送也会进入中断,但是我觉得不会进入if语句呀,SBUF==0xff,不应该是接收SBUF的判断吗?
加油加油加油
回复

使用道具 举报

8

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2015-1-3
在线时间
0 小时
 楼主| 发表于 2015-3-29 11:27:52 | 显示全部楼层
回复【5楼】jermy_z:
---------------------------------
逻辑.....我自己看不出呀。。。
加油加油加油
回复

使用道具 举报

70

主题

6697

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12687
金钱
12687
注册时间
2012-11-26
在线时间
3710 小时
发表于 2015-3-29 11:35:46 | 显示全部楼层
回复【7楼】水天一色:
---------------------------------
你这样的逻辑。。。。完全没逻辑
学无止境
回复

使用道具 举报

8

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2015-1-3
在线时间
0 小时
 楼主| 发表于 2015-3-29 11:53:16 | 显示全部楼层
回复【8楼】jermy_z:
---------------------------------
我是求指点,看热闹的绕道
加油加油加油
回复

使用道具 举报

70

主题

6697

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12687
金钱
12687
注册时间
2012-11-26
在线时间
3710 小时
发表于 2015-3-29 12:34:37 | 显示全部楼层
回复【9楼】水天一色:
---------------------------------
呵呵
学无止境
回复

使用道具 举报

头像被屏蔽

6168

主题

7036

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
19705
金钱
19705
注册时间
2012-12-27
在线时间
25 小时
发表于 2015-3-30 16:35:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

8

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2015-1-3
在线时间
0 小时
 楼主| 发表于 2015-3-30 22:20:26 | 显示全部楼层
回复【11楼】xouou_53320:
---------------------------------
我知道一点了,因为中断里的SBUF从第一次接收到ff后,接收SBUF不会自动清零,我原本以为接完后后它就自动清除了,O(∩_∩)O谢谢
加油加油加油
回复

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2012-10-9
在线时间
10 小时
发表于 2015-4-2 13:32:11 | 显示全部楼层
楼主 你的逻辑不行把
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 08:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表