资源描述:
《基于单片机的通用红外遥控接收器设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于单片机的通用红外遥控接收器设计清华-华录信息技术研究所朱纯益摘要 简单介绍了红外遥控接收系统原理,给出了用8051作遥控接收系统解码器的一种巧妙实现方方法,以及完整的51汇编程序代码。关键词 8051红外遥控 遥控码 MOVTMOD,#00010001B;T0:计数器T1:计数器?MOVTCON,#00000101B;EXINT0和EXINT1下降沿有效MOVLENG,#00H;清码长CLR(29H).0;清起始码标志CLR(29H).1;清用户码标志SETBEASETBET0SETBTR0SETBEX0SETBEX1INFRAR:JNB(29H).0,R_NEW;检
2、测起始码标志MOVA,LENGSUBBA,#20HJBCY,NR;LENG<32跳转MOVA,BUF2XRLA,#0FFHMOVBUF2,ACJNEA,BUF3,R_NEW;用户码OkMOVA,BUF3CJNEA,#01H,R_NEWSETB(29H).1 ;设用户码标志USER:MOVA,BUF0XRLA,#0FFHMOVBUF0,ACJNEA,BUF1,R_NEW;操作码OKMOVA,BUF1MOV42H,A;操作码保存到[42H]R_NEW:MOVLENG,#00HCLR(29H).0CLR(29H).1NR: POPACCPOPPSWRETIINT0中断服务程序
3、INT0中断服务程序的功能比较单一,它完成清计数器0、置位其运行控制位TR0和允许INTI中断等工作。计数器0由INT0中断服务程序来启动,而由INTl中断服务程序来关闭。它所定时计数的值是INT1引脚上正脉冲的宽度。EXINT0:PUSHPSWPUSHACCMOVTH0,#00H;清计数器0MOVTL0,#00HSETBTR0;起动计数器0SETBET0SETBEAPOPACCPOPPSWRETIINTI中断服务程序a.对收到的二进制位数进行计数。b.读出计数器T0的计数值,判断它是对应于二进制的“0”,还是“1”,并据此将进位位清0或置1。如定时计数值大于1.792m
4、s,则置位码间隔标志(29H).1。c.通过累加器连同CY的循环右移操作、累加器与缓冲单元BUF0间的数据传送操作以及解码所得的二进制位逐一存入BUF0-BUF3缓存单元内。EXINT1:PUSHPSWPUSHACCCLREX0CLRTR0CLRET0;关计数器0CLREAJNB(29H).0,BGINCLENG;码长加1BG:CLRCYMOVA,TH0;脉冲间隔>=0.256ms?SUBBA,#01HJBCY,ERRORCLRCYMOVA,TH0;脉冲间隔<=0.768ms?SUBBA,#03HJNBCY,GE07MSCLRCYREC0:MOVA,BUF0;A<--BU
5、F0RRCA;A带CY循环右移MOVBUF0,A;BUF0<--AMOVA,BUF1RRCAMOVBUF1,A;BUF1<--AMOVA,BUF2RRCAMOVBUF2,A;BUF2<--AMOVA,BUF3RRCAMOVBUF3,A;BUF3<--AAJMPNORMGE07MS:CLRCYMOVA,TH0;脉冲间隔>=1.28ms?SUBBA,#05HJBCY,ERRORCLRCYMOVA,TH0;脉冲间隔<=1.792ms?SUBBA,#07HJBCY,REC1SETB(29H).0;设起始码标志MOVLENG,#00H;清码长AJMPNORMREC1:SETBCYA
6、JMPREC0ERROR:CLR(29H).0CLR(29H).1MOVLENG,#00HNORM:POPACCPOPPSWSETBEX0SETBET0SETBTR0SETBEARETI