O que é o infra-vermelho?

 

 Infra-vermelho é uma radiação com uma frequência de energia abaixo dos nossos olhos sensibilidade, por isso não podemos vê-lo.

Mesmo que nós não podemos "ver" uma boa frequência, sabemos que ela existe, nós podemos ouvir eles.

 

Mesmo que não podemos ver ou ouvir infravermelhos, podemos senti-lo em nossa pele temperatura sensores. Quando se aproxima a sua mão ao fogo ou elemento quente, você vai "sentir" o calor, mas você não pode vê-lo. Você pode ver o fogo, porque emite outros tipos de radiação, visível aos olhos, mas também emite lotes de infravermelhos que você só pode sentir em sua pele.  
 

ULTRA-VIOLETA e SKIN CANCER

  No lado oposto do espectro visível é o Ultra-Violeta, acima da luz azul. U.V. (para breve) é perigoso para a vida, literalmente, uma vez que destrói células sem alarme imediato. UV é usado para esterilizar instrumentos, matar bactérias e germes, e que é responsável pelo câncer de pele. Não temos UV sensor na pele, não podemos ver UV, por isso, são totalmente desprotegidas de UV. Quando estiver exposta ao sol da UV, a maioria de 11-3 (raios UV ângulo entrar facilmente na atmosfera da Terra), sua pele está a ser atingida por uma enorme radiação UV e que conduz a todos os tipos de problemas. Mais grave queimadura solar é causada mais pelo UV além IR, você só sente que horas mais tarde quando a sua pele vai reagir ao intenso ataque UV, vermelha, quente, a dor. Em reais, o nosso corpo desenvolveu sensores IR da pele como uma forma de proteger-nos do perigo imediato, o incêndio, uma vez que durante todo o processo evolutivo que foram muito mais expostas ao fogo (queimar arbustos, árvores, floresta) emitem lotes do IR, além UV. Como o sol também emite IR, nosso corpo sempre usou o IR sensores para indicar a intensidade do sol, forçando-nos a olhar para um sombreamento área, assim, proteger-nos de UV perigosas. Mais tarde, curtir a praia ganhar um novo significado, calor do sol na pele acciona alarme sensores, mas é ignorada e UV é toda a sua pele frágil. Ignorando o perigo as pessoas na praia pensamos que quanto mais quente melhor, bem, melhor para o cancro da pele.


NOTA: Eprom borrachas usa uma forte luz ultravioleta, também conhecida como "lâmpada germicida". Esta lâmpada produz centenas de vezes mais UV do que o sol ao meio-dia tempo, pode apagar uma EPROM memória em poucos minutos, levaria muitas horas, a luz do sol para fazer o mesmo. Tenha muito cuidado ao lidar com as luzes quando emitem UV, que podem causar graves danos a seus olhos ou da pele, mesmo que a única coisa que você vê é uma suave luz azul. Diferente de "night club's black light" luzes, UV (germicida lâmpadas) tem o bolbo feitas em cristal e regular lâmpadas fluorescentes (luz negra e os outros) o uso regular de vidro. O vidro é um mau condutor de UV, cristal, mas é muito eficiente, é por isso que usa lâmpadas germicida cristal, de modo UV podem vazar e fazer o seu trabalho matando.
 

INFRARED IN ELECTRONICS

Infra-Vermelho é interessante, porque ela é facilmente gerado e não sofrem interferências eletromagnéticas, por isso é muito bem utilizado para comunicação e controle, mas não é perfeito, alguns outros emissões poderiam contém luz infravermelha, e isso pode interferir no esta comunicação. O sol é um exemplo, pois emite um amplo espectro ou radiação.

 
A aventura do uso de lotes de infra-vermelho na TV / VCR controles remotos e outras aplicações, infra-vermelho trouxe díodos (emissor e receptor), a um custo muito baixo no mercado.
A partir de agora, você deve pensar como infravermelhos como apenas um "vermelho" luz.
Esta luz pode significar algo para o receptor, o "on ou off" radiação podem transmitir significados diferentes.
Muitas coisas podem gerar infravermelhos, qualquer coisa que irradiam calor fazê-lo, inclusive para fora corporal, luzes, fogão, forno, o atrito as mãos juntas, até mesmo a água quente na torneira.
Para permitir uma boa comunicação utilizando infra-vermelho, e evitar os "falsos" sinais, é imperativa a utilização de uma "chave" que o receptor pode dizer qual é o real dado transmitido e que é falso. Como uma analogia, olhando olho nu para o céu noturno é possível ver centenas de estrelas, mas pode-se facilmente um local longe avião apenas pelo seu piscar STROBE luz. STROBE Essa luz é a "chave", o "código" elemento que nos alerta.

 
Semelhante ao avião no céu nocturno, a nossa TV pode ter centenas de estanífero IR fontes, o nosso corpo, as luzes em volta, ainda a quente chávena de chá. Uma forma de evitar todas essas outras fontes, está a gerar uma chave, como o piscar avião. Então, controles remotos para bater o seu uso infravermelhos em uma determinada frequência. O módulo receptor IR na TV, videocassete ou estéreo "músicas" para esta certa frequência e ignora todas as outras IR recebidas. A melhor frequência para o trabalho está entre 30 e 60kHz, a mais utilizada é em torno de 36kHz.

 
Portanto, usar o controle remoto 36kHz (ou cerca de) para transmitir informação. Luz infravermelha emitida pelo IR Díodos é pulsátil em 36 mil vezes por segundo, ao transmitir lógica nível "1" e silêncio para "0".

 
Para gerar um 36kHz pulsante infravermelho é muito fácil, mais difícil é para receber e identificar esta frequência. É por isso que algumas empresas produzem infravermelhos recebe, que contém os filtros, circuitos descodificação e a saída Shaper, que fornece uma onda quadrada, ou seja, a existência ou não de receber a 36kHz pulsante infravermelhos.

 
Quer dizer que aqueles 3 dólares pequenas unidades, têm um pino de saída que vai alto (+5 V), quando há uma vibrante 36kHz infravermelha na frente dela, e zero volts quando não há essa radiação.
Uma onda quadrada de aproximadamente 27uS (micros segundos) injectados na base de um transístor, pode accionar um LED infravermelho para transmitir esta luz pulsante vaga. Após a sua presença, o receptor comercial irá alternar a saída de alto nível (+5 V).

Se você pode ligar e desligar esta frequência no transmissor, o receptor a saída vai indicar quando o transmissor é ligado ou desligado.

Aqueles IR demodulators têm lógica invertida, na sua saída, quando uma explosão de IR é sentiu que a sua produção para unidades de nível baixo, significando lógica nível = 1.

 
A TV, Vídeo, Áudio e fabricantes de equipamentos de uso por longos infra-vermelho em suas controles remotos. Minha primeira TV, em 1976, usou um ultra-som (não infravermelho) controle remoto.
Para evitar a Philips um controle remoto para mudar de canal em uma TV Panasonic, usam codificação diferente no infravermelho, mesmo que todos eles utilizam basicamente a mesma frequência transmitida, de 36 a 50 kHz. Então, todos eles utilizam uma combinação diferente de bits ou a forma de código os dados transmitidos para evitar interferências.

 
Algumas normas foram criadas. Como material ilustrativo, iremos mostrar apenas um deles, a um usado pela Philips, mesmo que possamos cobrir os outros no futuro.


Primeiro de tudo, a Philips criou o RC5 adoptadas ou norma que fixa utiliza pouco comprimento e quantidade fixa de bits.

 
Cada vez que você pressionar um botão no controle remoto Philips, envia um comboio de 14 bits, 1.728ms por pouco, todo o comboio é repetida a cada 130ms, se mantenha o botão pressionado
Cada bit é cortada em duas metades. O meia esquerda e direita se opôs níveis. Se o bit a ser transmitido é um (1), o seu lado esquerdo é igual a zero, enquanto o seu lado direito está um. Se o bit a ser transmitido é zero (0), o seu lado esquerdo é um, enquanto o lado direito é igual a zero.


(Esta é a razão lógica, revertida a partir do que você pode ver na saída do receptor IR.)

Isso significa que a segunda metade dos bits é realmente o mesmo significado dos bits a serem transmitidos, como você pode ver a sombra azul do lado direito como em bits, significa bits transmitidos = 1.

Se quiser medir a lógica correcta directamente a partir do nível de saída do receptor, você deve medir, no primeiro semestre do bit.

 
A correcta interpretação, é que ela muda nível exactamente no meio de pouco tempo. No IR Receptor saída um pouco Zero mudanças de nível baixo para cima, enquanto um pouco Um mudanças de cima para baixo nível.
Há uma quantidade mínima de pulsos para a próxima 27μs desmodulador compreender que é o direito à frequência e, em seguida, solte sua saída. A quantidade de pulsos utilizados, a Philips telecomandos é 32 pulsos por cada semestre do bit, 64 pulsos por pouco. Portanto, um bit "0", a ser transmitido, isso significa 32 pulsos quadrados de 27μs cada um, então 32 x 27μs de silêncio. A bit "1" é o oposto, 32 x 27μs de silêncio seguido por 32 pulsos quadrados de 27μs.

 
O nosso trabalho aqui será a de descodificar o recebimento da onda no desmodulador saída. Pudemos observar a direcção das mudanças no meio do bit, se a descer, meio bit 0, subindo, significa bit 1. Mas é fácil de amostra, o meio da primeira metade dos bits, por isso diz-nos directamente o que é pouco o estado, como veremos no próximo texto.

 
A Philips controle remoto envia 14 bits em sequência, como você pode ver abaixo. (Lamento a necessidade de utilizar mais do que o seu monitor largura para a próxima foto, mas é para melhor visualizá-lo).

 

(Figura 7)

 

Você pode ver os 14 bits do sistema RC-5 acima. A Vermelho bits são nível "ON", enquanto a Blue estão "OFF".
Os primeiros dois bits, # 1 e # 2, são chamados ACG calibração. Eles são "ON" nível, e servirão para calibrar o IR Receptores Auto Gain Control.

 
Na Philips telecomandos, o bit # 3 é o CHECK pouco, cada vez que você pressionar uma tecla no controle remoto, mesmo pressionando repetidamente a mesma tecla, isto pouco muda estado. Esse recurso é interessante. Suponha que você pressionou número "1" no remoto (tentando selecionar canal 15 na TV) e segurando ele por 2 segundos, então o seu outro lado apenas bloqueia o sinal infravermelho.

A TV iria receber dois trens de pulsos, gerados por seu lado quebrar um longo comboio em dois. Outros sistemas de transmissão de compreender duas teclas "1" selecionando canal "11", mas isso não acontece no sistema Philips. Este bit vira estado cada vez que você pressionar uma tecla, para bloquear o sinal com a mão não mudar este bit, de modo que a televisão vai ainda perceber que a mesma tecla pressionada. Para seleccionar o canal "11" você deve pressionar tecla "1" realmente duas vezes.
Os próximos 5 bits, # 4 a # 8, são utilizados para SYSTEM ENDEREÇO, ou para identificar qual tipo de dispositivo deve executar o comando bits. Por exemplo, a televisão utiliza ENDEREÇO ZERO. # 8 Bits é o menos significativo Bit.


 

SYSTEM ADDRESS

EQUIPMENT

0

TV SET 1

1

TV SET 2

2

VIDEOTEXT

3

EXPANSION FOR TV 1 AND 2

4

LASER VIDEO PLAYER

5

VIDEO RECORDER 1 (VCR 1)

6

VIDEO RECORDER 2 (VCR 2)

7

RESERVED

8

SAT 1

9

EXPANSION FOR VCR 1 OR 2

10

SAT 2

11

RESERVED

12

CD VIDEO

13

RESERVED

14

CD PHOTO

15

RESERVED

16

AUDIO PREAMPLIFIER 1

17

RECEIVER / TUNER

18

TAPE / CASSETE RECORDER 

19

AUDIO PREAMPLIFIER 2

20

CD

21

AUDIO RACK

22

AUDIO SAT RECEIVER

23

DCC RECORDER

24

RESERVED

25

RESERVED

26

WRITABLE CD

26-31

RESERVED

Na próxima 6 bits, # 9 a # 14, são usados para comando informações para o dispositivo selecionado no endereço bits. Bit # 14 é o menos significativo BIT, e é transmitida passado.


Por exemplo, COMANDO STOP # 54 (36h em hexadecimal), bits # 9, # 10, # 12 e # 13 deve ser ON, bits # 11 e # 14 deve ser desligado.

 

 
 

COMMAND (in decimal)

DESCRIPTION of FUNCTION

0-9

NUMERIC KEYS 0 - 9

12

STANDBY

13

MUTE

14

PRESETS

16

VOLUME UP

17

VOLUME DOWN

18

BRIGHTNESS  + 

19

BRIGHTNESS -

20

COLOR SATURATION +

21

COLOR SATURATION -

22

BASS UP 

23

BASS DOWN

24

TREBLE  + 

25

TREBLE -

26

BALANCE RIGHT

27

BALANCE LEFT

48

PAUSE 

50

FAST REVERSE

52

FAST FORWARD-

53

PLAY

54

STOP

55

RECORD 

63

SYSTEM SELECT

71

DIM LOCAL DISPLAY

77

LINEAR FUNCTION (+)

78

LINEAR FUNCTION (-)

80

STEP UP

81

STEP DOWN

82

MENU ON

83

MENU OFF

84

DISPLAY A/V SYS STATUS

85

STEP LEFT

86

STEP RIGHT

87

ACKNOWLEDGE

88

PIP ON/OFF

89

PIP SHIFT

90

PIP MAIN SWAP

91

STROBE ON/OFF

92

MULTI STROBE

93

MAIN FROZEN

94

3/9 MULTI SCAN

95

PIP SELECT

96

MOSAIC MULTI PIP

97

PICTURE DNR

98

MAIN STORED

99

PIP STROBE

100

RECALL MAIN PICTURE

101

PIP FREEZE

102

PIP STEP UP

103

PIP STEP DOWN

118

SUB MODE

119

OPTIONS BUS MODE

123

CONNECT

124

DISCONNECT

Este sistema pode ser autómato com os seguintes chips:
SAA3049 ou TDA3048 para receptores e SAA3006, SAA3010 ou SAA3027 para transmissores.
 

DECODAR COM UM MICROCONTROLLER

Para receber o sinal através de um micro controlador, segue o calendário a partir da figura 7 acima. Note que o Receptor Infravermelho invertido o bit sinal, o baixo nível significa pouco ON.


Durante inactividade (sem Infravermelhos presentes) a saída do receptor é Infravermelhos UP (bit zero).
Pode ligar o receptor IR saída de qualquer porto de entrada pino ou interromper o pino do seu micro controlador, e mantê-lo ou preparar o voto interromper rotina para accionar sua leitura após a primeira baixa sentida.


Quando você pressiona uma tecla no controle remoto, ele transmite o trem de pulsos, e seu micro controlador receberá bit # 1 em primeiro lugar. Vai ser detectados logo após o meio do bit, quando ele muda de alto a baixo nível de meio bit "1". Esta é a primeira vez que o micro controlador irá "ver" a recepção de sinal IR.


Você não precisa descodificar os primeiros dois bits, nem mesmo o CHK bits (excepto se você quiser controlar, como a TV e do descrito acima), assim você pode pular os 3 bits e começar a receber os ENDEREÇO bits. Para fazer isso, você precisa saltar 2,75 bits tempo, e ser-lhe-á exactamente no meio do direito nível da primeira ENDEREÇO bits para ser lido (não invertido nível).

Figure 8

Então, após a primeira detecção baixo nível, o software deve esperar 4,752 milissegundos e, em seguida, começar a ler os próximos 11 bits espaçadas 1.728ms cada. Os primeiros 5 bits são Endereço e os próximos 6 bits são Comando, lógica nível correcto, LOW = 0, HIGH = 1.

Para se certificar de que o seu software está esperando o momento correto, você precisará usar um osciloscópio duplo canal, e este procedimento para ajustar o seu software:
Na sua leitura pouco uso rotineiro disponível um microcontrolador porto pino e gerar um pulso rápido para cima e para baixo, em seguida, utilize um canal para exibir o alcance de pulso, eo outro canal para mostrar o alcance recebidas sinal do receptor. Pressione e segure-chave número zero no telecomando, e sincronizar o âmbito para mostrar uma onda forma completa, não se preocupe com o calendário. O mais rápido 11 pulsos deve ser sempre no lugar desses Vermelhos setas para baixo na figura 8 acima. Isso significa que a "leitura bit" software rotina irá ler exatamente no meio do bit nível correto.
O software será necessário ter dois horários atrasos, o primeiro para o segundo e esperar 4.752ms de esperar 1.728ms. Ajustar o calendário do circuito 4.752ms até o primeiro pulso rápido acontece exactamente como indicado acima. Em seguida, ajustar o calendário 1,728 ms demora de tal maneira que o último pulso rápido (# 11) bits leitura acontece exatamente no meio da parte de baixo do último bit (# 14).


Verificar todos os outros bits e pulsos rápidos, devem ser toda correspondência ok. Pequenos erros seriam aceites uma vez que a leitura seria acontecer no meio do bit, poucos erros para mais ou menos não é um problema, mas é melhor ser o mais possível no meio do baixo nível de cada bit. Esta é a razão pela qual você deve ajustar o seu calendário 1.728ms rotina olhar para os últimos dados pulso rápido e pouco, se algum jogo ok, todos os outros bits deve ser boa também.
Lembre-se que qualquer outra chave remoto irá gerar um padrão diferente e pode confundi-lo. Utilize sempre chave número zero para o software de calibração.

Quando você encontrar o timing correto atrasos, você pode substituir o FAST pulso com instruções nops (verifique o chip set instrução para manter o mesmo relógio count desperdiçada), ou manter o pulso rápido lá apenas para se divertir, então você será capaz de reavaliar-lo em caso de problemas.
Lendo os 11 bits é fácil. Basta deslocar-los deixado em um registo 8 bits e ignorar os elevados ordem 2 bits # 7 e # 6 (E 03Fh instrução), mantenha apenas o último COMANDO 6 bits ... Você não vai querer decodificar o ENDEREÇO bits, é você? A TV controle remoto irá sempre enviar Endereço Zero, você sabe disso, certo?

Veja alguns exemplos da onda completa (14 bits), o Receptor de Saída:

Valores à direita estão o comando em hexadecimal
Red: AGC pulses (ON)
Blue: Check bit (flipping)
White: Address (00)
Green: Command

SEGURANÇA

Se você quiser incluir alguma segurança (recomendado), verifique bits # # 6 e 7 de zeros, se for uma TV Philips remoto. Você também não pode utilizar o 4.752ms atraso, em vez disso, esperar apenas 3 / 4 de um pouco tempo e, em seguida, começar a ler o bit # 2.

Você irá supor a primeira foi um "1" e a segunda deve ser um "1" também, se não, descartá-las, esperar 60ms recepção e ativar novamente, você deve sincronizar correctamente no início do próximo trem de pulsos. Mas, mesmo assim, você poderá ler erradamente um "1" bit seguido por outro, se iniciar a leitura em qualquer lugar no meio do comboio.


Para se certificar de que seu controlador é nunca começar a ler o comboio no meio, você pode descartar a primeira leitura sempre após um longo silêncio (meio segundo ou mais), assim você terá certeza de que a segunda leitura será em sincronia. Para fazer isso, depois da marcha lenta durante mais de meio segundo, entra em uma rotina especial sincronia e após a primeira detecção BAIXA nível bits (pode ser o primeiro real ou não), esperar 60ms e saltar para o verdadeiro receber rotina e começar a acompanhar a Receptor de saída novamente. Isso significa que o primeiro comboio será utilizado apenas para fazer a sua rotina receber a empenhar-se em um timing correto para ler o segundo trem de pulsos.


Lembre-se que há um atraso de 105ms entre trens de pulso, por isso não importa o que você sentiu BAIXA pouco, espera 60ms irá colocar o seu acolhimento rotina no meio do silêncio entre trens de pulso, permitindo-lhe sincronizar no primeiro pedaço do próximo trem de pulsos


 

AT89C2051  IR  RECEPTOR

O seguinte código circuito e foram utilizados em um dos nossos equipamentos, usando um controle remoto para mecânicos posicionamento. Os At89C2051 foram seleccionados pela codificação rápida e de baixo custo. Hoje provavelmente eu iria usar uma pequena estanífero AVR unidade. O software lista abaixo foi retirado de outros elementos não essenciais codificação, necessário para a nossa máquina, mas não necessária aqui.

 

8051  CODIGO ASSEMBLY

;  ÛÛÛÛÛÛÛÜ     ÜÛÛÛÛÛÜ            ÛÛÛÛÛÛÛÛ
;  ÛÛ    ßÛÛ   ÛÛß    ßÛ           ÛÛ
;  ÛÛ    ÜÛÛ   ÛÛ                  ÛÛ
;  ÛÛÛÛÛÛÛÛ    ÛÛ                  ÛÛÛÛÛÛÛÜ
;  ÛÛ   ÛÛ     ÛÛ                        ßÛÛ
;  ÛÛ    ÛÛ    ÛÛÜ    ÜÛ           ÛÛÜ   ÜÛÛ
;  ÛÛ     ÛÛ    ßÛÛÛÛÛß             ßÛÛÛÛÛß
;
; SOFTWARE FOR AT89C2051 TO DECODE PHILIPS REMOTE CONTROL
; RC-5 CODIFICATION - INFRA-RED RECEIVER LT1029-ND DIGIKEY
; CLIPPED PARTS FROM THE ORIGINAL SOURCE TEXT:
;   A) TRANSMITTER
;   B) SELECTION FOR PHILIPS / FC1 - (WORKING PHILIPS)
; AT89C2051 RUNNING AT 2MhZ <== IMPORTANT
; WAGNER LIPNHARSKI - NOVEMBER 1999 - WAGNER@USTR.NET
; UST RESEARCH INC. - ORLANDO, FL - WWW.USTR.NET
;
$MOD51
$NOPAGING
$LIST
;
; PIN 11 (P37) : 0 = RECEIVER CIRCUIT
;              : 1 = TRANSMITTER CIRCUIT
;
; PIN  2 (P30) : 1 = RECEIVER DECODES PHILIPS REMOTE
;              : 0 = RECEIVER DECODES FC1 REMOTE
;
; PIN 12 (P10) : PULLED UP = FC1 CODE TRANSMITTER
;              : GROUND    = PHILIPS CODE TRANSMITTER
;
; RECEIVER CONFIGURATION:
; -----------------------
; PIN 7 (P33) INPUT SIGNAL FROM IR RECEIVER
; PINS 12-19 DECODER OUTPUT (DRIVE TO GROUND)
; PIN 11 TO GROUND.
; CLOCK CERAMIC RESSONATOR 2MhZ
; RESET CAP 1uF TO +VCC
; PIN 9 (P35) CAN BE USED TO LITE A LED WHEN RECEIVING VALID IR
; PIN 8 (P34) SCOPE GATE TIME (SOFTWARE TIMMING ADJUSTMENT)
;
; ---___---___------______---___---___--- PIN 7 P33 IRDATA
; _|_____|_____|_____|_____|_____|_____|_ PIN 8 P34 SCOPE READ GATE TIME
;
; --__  1 BIT
;             RX DATA
; __--  0 BIT
;

; TRANSMITTER CONFIGURATION:
; --------------------------
; PINS 2,3,6,7,8,9 & 11 TIED TOGETHER TO DRIVE IR LED
; PINS 16-19 KEYBOARD MATRIX DRIVE (4 PINS)
; PINS 14 & 15 KEYBOARD MATRIX RETURN WITH PULL UP
; CRYSTAL 6MHZ
; RESET CONTROLLED BY FET BS110, DIODES FROM KEYBOARD.
; PIN 12 GOES TO GROUND WHEN IN POWER OFF

             ;------------------
             ; Receiver
             ;------------------
Led          BIT   0B5h   ; P3.5
IrInput      BIT   0B3h   ; P3.3
Scope        BIT   0B4h   ; P3.4
RxTx         BIT   0B7h   ; P3.7 ; Grounded if Receiver/High if TX
             ;------------------
             ; Transmitter
             ;------------------
TXLED        EQU   P3     ; FF = Off, 00 = On
KO1          Bit   097h   ; P1.7 Keyboard Output
KO2          Bit   096h   ; P1.6
KO3          Bit   095h   ; P1.5
KO4          Bit   094h   ; P1.4
KI1          Bit   093h   ; P1.3 Keyboard Input
KI2          Bit   092h   ; P1.2

IRDATA      DATA   010H   ; Memory to store IR code received

;======================================;
;
; P H I L I P S     R E M O T E
; CODE "10" AT AV6 UNIVERSAL PROGRAMMABLE REMOTE CONTROL
;
;======================================;
ORG 00H
MAIN:        Mov  SP,#SPVALUE          ;

PH0:         Mov  P1,#0FFh             ; Reset Decoder Output High
             Setb LED                  ; Turn off IR Indicator
             ;                         ;
PH1:         Mov  4,#022               ; 2MHz
             Mov  5,#000h              ; 2MHz Time loop
PH2:         Jnb  IrInput,PH3          ; Wait for Incomming IR (first low)
             Djnz 5,PH2                ; This time loop is to keep the last
             Djnz 4,PH2                ; ..pressed key available at P1 for few
             Jmp  PH0                  ; ..time in case you press it again
                                       ; ..and avoid glitches at P1.
             ;-------------------------;
PH3:         Clr  A                    ; IR Receiver First Low level.
             Clr  Led                  ; Lite IR Indicator
             ;                         ;
             Mov  2,#110               ; Time Loop (3/4 bit time)
             Djnz 2,$                  ; Waste Time to sync second bit
             ;                         ; 2MHz = 1.296ms
             Mov  B,#7                 ;
PH4:         Setb Scope                ; Scope Gate Indicator Pulse UP
             Mov  C,IrInput            ; Shift IR state to Carry bit
             Clr  Scope                ; Scope Gate Indicator Pulse Down
             Rlc  A                    ; Insert LEFT Carry Bit into A Reg
             ;                         ;
             Mov  2,#145               ; Waste time for next BIT
             Djnz 2,$                  ; 2MHz clock, 1.728ms
             ;                         ;
             Djnz B,PH4                ; Rotate 7 bits into A
             ;                         ; AGC#2, CHKbit, ADDRESS field (5 bits)
             ;-------------------------;
             Anl  A,#0F7h              ; Cut off CHECK Bit (Flipping bit)
             Cjne A,#40h,PH5           ; 10h means second AGC UP & Address 00
             ;                         ; Not 10h?, wrong sync, go again (PH5)
             ;-------------------------;
             Mov  B,#6                 ; Will Get the COMMAND field
PH4A:        Setb Scope                ; Scope Gate Indicator Pulse UP
             Mov  C,IrInput            ; Shift IR state into Carry bit
             Clr  Scope                ; Scope Gate Indicator Pulse Down
             Rlc  A                    ; Insert LEFT carry bit into A Reg
             ;                         ;
             Mov  2,#145               ; Waste time for next BIT
             Djnz 2,$                  ; 2MHZ clock = 1.728ms
             ;                         ;
             Djnz B,PH4A               ; Rotate 8 bits into A (Command)
             ;                         ; Here A holds Command bits
             ;-------------------------;
             Mov  IRData,A             ; Save Command at IRData memory
             Cjne A,#25h,$+3           ; Is Command >=25h
             Jnc  PH5                  ; Yes? Wrong everything, go again PH5
             ;                         ;
             Call PH6                  ; Go get Conversion at Table
             Cjne A,#0FFh,PH4B         ; If conversion <> FF, is valid.
             Jmp  PH5                  ; ..Not Expected Command. go again PH5
             ;                         ;
PH4B:        Mov  P1,A                 ; Valid Command is post at P1 Port
             Jmp  PH1                  ; Job done, go wait next pulse train.
             ;                         ;
             ;-------------------------;
PH5:         Mov  3,#8                 ; 2MHz
             Mov  2,#112               ; Wait 15 bit time
PH5A:        Djnz 2,$                  ; Wasting time to sync ok next train
             Djnz 3,PH5A               ;
             Jmp  PH0                  ; Go back and wait for next train.
             ;-------------------------;
PH6:         Inc  A                    ; Table conversion, Inc skip RET
             Movc A,@A+PC              ; Point to TABLE + Value at A (1-255)
             Ret                       ;
             ;-------------------------;
             ;  The following table bit values at the first column, means
             ;  the translation from remote control key to the value to be
             ;  be post at P1.  The program ignores values of "FF".
             ;  Change those bits according to your needs.
             ;
             ;  Bit #7 is "0" when a valid key is pressed, otherwise is "1"
             ;  It can be used to recognize values as key "zero" pressed,
             ;  when all bits UP means command ZERO.
             ;
             ;  This TV remote uses only Address = "00"
             ;
             ;    PHILIPS TV REMOTE CONTROL DECODING
             ;
             ;    VALUE TO P1   REMOTE KEY   COMMAND CODE FIELD (HEX)
             ;    -----------   ----------   ------------------------
TABLE:       DB   01111111b    ; 0         ; 0
             DB   01111110b    ; 1         ; 1
             DB   01111101b    ; 2         ; 2
             DB   01111100b    ; 3         ; 3
             DB   01111011b    ; 4         ; 4
             DB   01111010b    ; 5         ; 5
             DB   01111001b    ; 6         ; 6
             DB   01111000b    ; 7         ; 7
             DB   01110111b    ; 8         ; 8
             DB   01110110b    ; 9         ; 9
             DB   11111111b    ;           ; A
             DB   11111111b    ;           ; B
             DB   01110011b    ; ON/OFF    ; C
             DB   01110010b    ; MUTE      ; D
             DB   01110001b    ; PP        ; E
             DB   01110000b    ; OSD       ; F
             DB   01101111b    ; Volume+   ; 10
             DB   01101110b    ; Volume-   ; 11
             DB   01101101b    ; Bright+   ; 12
             DB   01101100b    ; Bright-   ; 13
             DB   01101011b    ; Color+    ; 14
             DB   01111010b    ; Color-    ; 15
             DB   11111111b    ;           ; 16
             DB   11111111b    ;           ; 17
             DB   11111111b    ;           ; 18
             DB   11111111b    ;           ; 19
             DB   11111111b    ;           ; 1A
             DB   11111111b    ;           ; 1B
             DB   01100011b    ; Contrast+ ; 1C
             DB   01100010b    ; Contrast- ; 1D
             DB   11111111b    ;           ; 1E
             DB   11111111b    ;           ; 1F
             DB   01011111b    ; Program+  ; 20
             DB   01011110b    ; Program-  ; 21
             DB   11111111b    ;           ; 22
             DB   11111111b    ;           ; 23
             DB   01011011b    ; Timer     ; 24
             DB   01010111b    ; Special 1 ; 25
             DB   01000001b    ; Special 2 ; 26
             DB   01000111b    ; Special 3 ; 27
             DB   01001110b    ; Special 4 ; 28
             DB   01000101b    ; Special 5 ; 29
             DB   01010010b    ; Special 6 ; 2A
END

EU peço desculpa por alguns erros de português.
Femajocri