完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
10个回答
|
|
|
|
|
|
谢谢楼主
|
|
|
|
新人帮顶
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include
***it IRIN = P3^2; //红外接收器数据线 void IRdelay(char x); //x*0.14MS void beep(); unsigned char IRCOM[7]; extern unsigned char Y0; extern void display(unsigned char Key_Val); /*******************************************************************/ void IRInit() { IE |= 0x81; //允许总中断中断,使能 INT0 外部中断 TCON |= 0x01; //触发方式为脉冲负边沿触发 IRIN=1; //I/O口初始化 } /**********************************************************/ void IR_IN(void) interrupt 0 { unsigned char j,k,N=0; EX0 = 0; IRdelay(5); if (IRIN==1) { EX0 =1; return; } //确认IR信号出现 while (!IRIN) //等IR变为高电平,跳过9ms的前导低电平信号。 { IRdelay(1); } for (j=0;j<4;j++) //收集四组数据 { for (k=0;k<8;k++) //每组数据有8位 { while (IRIN){IRdelay(1);} //等 IR 变为低电平,跳过4.5ms的前导高电平信号。 while (!IRIN){IRdelay(1);} //等 IR 变为高电平 while (IRIN) //计算IR高电平时长 { IRdelay(1); N++; if (N>=30) { EX0=1; return; } //0.14ms计数过长自动离开。 } //高电平计数完毕 IRCOM[j]=IRCOM[j] >> 1; //数据最高位补“0” if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;} //数据最高位补“1” N=0; }//end for k }//end for j if (IRCOM[2]!=~IRCOM[3]) { EX0=1; return; } EX0 = 1; } /**********************************************************/ void IRdelay(unsigned char x) //x*0.14MS { unsigned char i; while(x--) { for (i = 0; i<13; i++) {} } } 学哥学姐们有知道这短程序是什么意思吗? |
|
|
|
楼主大家分享一下吧。。
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
物联网工程师必备:怎么选择不同的无线连接技术,本指南帮你忙!
3283 浏览 1 评论
【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】WIFI功能测试
3934 浏览 0 评论
【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】Arduino的替代SublimeText3+STino
3442 浏览 0 评论
使用端口扩展器轻松高效地向IIoT端点添加具有成本效益的子节点
4004 浏览 1 评论
20680 浏览 11 评论
模组有时候复位重启后输出日志为“REBOOT_CAUSE_SECURITY_PMU_POWER_ON_RESET”的原因?
793浏览 2评论
1012浏览 2评论
1019浏览 1评论
1140浏览 1评论
379浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 15:05 , Processed in 1.224847 second(s), Total 96, Slave 79 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号