Así es DJ y DR...en mi caso no me resultan útiles o no me doy cuenta como darles utilidad a esas funciones...por ahí buscarle la vuelta con el ejemplo de DJT3...voy a ver si sale algo.
Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
// Declaro el microcontrolador que voy a utilizar //
#include <12F683.H> // Directivas del PIC 12F683
// Declaro la palabra de configuración del microcontrolador //
#fuses INTRC_IO,noWdt,noBrownout,noProtect // Intrc_io(no clkout), noWatchDog, noBrownOut, noProtect
#fuses noMclr,noCpd,put,noIeso,noFcmen // noMasterClear, noEEProtection, put, noIeso, noFcmen
// Configuro el cristal que voy a utilizar //
#use delay(clock=8000000) // Frecuencia de 8MHz interna
// Definiciones de los pines del micro
#define LED_VERDE PIN_A1 // GP1 como salida de indicación de estado
#define DATOS PIN_A2 // GP2 como entrada de datos del control remoto
#define VALOR_TIKTOK 122
#use fast_io(A) // Asignación rápida de los pines del puerto A
// Llamo la libreria del receptor
#include <receptor.c> // Llamo a la librería
// Variables
unsigned int codigo1[3]; // Vector donde se va a guardar el código 1 del control
unsigned int codigo2[3]; // Vector donde se va a guardar el código 2 del control
unsigned int tiktok = 0;
// Declaro las funciones utilizadas
void inicializacionDispositivo (); // Rutina de inicialicación del dispositivo
boolean compararCodigo(int codigo1[], int codigo2[]);
// Interrupción del timer0
#INT_TIMER0
void temporizador (void) // Este timer es el encargado de manejar los tiempo del receptor
{
while (++tiktok>VALOR_TIKTOK){ // Habilito receptor luego de 2 segundos
tiktok = 0;
habilitarRX ();
disable_interrupts (INT_TIMER0); // Deshabilito la interrupción por timer 0
}
}
void main (void){
inicializacionDispositivo();
configurarRx();
for(;;){
if(obtenerCodigo(&codigo1[0],&codigo1[1],&codigo1[2])){
obtenerCodigo(&codigo2[0],&codigo2[1],&codigo2[2]);
if(compararCodigo(codigo1,codigo2)){
output_high (LED_VERDE);
deshabilitarRX();
clear_interrupt (INT_TIMER0); // Borro la bandera de la interrupción del timer 0
enable_interrupts (INT_TIMER0); // Habilito la interrupción por timer 0
}
}
else{
if (tiktok == 0)
output_low (LED_VERDE);
}
}
}
void inicializacionDispositivo(void) // Rutina de inicialicación del dispositivo
{
set_tris_a (0b00001101); // Pines como entrada: A0,A2,A3 - Pines como salida: A1,A4,A5
output_a (0); // Borro las salidas del puerto A
setup_timer_0 (T0_DIV_128); // Seteo el timer 0 para interrupciones cada 16,384 mseg
enable_interrupts (GLOBAL); // Habilito las interrupciones globales
}
boolean compararCodigo (int codigo1[], int codigo2[]){
if(codigo1[0] != codigo2[0]) return false;
if(codigo1[1] != codigo2[1]) return false;
if(codigo1[2] != codigo2[2]) return false;
return true;
}
Les comparto el siguiente LINK donde muestro un receptor de 2 canales que realice utilizando dicha librería, utilizando un PIC 12F683 trabajando a 8MHz de reloj interno sin cristal, no les puedo compartir el código fuente de dicho receptor dado que los comercializo, pero para que tengan una idea de las cosas que se pueden hacer.Buenísimo JUANMA...Yo había hecho algo asi, pero en lugar de esperar un tiempo, armé un contador de códigos válidos, si estos eran entre 1 y 3, hacía algo, si eran más de 3 lo contrario, pero solo para probar si servía. Como trabajo con un XTAL de 4MHZ, teniendo el pulsador apretado, le toma como segundo y medio interpretar un ON/OFF, así que no era un problema.
Después, como lo uso para controlar luces que no tengo a la vista, como para verificar si se encienden o no, decidí usar una trama para ON y otra para OFF, y entonces estoy seguro de que estoy PRENDIENDO o APAGANDO las luces, aún cuando no las vea, jaja...Me compré un control por ML que tiene 12 botones, así que tengo para 6 canales y anda "joya"...Por ahí hay otra manera de hacerlo, pero no me puse a pensar mucho sobre el tema, con el control de 12 botones me sobra, y lo mejor que tiene un alcance de + 250mts. que probé cuando saqué a pasear a RINGO (my dog)...Ahora estuve viendo que venden unos programables, que hacen varias funciones, latch, ON/OFF, repeticiones, y no se que cosas más, intentaré emular esos códigos a partir de tu librería.
NOTA: lo probé con unos viejos timbres inalámbricos que tienen enconder LP801B, recontra CHINO, si buscan la hoja de datos, tienen que ir a preguntarle al chino de la esquina que dice...El dato importante es que funciona con esta librería...!!!
Sí, el HCS KeeLoq tiene 32 bits fijos y 32bits Rolling-Code, KeeLoq, Dinámico... Etcétera (le llaman de varias maneras)Si, si podés leer la parte fija de la trama tiene que funcionar...no sabía que tenían una parte fija, jaja, por eso ni los probé, pero siendo así, podría intentar con los controles de los autos.
Hola Juanma, tengo un código para recibir la trama de un mando HCS200, HCS201, HCS300, HCS301... uno para la parte fija y otro para la parte Rolling-Code (KeeLoq).Les comparto el siguiente LINK donde muestro un receptor de 2 canales que realice utilizando dicha librería, utilizando un PIC 12F683 trabajando a 8MHz de reloj interno sin cristal, no les puedo compartir el código fuente de dicho receptor dado que los comercializo, pero para que tengan una idea de las cosas que se pueden hacer.
Ahora estoy con el teléfono móvil, como lo envío?Faltó el código o no se subió?
[Tutorial] ¿Cómo subir archivos? (XenForo)Ahora estoy con el teléfono móvil, como lo envío?