2022年SAA红外遥控接收的C程序源代 .pdf

上传人:Che****ry 文档编号:35293758 上传时间:2022-08-21 格式:PDF 页数:5 大小:44.35KB
返回 下载 相关 举报
2022年SAA红外遥控接收的C程序源代 .pdf_第1页
第1页 / 共5页
2022年SAA红外遥控接收的C程序源代 .pdf_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《2022年SAA红外遥控接收的C程序源代 .pdf》由会员分享,可在线阅读,更多相关《2022年SAA红外遥控接收的C程序源代 .pdf(5页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、SAA3010红外遥控接收的C 程序源代码/ 用单片机进行红外遥控接收已经是很平常的应用了,基本上稍懂单片机就可以自己编/ / 但往往很多人编的程序要么繁琐,要么占用大量存储器、CPU 资源,/ / 而且用于现场时还可能因为受到干扰而不能正常工作/ / 真正试过的都会发现,要想编个真正好用的接收程序不是那么简单的/ / 其实,所有遥控芯片的编码都是比较简单的(有限的状态),只要仔细分析它的编码/ / 我们完全可以用状态机的方式来处理各种可能的情况,甚至从被干扰的杂乱波形中找出正确的编码 / / 下面是基于状态机的SAA3010 红外遥控接收程序示例:/ /-/ / / / (c) Copyri

2、ght 20012003 xuwenjun / / All Rights Reserved / / V1.00 / /-/ /标题: SAA3010 遥控芯片接收程序/ /文件名 : ir_3010.c / /版本: V1.00 / /修改人 : xuwenjun E-mail: / /日期: 03-06-14 / /描述: SAA3010 遥控芯片接收程序/ /-/ /老版本 : 无老版本文件名: / /创建人 : xuwenjun E-mail: / /日期: 03-06-14 / /描述: SAA3010 遥控芯片接收程序/ / 当 ykok=1 时,ykcode 中的数据就是接收到的遥

3、控码(14 位的最后8 位) / /-/ /占用以下资源: / / 1. 遥控使用外部中断0,接 P3.2 口/ / 2. 遥控使用定时计数器1 / / 3. 5.1 字节 data RAM / / 4. 293 字节code ROM / /-/ /声明: / / 以下代码仅免费提供给学习用途,但引用或修改后必须在文件中声明出处. / / 如用于商业用途请与作者联系. E-mail: / / 有问题请 mailto 欢迎与我交流! / /-/ i nclude #define uchar unsigned char 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -

4、- - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - / SAA3010 存储定义uchar ykcode; /遥控码 (14 位的最后8 位) bit ykok; /遥控数据有效标志uchar ykbnum; /遥控已接收位数uchar ykbtc; /遥控中断时ykbtc=TH1 uchar ykdelay; /遥控延时接收bdata uchar ykcodetemp; /遥控临时码sbit ykcodetemp0=ykcodetemp0; / SAA3010 端口定义/sbit YKIO=P33; /遥控

5、使用外部中断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 unsig

6、ned 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

7、 函数内容void YkInit(void) /遥控接收初始化 TMOD=0 x11; /TMOD T0,T1 均选用方式1(16 位定时 ) SCON=0 x00; TH1=0; TL1=0; IE|=0 x89; /SETB EX0 0 x1 外部中断0 允许名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - /SETB ET0 0 x8 定时器1 中断允许/SETB EA 0 x80 开中断IP|=0 x01; /SETB I

8、NT0 中断优先TCON |= 0 x41; /TCON EX0 下降沿触发 ,启动 T1 / ykbnum=0; ykcodetemp=0; ykdelay=0; unsigned char YkGetcode(void) /返回遥控码 return(ykcode); bit YkTest(void) /检查有无遥控信号 return(ykok); void intx0() interrupt 0 using 2 /遥控使用外部中断0,接 P3.2 口 ykbtc=TH1;TH1=0;TL1=0;TR1=1;ET1=1; switch(ykbnum) case(0): ykbnum=1; b

9、reak; case(1): if(ykbtc=6)ykbnum=2; else ykbnum=0; break; case(2): if(ykbtc=6|ykbtc=9)ykbnum=3; else ykbnum=0; break; case(3): if(ykbtc=9|ykbtc=6)ykbnum=4; else ykbnum=0; break; default: if(ykbnum11&ykbtc30)EX0=1; else ykbnum=0; void intt1() interrupt 3 using 3 /遥控使用定时计数器1 if(ykdelay)ykdelay-;EX0=0;

10、 /ykdelay 不为 0 暂停接收else if(ykbnum=13) /遥控码最后一位为0,补 0 ykcode=ykcodetemp*=2; ykdelay=3; EX0=0; /暂停接收ykok=1; /遥控数据有效 else if(ykbnum=14) /遥控码最后一位为1,不用补 ykcode=ykcodetemp; ykdelay=3; EX0=0; /暂停接收ykok=1; /遥控数据有效 else EX0=1; /ykbnum 不为 13,14 接收无效 ,继续接收ykbnum=0; ykcodetemp=0; /* / SAA3010 测试主函数内容名师资料总结 - -

11、-精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - main() YkInit(); led_test(); /4LED 测试函数for(;1;) /主程序 if (YkTest() led_showhh(YkGetcode(); led_delay(10); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com