Ejercicio Proteccion_01.asm

Me gustaría saber configuración sobre memoria RAM interna del 16F84A.

Descarguen el Proteger 16F84A.rar abajo. Lo explica todo.

Código:
;************************************ Proteccion_01.asm *************************************
;
; El Puerto B, que actúa como salida es controlado por el bit 0 del Puerto A, que actúa como
; entrada. De manera tal que:
;    -	Si el bit 0 del PORTA es "1", se encienden todos los diodos LED de salida.
;    -	Si el bit 0 del PORTA es "0", se encienden los LED del nibble alto y se apagan los bajo.
;
; ZONA DE DATOS *********************************************************************

	LIST		P=16F84A
	INCLUDE		<P16F84A.INC>
	__CONFIG	_CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC

; ZONA DE CÓDIGOS ********************************************************************

	ORG 	0					; El programa comienza en la dirección 0.
Inicio
	bsf		STATUS,RP0			; Acceso al Banco 1.
	clrf	TRISB				; Las líneas del Puerto B se configuran como salida.
	movlw	b'00011111'			; Las 5 líneas del Puerto A se configuran como entrada.
	movwf	TRISA
	bcf		STATUS,RP0			; Acceso al Banco 0.
Principal						; Supone que el bit de entrada estará a "1" y por
	movlw	b'10000000'			; tanto se van encender el LED del bit 7, RB7.
	btfss	PORTA,0				; ¿Bit 0 del PORTA es "1"?
	goto	Cuelgue				; No. Bloqueo hacia Sleep.
	movlw	b'00000000'			; Sí.
	movwf	PORTB				; Resultado se visualiza por el puerto de salida.
	goto 	Principal			; Crea un bucle cerrado e infinito.
Cuelgue
	movlw	b'10000000'
	movwf	PORTB				; Se muetra 0 en las salidas.
	Sleep						; Se que en estado Sleep (Sueño) y no sale de ahí. Con lo cual, 
								; queda el pic inoperativo.
								; Para volver a hacer funcionar el pic, hay que volve a grabar el pic.
								; La entrada RA0 tiene que estar a 1, desde que se ponga a 0 entra en
								; estado Sleep.

	END							; Fin del programa.
 

Adjuntos

  • proteger_16f84a_181.pdf
    312 KB · Visitas: 35
Hola Meta.
En el libro http://www.pic16f84a.com/Proteus.htm, tienes ejemplos de como grabar y leer la EEPROM. En el caso de que no lo tengas ya te pasare unas rutinas .
Yo en vez de tener que grabar nuevamente el micro, procederia a dejar un pin que reconociera una señal de entrada, por ejemplo si le introduces una señal de reloj de 1Khz durante un minimo de 5 segundos. Dicho pin a parte de servirte de entrada para reactivarlo, tambien lo puedes poner como salida para indicarte que ya se ha restablecido su funcionamiento normal.

Puedes dejar preparado en el circuito un conector de 3 pines, de donde puedes conectar tu oscilador, al que tambien le incorporaras un led rojo y otro verde para indicarte que el circuito ya se ha restablecido.

saludos
 
El libro lo tengo, pero no te lo explica como quiero. También porque no he llegado hasta ahí y tenía prisa.

Me gusta tu idea. Lo veo difícil de hacer. Me gusta la idea esa de activar el pic con la frecuencia de 1KHz. No se cómo lograrás hacer eso.

¿Te refieres que quite el cristal de 4MHZ que uso por uno de 1KHz?
 
Meta dijo:
¿Te refieres que quite el cristal de 4MHZ que uso por uno de 1KHz?

No me refiero a eso.
Tu pic funcionara con tu cristal de 4MHz, pero cuando digas de bloquearlo, coges primeramente y grabas un dato en la memoria eeprom. Despues en tu programa principal le añades una rutina para que de vez en cuando se pase a leer la información que hay en la eeprom, de modo que si has cambiado un bit determinado de la eeprom, coges y haces que tu programa pase a una rutina la cual estara continuamente explorando una unica entrada del pic. Dicha rutina la tendras que configurar para detectar que en esa entrada tu estas aplicando una señal de reloj de por ejemplo 1Khz.

Cuando tu, a traves de tu llave magica que contiene un oscilador de 1Khz, apliques sobre la entrada del pic esta frecuencia, tu rutina reconocera tu llave, y volvera a cambiar el bit de la eeprom y a volver a correr el programa con su rutina principal.

Tu llave generadora de 1Kz puedes introducirla dentro de un conector Jack mono de 6,35mm, de modo que a traves de esos 2 contactos se alimentara el oscilador y a su vez tambien aplicara por ahi la señal de 1KHz.

El oscilador lo realizas con 2 transistores, circuito conocido como flip-flop. Sobre dicho circuito el valor de las resistencias de los colectores pones en uno un valor de 10K y en el otro transistor una resistencia de 10 ohm.
El oscilador lo alimentas a traves de una resistencia, de modo que un extremo de esta va a positivo, y el otro estremo va conectado a la entrada del pic, y al mismo tiempo sirve para alimentar el oscilador.

Si tienes alguna duda te puedo mandar el esquema del oscilador, y de como acoplarlo al pic.
Sobre la rutinas necesarias para hacer esto no tengo nada disponible.

Saludos
 
La verdad es que tienes muy buenas ideas. ¿Y el oscilador cuanto es el ciclo? Es decir, en una señal cuadrada cuánto tiempo se queda en corte y saturación. ¿50%? Con un 555 se puede puede hacer, tu método parece más económico y menos componentes.

Hay pic que puedes cambiar la frecuencia mediante programación, aquellos pic que tienen oscilador interno. El pic 16F84A sólo es externo. Si acaso utilizaría su hermano mayor 16F88.

En tal caso esta idea tuya que está genial lo pregunto a otros foros. No se como un pic puede detectar frecuencia, no se si esto es posible. pero si tu truco funciona, eres el rey.

Con la cantidad de ideas que tienes, deberías hacer miniproyectos para tu Web. En el futuro también haré una Web de electrónica, microcontroladores y programación.

Muchas gracias por tu idea.
 
por si acaso te queda alguna duda te dejo este esquema y te completo la información
5.jpg

Con el circuito funcionando normalmente puedes poner el pin RB7 como salida a nivel bajo, por lo que mantienes el diodo led encendido.
Cuando decidas bloquearlo RB7 la pasas a entrada, con lo que se apaga el led, y se queda indefinidamente vigilando hasta que introduzcas la llave.
Exactamente no se a que frecuencia ira el oscilador, pero lo importante es que veas el detalle
de que R1 vale 10K y que R4 vale 100 ohm.
Esa llave hace la misma funcion que un pulsador conectado a la entrada de RB7, con la unica diferencia de que tu no dispones de tal habilidad como para accionar ese pulsador 1000 veces en 1 segundo.

Como puedes ver la llave en si es una chorrada, pero cuando tu desbloques el pic nadie sabra que tipo de señal es la que tu estas introduciendo.

Con la cantidad de ideas que tienes, deberías hacer miniproyectos para tu Web
Ya me gustaria pero tengo poco tiempo libre, yo actualmente esto lo hago en plan hobbie, lo ideal seria cambiar de empresa y que alguna me contratara para temas de diseño, pero aqui en Granada lo veo bastante dificil.
Un saludo
 
pepechip dijo:
por si acaso te queda alguna duda te dejo este esquema y te completo la información
5.jpg

Con el circuito funcionando normalmente puedes poner el pin RB7 como salida a nivel bajo, por lo que mantienes el diodo led encendido.
Cuando decidas bloquearlo RB7 la pasas a entrada, con lo que se apaga el led, y se queda indefinidamente vigilando hasta que introduzcas la llave.
Exactamente no se a que frecuencia ira el oscilador, pero lo importante es que veas el detalle
de que R1 vale 10K y que R4 vale 100 ohm.
Esa llave hace la misma funcion que un pulsador conectado a la entrada de RB7, con la unica diferencia de que tu no dispones de tal habilidad como para accionar ese pulsador 1000 veces en 1 segundo.

Como puedes ver la llave en si es una chorrada, pero cuando tu desbloques el pic nadie sabra que tipo de señal es la que tu estas introduciendo.

Muchas gracias, me imaginaba ese circuito. También valdría un monoestable. De todas maneras ya este circuito se sustituye por un 555.

Falta otro circuito con un temporizador 555 de 3 segundos, para que cuando quite la pila, tenga tiempo suficiente de avisar al pic y grabe la eeprom. así ni cuando vuelva aponer la tapa y la pila, ya no funcionará sin su llave.

Con la cantidad de ideas que tienes, deberías hacer miniproyectos para tu Web
Ya me gustaria pero tengo poco tiempo libre, yo actualmente esto lo hago en plan hobbie, lo ideal seria cambiar de empresa y que alguna me contratara para temas de diseño, pero aqui en Granada lo veo bastante dificil.

Eso si es verdad, el no poder hacer tus hobby y en un trabajo que no te gusta mal asunto, al final coge estrés. Ahora estoy preocupado a ver que trabajo me toca, ya que tengo intención de estudiar otro C.F.G.S. de "Desarrollo de aplicaciones informáticas". Trabajar y estudiar a la vez si es trabajo duro.

Un saludo

Ánimo, que si consigue un trabajo que te guste y tenga más tiempo libre nos avisa para ver tus proyectazos, si tienes ideas, tienes grandes destrezas.
 
Atrás
Arriba