Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

28/06/2010 #1


Cambio de datos en la memoria EEPROM
Hola bueno e empezado a aprender a progrmar datos en la memoria eeprom y me he encontrado con una programacion la cual se trata de un control de accesos atraves de un teclado, y al intoducirle la clave este me da acceso mediante un pulso a un rele
y mi duda es de como cambiar la contraseña.. anexo la programacion:

Código PHP:
#include <16F876.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock= 4000000)
#use standard_io(a) 

#include <lcd.c>
#include <kbd.c>
#include <stdlib.h>
[COLOR=Red]#rom 0x2100={'7','2','3'}[/COLOR]  //Posición 0,1 y 2 de la Eeprom con los datos…
                           //7,2, y 3 respectivamente
void main() {
   
char k;
   
int i;
   
char data[3], clave[3];  //Matrices para guardar clave y datos

   
lcd_init();
   
kbd_init();
   
port_b_pullups(TRUE);

   while (
TRUE) {
   
i=0;            //posición de la matriz

   
printf(lcd_putc,"\fpulsar tecla 1\n");  //Para primer dato

   
while(i<=2){                //Para tres datos
      
k=kbd_getc();            //Lee el teclado
      
if (k!=0)                //Si se ha pulsado alguna tecla 
         
{data[i]=k;           //se guarda en la posición correspondiente
          
i++;                //de la matriz
          
printf(lcd_putc,"\fpulsar tecla %u\n",i+1);  //Siguiente dato
         
}
    }

   for (
i=0;i<=2;i++) {             //Pasa datos de eeprom a la matriz clave
     
clave[i]=read_eeprom(i);}

   if ((
data[0]==clave[0])&&(data[1]==clave[1])&&(data[2]==clave[2]))
      { 
printf(lcd_putc,"\fPuerta Abierta"); //Compara los datos con la clave
        
output_high(PIN_A0);                //Si es igual da pulso al relé
        
delay_ms(500);
        
output_low(PIN_A0);}
   else 
printf(lcd_putc,"\fPuerta Cerrada");  //Clave erronea
   
delay_ms(1000);
   }

ahora mi pregunta es esta lo que esta señalado con rojo es la contraseña que seria 7 , 2, 3
pero el numero que esta al lado 0x2100 esta dado en algun sistema(octa,binario, hexadecimal) o como puedo cambiar esa clave a cualquir numero???
gracias
28/06/2010 #2

Avatar de J2C

Respuesta: Cambio de datos en la memoria EEPROM
M.a.R.c.K

0x2100 es un numero indicado en formato HEXADECIMAL y supongo que indica la primera posición de la ROM para lo cual deberias fijarte en la hoja de datos de tu uControlador.

Para cambiar esa clave a otra, deberas leer la ayuda del Compilador que estas usando al respecto de esa instrucción!!!.



Saludos. JuanKa.-
28/06/2010 #3


Respuesta: Cambio de datos en la memoria EEPROM
Hola bueno lo que pasa es que ya converti ese numero pero
no me dio ninguno asi que por eso mejor pregunte
y gacias ahora mismo checo el link de ayuda
30/06/2010 #4


Respuesta: Cambio de datos en la memoria EEPROM
oye no me funciono no encontre nada al respecto alguna otra idea que me puedan dar??
30/06/2010 #5

Avatar de J2C

Respuesta: Cambio de datos en la memoria EEPROM
M.a.R.c.K

Yo no conozco programación en C para el microcontrolador, pero estoy seguro por la similitud de notación usada en otros Lenguajes de programación, que en la siguiente parte que has colocado tu:

. #include <stdlib.h>
. #rom 0x2100={'7','2','3'} //Posición 0,1 y 2 de la Eeprom con los datos…
. //7,2, y 3 respectivamente

#rom 0x2100= "0x2000" es la primera posición de memoria ROM donde guardara los datos de la clave

={'7','2','3'} 7 , 2 y 3 son los numeros que le pides que guarde como clave, si los reemplazas por otros antes de compilarlo cambias la clave.

Pero esa instrucción #rom 0x2100={'7','2','3'} es PROPIA del Compilador C que tu usas, debes si o si buscar la ayuda del mismo Compilador para conocer la sintaxis de las instrucciones y la forma de colocar las variables.

Saludos. JuanKa.-
01/07/2010 #6


Respuesta: Cambio de datos en la memoria EEPROM
Bueno eso ya lo intene pero me marca error al compilarlo lo que me llevo a deducir con tu respuesta es que tal vez para cambiar la contraseña necesito otra variable deja busco muchas gracias no lo habia visto asi gracias.
29/01/2011 #7

Avatar de gmua

M.a.R.c.K dijo: Ver Mensaje
Bueno eso ya lo intene pero me marca error al compilarlo lo que me llevo a deducir con tu respuesta es que tal vez para cambiar la contraseña necesito otra variable deja busco muchas gracias no lo habia visto asi gracias.
M.a.R.c.K para cambiar la contraseña solo cambia la siguiente linea:

#rom 0x2100={'1','2','3'} // La nueva contraseña es: 123

(Esta instrucción permite la inserción de datos en el archivo .HEX. En particular esto puede ser usado para programar la EEPROM del 16F876, cuya dirección inicial es: 0x2100)

Debes tomar en cuenta que el codigo de ejemplo que estás utilizando es para el compilador C CCS, yo estoy usando la versión 4.106 y compila perfectamente, anteriormente usé la versión 4.114 y tuve algunos problemas no tanto con la compilación, sino con la simulación en Proteus (especificamente con los LCD).

Este ejemplo viene en el libro: Compilador C CCS y Simulador Proteus para Microcontroladores PIC (en la página 79), puedes implementar el esquema de ejemplo de la figura 26 para probarlo en el Proteus.

Saludos.
23/04/2013 #8

Avatar de gmua

andres1594 dijo: Ver Mensaje
hola yo encontre un ejemplo de lo mismo es decir #rom 0x2100 pero yo utilizo un pic 18f4550 cual seria para este pic o donde puedo buscarla
Saludos andres1594, para esa gama de microcontroladores PIC la directiva cambia a: #rom int8 0xf00000
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.