Escribir en C un programa que controle un depósito según las especificaciones:
sensores (nivel) 1=detecta agua / 0=no detecta nivel
entradas e0, e1 > P1.0 P1.1
motores (bombas) 1=on / 0=off
salidas > s0, s1 > P1.4, P1.5
indicador (error) > salidas s2 P1.6
Funcionamiento a programar
e s
00 011 llenar si depósito vacío
01 100 parar bomba y emitir un error del sensor
10 010 llenar si no lleno
11 000 parar bomba si depósito vacío
----
Para definir loa puertos utilizamos sfr.
Definamos los registros que necesitamos (P1):
sfr P1 = 0x90; // definimos el puerto completo
// definimos las entradas
sbit e0 = P1^0; // bit 0 del puerto (entrada e0)
sbit e1 = P1^1; // bit 1 del puerto (entrada e1)
// definimos las salidas
sbit s0 = P1^4; // bit 4 del puerto (salida s0)
sbit s1 = P1^5; // bit 5 del puerto (salida s1)
sbit s2 = P1^6; // bit 6 del puerto (salida s2 de error)
...a partir de aquí ya a programar...
...una solución posible:
sfr P1 = 0x90; // definimos el puerto completo
// definimos las entradas
sbit e0 = P1^0; // bit 0 del puerto (entrada e0)
sbit e1 = P1^1; // bit 1 del puerto (entrada e1)
// definimos las salidas
sbit s0 = P1^4; // bit 4 del puerto (salida s0)
sbit s1 = P1^5; // bit 5 del puerto (salida s1)
sbit s2 = P1^6; // bit 6 del puerto (salida s2 de error)
while (1) {
if(e0==0 && e1==0){
s0=1;
s1=1;
s2=0;
}
if(e0==0 && e1==1){
s0=0;
s1=0;
s2=1;
}
if(e0==1 && e1==0){
s0=0;
s1=1;
s2=0;
}
if(e0==1 && e1==1){
s0=0;
s1=0;
s2=0;
}
}
No hay comentarios:
Publicar un comentario