- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CX4多功能家居控制系统及应用设计红外解码程序推荐
红外解码程序:
/****************************************************************************************
/*将从接收头出来的红外二进制脉冲信号先与标志位(P)进行,然后再输入到INT0(P3.2)引脚只需要在同一个高(低)电平脉冲里,脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”脉冲电平的每一次跳变都会形成一次中断,在中断服务子程中即可实现一次性对一连串连续波形的测量。sfr P0=0x80;sfr P3=0xb0;sbit P32=P3^2;
Sbit P11=P1.1;
Sbit P12=P1.2;
Sbit P13=P1.3;
Sbit T00=P3^4;
Sbit T11=P3^5;unsigned char dm,i,j,k,dj1,dj2,dj3,ss,tt,ssc;
Unsigned long int mmt;unsigned char data a[80],h; //定义数组,用来存储代码void ds0_9ms(void){? unsigned char j,k;??for(j=18;j0;j--)??for(k=20;k0;k--) ;}void ds1ms(void){?unsigned char i,j;?for(i=2;i0;i--)?? for(j=230;j0;j--) ;}void ds4_5ms(void){?unsigned char i,j;??? for(i=10;i0;i--)?? for(j=225;j0;j--) ;}void ds2s(void){unsigned char i,j,k;?for(i=200;i0;i--)? ?for(j=200;j0;j--)?for(k=10;k0;k--) ;}
Void ds10ms(void)
{
Unsigned char sk,ms,hh;
For(sk=20;sk0;sk--)
For(ms=225;ms0;ms--);
}void t0(void) interrupt 1 using 1 //定时器T0中断{?While( )
{
For(i=13;i0;i--) //产生13us高电平脉冲
{
T00=1; //T0口连续输出脉冲电平
}
For(j=13;j0;j--) //产生13us低电平脉冲
{
T00=0;
}
}
}?
/****************************************************************************************
/*?检While( djflag!=0 )
{ If( djflag==1 ) //设备1选中
{
P11=1;
ET1=1; //定时器1初始化
EX1=1;
des1ms( );
ET1=0;
EX1=0;
}
If( djflag==2 ) //设备2选中
{
P12=1;
EX1=1;
ET1=1;
des1ms( );
ET1=0;
EX1=0;
}
If( djflag==3 ) 设备3选中
{
P13=1;
ET1=1;
EX1=1;
des1ms( );
ET1=0;
EX1=0;
}
}
}
Void INT_0(void) interrupt 0 using 0 //时间间隔测量
{
While( ) //调用jiji测时间间隔与判断
{
Jiji( );
}
}
Void jiji(void) //用来根据INT_0测出的时间周期
{
If(P32=0)
{
ET1=1;
EX1=1;
}
Else
{
ET1=0;
EX1=0;
Mmt=ssc*65536+tt*256+ss; //计算脉冲时间的宽度
If(mmt==565) //时间为0.565ms时不记
{
Mmt=0;
}
If(mmt==560)
{
a[h++]=0; //将测得的0和1的值存放在a数组里
}
If(mmt==
您可能关注的文档
最近下载
- 2022急诊胸痛心血管标志物联合检测专家共识(全文).pdf VIP
- 2025年四川高处安装、维护、拆除作业_特种作业证考试复习题库资料(含答案).pdf
- 临床医学专业水平测试评分表.pdf VIP
- 2024年四川省绵阳市中考化学真题卷(含答案与解析).pdf VIP
- 《三位数乘两位数》大单元教学设计 (1).docx VIP
- 2024年四川省绵阳市中考数学真题卷(含答案与解析).pdf VIP
- 生如夏花小清新模板(含音频+视频).pptx VIP
- 2024学年统编版高中语文选择性必修下册《客至》优质课一等奖课件28张.pptx
- Sysmex XN-1000全自动血液分析仪标准操作程序.pdf VIP
- 2025安全生产月主题宣讲课件.pptx
文档评论(0)