Dudas sobre el PIC16F84

Tengo algunas dudas sobre el PIC 16F84 son las siguientes:

1-¿Porque se debe escribir en EECON2 la secuencia 055h,0AAh?

Por ejemplo:

Código:
	movlw	0x55
	movwf	EECON2
	movlw	0xAA
	movwf	EECON2

2-¿Qué operación es mas costosa en tiempo de ejecución, leer o escribir en la EEPROM?¿Por qué?

3-¿Cual es el valor de la máscara de configuración de las entradas/salidas?

4-Para bloquear un sistema ¿valdria esto?

Código:
bloqueo:
	sleep
	goto	$-1

En caso afirmativo, ¿como podria desbloquear el sistema?


Gracias, espero vuestra ayuda impacientemente.
 
Bueno, ya encontre las soluciones, asi que me contesto a mi mismo(espero que al menos alguien le encuentre utilidad a mis preguntas/respuestas).

Respuesta a 1:

Porque EECON2 no está físicamente implementado y es empleado como un dispositivo de seguridad durante el proceso de escritura de la EEPROM. Si lo leemos obtendríamos 0 pero, cumple funciones de control sobre la escritura que si deberemos considerar. Para ello, usamos dos valores específicos, el 55h y el AAh.

Dado el tiempo que tarda el proceso de escritura comparado con el tiempo de ejecución del MP, estos dos valores permitirán al MP realizar acciones de sincronismo y control en el proceso de escritura de la EEPROM.

Respuesta a 2:

Escribir, ya que requiere habilitar primero la escritura(y que se sincronice el proceso en tiempo de ejecución) y luego escribir, consumiendo muchas mas instrucciones, en cambio la lectura es instantanea. Por ejemplo:
bsf EECON1,WREN; Habilitar escritura

… ;(sincronizar en tiempo de ejecución)

Respuesta a 3:

Depende de las salidas y entradas que queramos configurar. En el caso del PIC16F84, disponemos de RA0 a RA3 (puertoA, 4 bits) y de RB0 a RB7 (puertoB, 8 bits) para configurar las entradas y salidas. Un ejemplo para el puertoB podria ser => 00001111

Respuesta a 4:

Si, valdria. Ademas se pueden utilizar otras variantes como:

bloqueo:
goto $

bloqueo:
nop
goto $-1

Se podria desbloquear de varias formas:
1-Borrando la EEPROM, aplicando una fuerte tensión inversa, sin ser necesario extraer
el chip del sistema, para provocar el reseteo y tener de nuevo 4 intentos.
2-(Programable) Volviendo a iniciar el programa.


Espero que por lo menos alguien se moleste en contestar las siguientes dudas que haya, porque leo el subforo y a menudo me doy cuenta de que quedan sin resolver. Y creo que es del bien comun, que todos aprendamos de las dudas de los demas. Un saludo

PD: A los administradores y moderadores, creo que seria util que añadierais un PostIt al estilo de FAQ. Y podriais añadir dudas como estas.
 
buenas noches
tengo una pregunta sobre la entrada y salida del pic 16f84

lo que quiero lograr hacer es que yo configure mis entradas de rb1 y rb2 que al momento de activarlas activen las salidas por ejemplo que la salidas sean ra1 y ra0
eso lo quiero lograr con un dip para poder controlar las entradas
pero como hago para se relacionen las entradas que quiero con las saidas al activarse???


muchas gracias
 
4-Para bloquear un sistema ¿valdria esto?
Código:
bloqueo:
    sleep
    goto    $-1
El uso de sleep y la instruccion de salto a si mismo son metodos para dejar el micro en modo de espera de la cual se saca mediante una interrupcion externa.

En que documento viste que se podia borrar la EEPROM con un "fuerte voltaje inverso". ???.

otielgna: Si entiendo, quieres copiar el estado en las entradas RB1, RB2 a RA0 y RA1 ?. Pues lees el
puerto B, lo pones en el registro W, le aplicas una instruccion de desplazamiento de bits a la derecha y escribes el contenido de W en el puerto A.

Saludos.
 
Última edición:
buenas noches
tengo una pregunta sobre la entrada y salida del pic 16f84

lo que quiero lograr hacer es que yo configure mis entradas de rb1 y rb2 que al momento de activarlas activen las salidas por ejemplo que la salidas sean ra1 y ra0
eso lo quiero lograr con un dip para poder controlar las entradas
pero como hago para se relacionen las entradas que quiero con las saidas al activarse???


muchas gracias

Tienes varias opciones, la mas simple es leer el puerto B y copiarlo al puerto A

movf portb,w
movwf porta

Otra es probar bit a bit e ir activando uno a la vez...

clrf porta
btfsc portb,0
bsf porta,0
btfsc portb,1
bsf porta,1
.....
 
Tienes varias opciones, la mas simple es leer el puerto B y copiarlo al puerto A

movf portb,w
movwf porta

.....

Pero... la consulta dice que lo que lee en RB1, RB2 quiere que aparezca en RA1, RA0. Asi que no es solo un copiado de puertos, se necesita un corrimiento de un bit para que casen los bits como lo piden. Eso entiendo yo.

Saludos
 
Bueno eso si... si necesita que si al poner un 1 en PB0 PA1 tambien se ponga en uno entonces copiar la informacion no le va a servir... tendria que recorrer los datos, leer bit a bit o aplicar algun enmascarado de alguna clase...
 
Atrás
Arriba