Jordi
Guest
Sat May 19, 2007 9:58 am
Hola,
estoy intentando implementar un controlador de keypad en un 22v10. El
codigo PLD me compila bien con el WinCUPL de Atmel pero luego lo
simulo en Proteus y la salida (output) ponga el nivel logico que ponga
en las tres entradas de las columnas da 0 anque el registro de
desplazamiento funciona correctamente...
Gracias por adelantado,
Jordi
El codigo es el siguiente:
Name Teclado ;
PartNo 00 ;
Date 19/05/2007 ;
Revision 01 ;
Designer Engineer ;
Company . ;
Assembly None ;
Location ;
Device p22v10 ;
FIELD counter=[c0..3];
FIELD output = [o0..3];
/* *************** INPUT PINS *********************/
/*se introduce un 0 por las filas y si la tecla esta pulsada lo
recibimos en la columna de la tecla pulsada */
/* Las columnas estan conectadas a nivel alto mediante resistencias
PULLUP */
PIN 2 = e1 ;
PIN 3 = e2;
PIN 4 = e3;
/* *************** OUTPUT PINS *********************/
PIN [14..17] = [o0..3] ; /* El codigo de teclado
decodificado */
PIN [18..21] = [c0..3] ; /* La salida del registro de
desplazamiento */
counter.ar='b'0;
counter.sp='b'0;
TABLE counter=> counter.D /*Desplazar el 0 hacia la derecha para
escanear las teclas pulsadas */
{
'b'0000=>'b'0111; /*Inicializar el registro */
'b'0111=>'b'1011;
'b'1011=>'b'1101;
'b'1101=>'b'1110;
'b'1110=>'b'0111;
}
output.ar = 'b'0; /* Reset asincrono */
output.sp='b'0; /* Preset */
TABLE counter,e3,e2,e1=> output.D { /*Tabla de conversion */
'b'0111011=>'b'0001;
'b'0111101=>'b'0010;
'b'0111110=>'b'0011;
'b'1011011=>'b'0100;
'b'1011101=>'b'0101;
'b'1011110=>'b'0110;
'b'1101011=>'b'0111;
'b'1101101=>'b'1000;
'b'1101110=>'b'1001;
'b'1110011=>'b'1100; /* asterisco */
'b'1110101=>'b'0000;
'b'1110110=>'b'1101; /* almoadilla */
}
Jordi
Guest
Sun May 20, 2007 7:40 pm
Me respondo a mi mismo.
Por lo que he visto WinCupl no hace bien las tablas de verdad con mas
de una variable, así que he hecho las tablas de verdad en BOOLE-DEUSTO
y he obtenido su equación simplificada que luego he copiado y pegado.
Ahora ya funciona.
Un saludo,
Jorid
Jordi
Guest
Sun May 20, 2007 7:41 pm
Me respondo a mi mismo.
Por lo que he visto WinCupl no hace bien las tablas de verdad con mas
de una variable, así que he hecho las tablas de verdad en BOOLE-DEUSTO
y he obtenido su equación simplificada que luego he copiado y pegado.
Ahora ya funciona.
Un saludo,
Jordi