完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
个位牛人 谁帮我解释一下中断服务程序里的内容呀 看不懂呀
* 文件名 : 红外解码LCD.c * 描述 : 通过红外解码来控制Led的亮灭 当按的不是0-7时,蜂鸣器会想 * 创建人 :东流电子 2012年2月10日 * 版本号 : 1.0 ***********************************************************************/ #include #include #define uchar unsigned char #define uint unsigned int void delay(uchar x); //x*0.14MS void delay1(int ms); ***it IRIN = P3^3; //红外接收器数据线 ***it beep=P1^2; uchar IRCOM[7]; /*******************************************************************/ main() { IE = 0x84; //允许总中断中断,使能 INT1 外部中断相当于 EA=1,EX1=1; TCON = 0x10; //触发方式为脉冲负边沿触发相当于 TR0=1; IRIN=1; //I/O口初始化 delay1(10); //延时 P0=0xff; while(1); } //end main /**********************************************************/ void IR_IN() interrupt 2 using 0 { unsigned char i,j,k,N=0; EX1 = 0; delay(15); if (IRIN==1) { EX1 =1; return; } //确认IR信号出现 while (!IRIN) //等IR变为高电平,跳过9ms的前导低电平信号。 {delay(1);} for (j=0;j<4;j++) //收集四组数据 { for (k=0;k<8;k++) //每组数据有8位 { while (IRIN) //等 IR 变为低电平,跳过4.5ms的前导高电平信号。 { delay(1); } while (!IRIN) //等 IR 变为高电平 { delay(1); } while (IRIN) //计算IR高电平时长 { delay(1); N++; if (N>=30) { EX1=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]) { EX1=1; goto LOOP; //goto loop 是指向loop循环 } switch(IRCOM[2]) { case 0x16: {P0=0xfe; EX1=1;} break; case 0x0c: {P0=0xfd; EX1=1;} break; case 0x18: {P0=0xfb; EX1=1;} break; case 0x5e: {P0=0xf7; EX1=1;} break; case 0x08: {P0=0xef; EX1=1;} break; case 0x1c: {P0=0xdf; EX1=1;} break; case 0x5a: {P0=0xbf; EX1=1;} break; case 0x42: {P0=0x7f; EX1=1;} break; default: {for(i=0;i<100;i++) { beep=1; delay(5); beep=0; delay(5); }EX1=1;} break; } LOOP:; //loop循环 } /**********************************************************/ void delay(unsigned char x) //x*0.14MS { unsigned char i; while(x--) { for (i = 0; i<13; i++) {} } } /**********************************************************/ void delay1(int ms) { unsigned char y; while(ms--) { for(y = 0; y<250; y++) { _nop_(); _nop_(); _nop_(); _nop_(); } } } 能给我一个关于hs0038的程序大体工作时序 |
|
相关推荐
7个回答
|
|
中断服务程序就是一个解码过程,看下解码资料就行了。
|
|
|
|
看看红外解码资料
|
|
|
|
好像资料上的时序图都不太一样呀
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
158 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
237 浏览 0 评论
655 浏览 1 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
563 浏览 0 评论
862 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12034 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 18:14 , Processed in 0.962495 second(s), Total 86, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号