搜索
bottom↓
回复: 12
打印 上一主题 下一主题

BL9148(BN9148)红外解码程序,接受头用HS0038B

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2006-12-26 13:38:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
菜鸟的作品,请DX指点。硬件:atmega48 ,红外接收头HS0038B。这个接收头效果超级好,建议阿莫能采购一批。软件环境:winavr(gcc).

元件规格书:

点击此处打开armok01139128.pdf

点击此处打开armok01139129.pdf

source code:

点击此处下载armok01139130.rar

出0入0汤圆

2
 楼主| 发表于 2006-12-26 13:39:43 | 只看该作者
使用串口来调试的,可以很方便看到结果

出0入0汤圆

3
 楼主| 发表于 2006-12-26 13:43:55 | 只看该作者
有点疑惑,采用阿莫新手入门那个外部中断范例中检测int0管脚电平的办法,检测到的电平一直是0。这个写法if ((PIND&(1<<PD2))==0),结果不正确。而用这样的if (PIND&(1<<PD2))就完全正确。请问是什么原因了。注意:我是在int0的中断程序检测int0管脚电平的。

出0入0汤圆

4
发表于 2006-12-26 13:45:46 | 只看该作者
我顶一下

出0入0汤圆

5
发表于 2006-12-26 21:41:26 | 只看该作者
if (PIND&(1<<PD2))

在判断语句里面用“&”操作不会警告?

要用逻辑与“&&”

或者因该把if ((PIND&(1<<PD2))==0)

改为i = PIND&(1<<PD2) ; if (i==0);

出0入0汤圆

6
发表于 2006-12-26 21:48:52 | 只看该作者
if ((PIND&(1<<PD2))==0)

if (PIND&(1<<PD2))

这两句话又不是一个意思,怎么做起比较了。

两个完全相反,当然是一个正确一个错了。



if ((PIND&(1<<PD2))==0) 是判断当PD2等于0时执行

而if (PIND&(1<<PD2))则是判断当PD2等于1时执行

出0入0汤圆

7
 楼主| 发表于 2006-12-28 09:29:19 | 只看该作者
原来是用的PIND&(1<<PD2))==1来做的,但是奇怪不能得到正确的结果,改用PIND&(1<<PD2)就没有问题了

出0入0汤圆

8
发表于 2006-12-28 09:41:45 | 只看该作者
PIND&(1<<PD2))==1 当然不等于1拉

出0入0汤圆

9
发表于 2006-12-28 09:43:18 | 只看该作者
没什么好奇怪的,0xXX & 0x04 能得到 0x01的结果吗?

出0入0汤圆

10
 楼主| 发表于 2006-12-28 12:41:51 | 只看该作者
是哦。所以那个范例是不是有问题。搞的我郁闷一天.

出0入0汤圆

11
 楼主| 发表于 2006-12-28 12:44:46 | 只看该作者
理解了,小问题搞的。现在知道怎么搞了。

出0入0汤圆

12
发表于 2023-5-8 22:34:38 | 只看该作者
厉害了楼主!

出0入0汤圆

13
发表于 2023-5-8 22:35:30 | 只看该作者
厉害了楼主!!!!!!!!!!!!!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 17:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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