为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

采用HS0038对万能红外电视遥控器的解码(C51源码)

2017-09-29 4页 doc 16KB 27阅读

用户头像

is_650122

暂无简介

举报
采用HS0038对万能红外电视遥控器的解码(C51源码)采用HS0038对万能红外电视遥控器的解码(C51源码) /************************* 说 明 *********************************/ /* 以一个9ms的低电平和4.5ms的高电平为引导码,后跟32位二进制代码 */ /* 前16位为8位用户码及其反码,后16位为8位的操作码及其反码 */ /* 以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示"0"; */ /* 以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示"1"。...
采用HS0038对万能红外电视遥控器的解码(C51源码)
采用HS0038对万能红外电视遥控器的解码(C51源码) /************************* 说 明 *********************************/ /* 以一个9ms的低电平和4.5ms的高电平为引导码,后跟32位二进制代码 */ /* 前16位为8位用户码及其反码,后16位为8位的操作码及其反码 */ /* 以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合示"0"; */ /* 以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示"1"。 */ /******************************************************************/ #include #define uchar unsigned char uchar data IRcode[4]; //定义一个4字节的数组用来存储代码 uchar CodeTemp; //编码字节缓存变量 uchar i,j,k; //延时用的循环变量 sbit IRsignal=P3^2; //HS0038接收头OUT端直接连P3.2(INT0) /**************************延时0.9ms子程序**********************/ void Delay0_9ms(void) {uchar j,k; for(j=18;j>0;j--) for(k=20;k>0;k--) ; } /***************************延时1ms子程序**********************/ void Delay1ms(void) {uchar i,j; for(i=2;i>0;i--) for(j=230;j>0;j--) ; } /***************************延时4.5ms子程序**********************/ void Delay4_5ms(void) {uchar i,j; for(i=10;i>0;i--) for(j=225;j>0;j--) ; } /**************************** 延时子程序 ************************/ void Delay(void) {uchar i,j,k; for(i=200;i>0;i--) for(j=200;j>0;j--) for(k=3;k>0;k--) ; } /************************中断0解码服务子程序**********************/ void int0(void) interrupt 0 using 2 { EA=0;/*不懂/ for(k=0;k<10;k++) {Delay0_9ms(); if (IRsignal==1) //如果0.9ms后IRsignal=1,不是引导码 {k=10;break;} /*budong/ else if(k==9) //如果持续了10×0.9ms=9ms的低电平,说明是引导码 {while(IRsignal==0); Delay4_5ms(); //跳过持续4.5ms的高电平 for(i=0;i<4;i++) //分别读取4个字节 {for(j=1;j<=8;j++) //每个字节8个bit的判断 { while(IRsignal==0); //等待上升沿/ Delay0_9ms(); //从上升沿那一时刻开始延时0.9ms,再判断IRsignal if(IRsignal==1) //如果IRsignal是"1",则向右移入一位"1" {Delay1ms(); CodeTemp=CodeTemp|0x80; if(j<8) CodeTemp=CodeTemp>>1; } else if(j<8) CodeTemp=CodeTemp>>1;//如果IRsignal是"0",则向右移一位,自动补"0" } IRcode[i]=CodeTemp; CodeTemp=0; } Delay(); } } EA=1; } /**************************主程序*************************/ void main() { IT0=1; //INT0为负边沿触发, (1:负边沿触发,0:低电平触发) EX0=1; //外部中断INT0开, (1:开, 0:关 ) EA=1; //开所有中断 CodeTemp=0; //初Delay(); IRcode[3]=0x00; P0=IRcode[3]; while(1); }
/
本文档为【采用HS0038对万能红外电视遥控器的解码(C51源码)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索