搪玻璃反应釜厂家
免费服务热线

Free service

hotline

010-00000000
搪玻璃反应釜厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

SAA3010红外遥控接收的C程序源代码

发布时间:2020-07-21 18:52:58 阅读: 来源:搪玻璃反应釜厂家

SAA3010红外遥控接收的C程序源代码

本文引用地址: 用单片机进行红外遥控接收已经是很平常的应用了,基本上稍懂单片机就可以自己编//// 但往往很多人编的程序要么繁琐,要么占用大量存储器、CPU资源, //// 而且用于现场时还可能因为受到干扰而不能正常工作 //// 真正试过的都会发现,要想编个真正好用的接收程序不是那么简单的 //

// 其实,所有遥控芯片的编码都是比较简单的(有限的状态),只要仔细分析它的编码//// 我们完全可以用状态机的方式来处理各种可能的情况,甚至从被干扰的杂乱波形中找出正确的编码//// 下面是基于状态机的SAA3010红外遥控接收程序示例: ////--------------------------------------------------------------------------//// //// (c) Copyright 2001-2003 xuwenjun //// All Rights Reserved //// V1.00 ////--------------------------------------------------------------------------////标题: SAA3010遥控芯片接收程序 ////文件名: ir_3010.c ////版本: V1.00 ////修改人: xuwenjun E-mail:xuwenjun@ ////日期: 03-06-14 ////描述: SAA3010遥控芯片接收程序 ////--------------------------------------------------------------------------////老版本: 无 老版本文件名: ////创建人: xuwenjun E-mail:xuwenjun@ ////日期: 03-06-14 ////描述: SAA3010遥控芯片接收程序 //// 当ykok=1时,ykcode中的数据就是接收到的遥控码(14位的最后8位) ////--------------------------------------------------------------------------////占用以下资源: //// 1. 遥控使用外部中断0,接P3.2口 //// 2. 遥控使用定时计数器1 //// 3. 5.1字节data RAM //// 4. 293字节 code ROM ////--------------------------------------------------------------------------////声明: //// 以下代码仅免费提供给学习用途,但引用或修改后必须在文件中声明出处. //// 如用于商业用途请与作者联系. E-mail:xuwenjun@ //// 有问题请mailto xuwenjun@ 欢迎与我交流! ////--------------------------------------------------------------------------//

#i nclude reg52.h>#define uchar unsigned char

// SAA3010存储定义uchar ykcode; //遥控码(14位的最后8位)bit ykok; //遥控数据有效标志

uchar ykbnum; //遥控已接收位数uchar ykbtc; //遥控中断时 ykbtc=TH1uchar ykdelay; //遥控延时接收bdata uchar ykcodetemp; //遥控临时码sbit ykcodetemp0=ykcodetemp^0;

// SAA3010端口定义//sbit YKIO=P3^3; //遥控使用外部中断0,接P3.2口

// SAA3010函数原型: 公用函数void YkInit(void); //遥控接收初始化unsigned char YkGetcode(void); //返回遥控码bit YkTest(void); //检查有无遥控信号

/*// SAA3010函数原型: 公用函数extern void YkInit(void); //遥控接收初始化extern unsigned char YkGetcode(void); //返回遥控码extern bit YkTest(void); //检查有无遥控信号*/

/* // 外部引用四位LED显示模块 //extern unsigned char code tab_duam[]; //位映射extern void led_send(unsigned char d); //发送子程序extern void led_cls(void); //清除显示extern void led_show(unsigned int n); //显示数字子程序extern void led_showhh(unsigned int n); //16进制显示数字子程序extern void led_test(void); //4LED测试函数extern void led_delay(unsigned char ms); //延迟函数 */

// SAA3010函数内容void YkInit(void) //遥控接收初始化{ TMOD=0x11; //TMOD T0,T1均选用方式1(16位定时) SCON=0x00; TH1=0; TL1=0; IE|=0x89; //SETB EX0 0x1 外部中断 0 允许 //SETB ET0 0x8 定时器 1 中断允许 //SETB EA 0x80 开中断 IP|=0x01; //SETB INT0 中断优先 TCON |= 0x41; //TCON EX0下降沿触发,启动T1 // ykbnum=0; ykcodetemp=0; ykdelay=0;

}

unsigned char YkGetcode(void) //返回遥控码{ return(ykcode);}

bit YkTest(void) //检查有无遥控信号{ return(ykok);}

长沙牙齿矫正医院

杭州热玛吉医院

成都隆胸医院

重庆双眼皮医院