Programa C basado en el interruptor de control remoto por infrarrojos de 51 microcontroladores
int jiema()
{
datos int sin signo, temperatura
RESET:
for( i=0; ilt; 8; i ) //**9ms
{
retardo_nms(1);
si ((PINDamp; 0B00000100)= =0B00000100 )
ir a RESET
}
temp = 8000;
mientras ( (PINDamp ; 0B00000100)==0B00000000 ) amp; amp; (temp!=0) )
{temp--;}
// Espere 4,5 ms de llegada de nivel alto para evitar 9 ms de pulso de arranque de bajo nivel.
// temp: requiere 0,25 us, temp=8000 para lograr un retraso de 2 ms.
delay_nus(1804); //**4.5ms
for( j=0; jlt; 4; j )
{
for( i=0;ilt;8;i)
{
temp = 4000;
while(((PINDamp;;PINDamp;; PINDamp;PINDamp;PINDamp;PINDamp)))((PINDamp;0B00000100)==0B00000000 ) amp;amp; (temp!=0) )
{temp--;}
{
datos |= (1lt;lt;i); // datosH= ~datos datosL= datos
delay_nus(379);
}
else data amp;= ~(1lt;lt;i); // Detecta el nivel bajo 0, lo que indica que el bit es 0, continúa detectando el siguiente bit
}
IR_BUF[j]=datos;
}
Si (IR_BUF[2] = ~IR_BUF[3]) //Suma de comprobación
{
PORTA=IR_BUF[2];
retardo_nms(500);