UTNianos

Versión completa: [Ayuda] Informática II [Urgente]
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola,

Necesito termina un ejercicio para poder entregar un TP para esta materia. Mi problema es que no entiendo el enunciado siquiera.

¿Alguien me podrías orientar?

El enunciado es el siguiente:

Se pretende atender seis líneas de entrada de alarma vía interrupción. Como es sabido el 8051
estándar solo cuenta con dos entradas para tal fin, y es por ello se desarrollo el circuito del
figura.
Se pide desarrollar un programa que sea capaz de atender las seis líneas de interrupción
estableciendo prioridades de atención para cada una (al0 a al5) que coloque un uno en las salidas
respectivas (o0 a o5) y vuelva a cero con la siguiente interrupción correspondiente a dicho puerto.
NOTA: Configurar las interrupciones para que sean activadas por flaco de bajada.

Muchas gracias de antemano.
Saludos!
Como repiten los tps estos profes! no tienen ganas de hacer nada nuevo....

Te oriento y si no te sale te paso la respuesta:

1) Declara los sbits del puerto 0 y 1 (Sbit P10 = P1^0.......Sbit P00 = P0^0)
2) Hace la función de inicializacion:
a) Inicializa los puertos a 0
b) Inicializa los registros referentes a la interrupcion (EX0,IT0 y EA0)
3) Luego hace el Main llamando a la inicializacion y luego el famoso While 1
4) Por ultimo la interrupcion:
a) Acordate como es la 1º interrupcion externa es la 0
b) Luego de recibir el 1 por la interrupción tenes que preguntarte, de que pata del puerto me llaman? (Podes usar If o case preguntando la primera a la que tiene mas prioridad, o sea P10)
c) Por ultimo en cada If-Case, negas lo que entra (P00=~P00)

Si lo hiciste y queres compararlo con algo, te mando el tp por las dudas.....
Gracias por responder. Los puertos que escribiste... fueron aleatorios o tienen algún significado? Es decir, tranquilamente lo podría hacer desde P0.0 hasta P0.5 (así obtengo 6 líneas de interrupción). Independientemente de eso, lo entendí. Era más fácil de lo que parecía (como todo en esta vida) Jaja Muchas gracias!
El Circuito del TP5 muestra a donde son conectados las cosas:
P10: Puerto 1 bit 0
P11: Puerto 1 bit 1
.............
.......

.......
P00: Puerto 0 bit 0
P01: Puerto 0 bit 1

Ademas mira las entradas, el circuito muestra que el Puerto 0 es de salida, mientras que el Puerto 1 es de entrada
(Fijate por las flechitas.)
Ahí está el problema, yo lo tengo distinto. Y ahora pertenece al TPC4.
Me salvaste, ahora me lo pongo a hacer.
Gracias!
si no imterprete mal, te referias a esto.
no se si esta bien, fijate =)


#include <c8051F020.h>

void main (void)
{
init();
while(1);

}

void init (void)
{
//Inicializo el micro
EX0 = 1;
EA = 1;
//aca tenes que tocar el flag, para que sea por flanco descendiente, no me acuerdo
P0 = 0x00; //Apago todas las salidas.
}

void ISR interrupt 0
{
if(P1^0)
P0^0 = !(P0^0);
else if(P1^1)
P0^1 = !(P0^1);
else if(P1^2)
P0^2 = !(P0^2);
else if(P1^3)
P0^3 = !(P0^3);
else if(P1^1)
P0^4 = !(P0^4);
else if(P1^5)
P0^1 = !(P0^5);
}

Sí, está perfecto a mi modo de verlo!
URLs de referencia