[MCU] 怎样给一个标志位赋值的问题……求助!!!

[复制链接]
2544|12
 楼主| 单片机学习123 发表于 2013-10-25 15:10 | 显示全部楼层 |阅读模式
本帖最后由 单片机学习123 于 2013-10-25 16:32 编辑

本人用一个红外接收头接收红外编码,问题是:
在成功接收后,使标志位flag置1,
关键是,在不接收红外编码时,怎样使flag立即置0;
我的意思是,能不能 使 flag 只随 着红外接收头就收与否而变化!?
sunhq02 发表于 2013-10-25 15:19 | 显示全部楼层
成功接收后置一, 这个应该没什么好说的
置零的话有两种做法:
1. 成功接收置一, 经过若干时间之后置零
2. 成功接收置一, 被某个处理标志的程序读取标志之后, 由这个处理程序置零
 楼主| 单片机学习123 发表于 2013-10-25 15:30 | 显示全部楼层
本帖最后由 单片机学习123 于 2013-10-25 15:38 编辑
sunhq02 发表于 2013-10-25 15:19
成功接收后置一, 这个应该没什么好说的
置零的话有两种做法:
1. 成功接收置一, 经过若干时间之后置零


还有别的方法没?我的意思是,能不能 使 flag只随着红外接收头就收红外与否而变化!?
sunhq02 发表于 2013-10-25 15:49 | 显示全部楼层
这个一般这样处理
一旦接收到信号, 就置一
一旦经过t还没有接收到信号, 就置零
t根据你的红外通讯协议包长短而定
ayb_ice 发表于 2013-10-25 16:09 | 显示全部楼层
成功后,处理,处理后清零
 楼主| 单片机学习123 发表于 2013-10-25 16:09 | 显示全部楼层
sunhq02 发表于 2013-10-25 15:49
这个一般这样处理
一旦接收到信号, 就置一
一旦经过t还没有接收到信号, 就置零

这个方法可行,只不过对时间的掌控一定要做到很精确
 楼主| 单片机学习123 发表于 2013-10-25 16:15 | 显示全部楼层
ayb_ice 发表于 2013-10-25 16:09
成功后,处理,处理后清零

我的意思是,能不能 使 flag只随着红外接收头就收红外与否而变化!?
mfktuu 发表于 2013-10-25 16:18 | 显示全部楼层
请参考二楼
sunhq02 发表于 2013-10-26 08:28 | 显示全部楼层
单片机学习123 发表于 2013-10-25 16:09
这个方法可行,只不过对时间的掌控一定要做到很精确

恩,不过在多数时候不用特别精确
信号的协议决定了t的最小值
而两个信号的间隔决定了t的最大值
多数时候信号的间隔可能会很大
所以对t的取值多数时候不成问题
当然,具体情况下可能还有其他因素要考虑
很忙 发表于 2013-10-26 08:40 | 显示全部楼层
这个与你这个红外接收的写法有关系。你如果用的是中断的方式,那么我问你,接收完后,你在中断函数里FLAG置1了,在没有红外遥控的时候,中断不被触发,中断函数不跑,你怎么去清变量。所以只能用定时来处理。
你的意思可能是要表达这样一个目的。有红外接受的时候置1,没有的时候置0.这个如果你用中断的话没有什么意义吧。所以要看你是怎么写这个红外接收的。
16777216 发表于 2013-10-26 10:50 | 显示全部楼层
简单的方法 外接同一路信号到中断   一路接到中断  一路接到定时器 (51使用定时器gata位)
硬件多加一根线


16777216 发表于 2013-10-26 10:50 | 显示全部楼层
16777216 发表于 2013-10-26 10:50
简单的方法 外接同一路信号到中断   一路接到中断  一路接到定时器 (51使用定时器gata位)
硬件多加一根线
...

不过我感觉完全没必要啊 红外速度又不快
 楼主| 单片机学习123 发表于 2013-10-26 12:45 | 显示全部楼层
很忙 发表于 2013-10-26 08:40
这个与你这个红外接收的写法有关系。你如果用的是中断的方式,那么我问你,接收完后,你在中断函数里FLAG置 ...

嗯,我知道了,目前已经有了解决办法,和你的方法一样!非常感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

134

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部