摘 要 简单介绍了红外遥控接收系统原理,给出了用8051作遥控接收系统解码器的一种巧妙实现方方法,以及完整的51汇编程序代码。
关键词 8051 红外遥控 遥控码
MOV TMOD,#00010001B ;T0:计数器 T1:计数器?
MOV TCON,#00000101B ; EXINT0和EXINT1下降沿有效
MOV LENG,#00H ;清码长
CLR (29H).0 ;清起始码标志
CLR (29H).1 ;清用户码标志
SETB EA
SETB ET0
SETB TR0
SETB EX0
SETB EX1
INFRAR:
JNB (29H).0,R_NEW ;检测起始码标志
MOV A,LENG
SUBB A,#20H
JB CY,NR ;LENG<32跳转
MOV A,BUF2
XRL A,#0FFH
MOV BUF2,A
CJNE A,BUF3,R_NEW ;用户码Ok
MOV A,BUF3
CJNE A,#01H,R_NEW
SETB (29H).1 ;设用户码标志
USER:
MOV A,BUF0XRL A,#0FFH
MOV BUF0,A
CJNE A,BUF1,R_NEW ;操作码OK
MOV A,BUF1
MOV 42H,A ;操作码保存到[42H]
R_NEW:
MOV LENG,#00H
CLR (29H).0
CLR (29H).1
NR:
POP ACC
POP PSW
RETI
INT0中断服务程序
INT0中断服务程序的功能比较单一,它完成清计数器0、置位其运行控制位TR0和允许INTI中断等工作。计数器0由INT0中断服务程序来启动,而由INTl中断服务程序来关闭。它所定时计数的值是INT1引脚上正脉冲的宽度。
EXINT0:
PUSH PSW
PUSH ACC
MOV TH0,#00H ;清计数器0
MOV TL0,#00H
SETB TR0 ;起动计数器0
SETB ET0
SETB EA
POP ACC
POP PSW
RETI
INTI中断服务程序
a.对收到的二进制位数进行计数。
b.读出计数器T0的计数值,判断它是对应于二进制的“0”,还是“1”,并据此将进位位清0或置1。如定时计数值大于1.792ms,则置位码间隔标志(29H).1。
c.通过累加器连同CY的循环右移操作、累加器与缓冲单元BUF0间的数据传送操作以及解码所得的二进制位逐一存入BUF0-BUF3缓存单元内。
1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.

