amobbs.com 阿莫电子技术论坛
标题:
BL9148(BN9148)红外解码程序,接受头用HS0038B
[打印本页]
作者:
mahui625
时间:
2006-12-26 13:38
标题:
BL9148(BN9148)红外解码程序,接受头用HS0038B
菜鸟的作品,请DX指点。硬件:atmega48 ,红外接收头HS0038B。这个接收头效果超级好,建议阿莫能采购一批。软件环境:winavr(gcc).
元件规格书:
点击此处打开armok01139128.pdf
点击此处打开armok01139129.pdf
source code:
点击此处下载armok01139130.rar
作者:
mahui625
时间:
2006-12-26 13:39
使用串口来调试的,可以很方便看到结果
作者:
mahui625
时间:
2006-12-26 13:43
有点疑惑,采用阿莫新手入门那个外部中断范例中检测int0管脚电平的办法,检测到的电平一直是0。这个写法if ((PIND&(1<<PD2))==0),结果不正确。而用这样的if (PIND&(1<<PD2))就完全正确。请问是什么原因了。注意:我是在int0的中断程序检测int0管脚电平的。
作者:
lrzxc
时间:
2006-12-26 13:45
我顶一下
作者:
onorg
时间:
2006-12-26 21:41
if (PIND&(1<<PD2))
在判断语句里面用“&”操作不会警告?
要用逻辑与“&&”
或者因该把if ((PIND&(1<<PD2))==0)
改为i = PIND&(1<<PD2) ; if (i==0);
作者:
bozai
时间:
2006-12-26 21:48
if ((PIND&(1<<PD2))==0)
if (PIND&(1<<PD2))
这两句话又不是一个意思,怎么做起比较了。
两个完全相反,当然是一个正确一个错了。
if ((PIND&(1<<PD2))==0) 是判断当PD2等于0时执行
而if (PIND&(1<<PD2))则是判断当PD2等于1时执行
作者:
mahui625
时间:
2006-12-28 09:29
原来是用的PIND&(1<<PD2))==1来做的,但是奇怪不能得到正确的结果,改用PIND&(1<<PD2)就没有问题了
作者:
AVR-MEGA128
时间:
2006-12-28 09:41
PIND&(1<<PD2))==1 当然不等于1拉
作者:
bozai
时间:
2006-12-28 09:43
没什么好奇怪的,0xXX & 0x04 能得到 0x01的结果吗?
作者:
mahui625
时间:
2006-12-28 12:41
是哦。所以那个范例是不是有问题。搞的我郁闷一天.
作者:
mahui625
时间:
2006-12-28 12:44
理解了,小问题搞的。现在知道怎么搞了。
作者:
manmaxiaowei
时间:
2023-5-8 22:34
厉害了楼主!
作者:
manmaxiaowei
时间:
2023-5-8 22:35
厉害了楼主!!!!!!!!!!!!!!!
欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/)
Powered by Discuz! X3.4