PLD

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 */ }

Reply to
Jordi
Loading thread data ...

Me respondo a mi mismo. Por lo que he visto WinCupl no hace bien las tablas de verdad con mas de una variable, as=ED que he hecho las tablas de verdad en BOOLE-DEUSTO y he obtenido su equaci=F3n simplificada que luego he copiado y pegado. Ahora ya funciona.

Un saludo, Jorid

Reply to
Jordi

Me respondo a mi mismo. Por lo que he visto WinCupl no hace bien las tablas de verdad con mas de una variable, as=ED que he hecho las tablas de verdad en BOOLE-DEUSTO y he obtenido su equaci=F3n simplificada que luego he copiado y pegado. Ahora ya funciona.

Un saludo, Jordi

Reply to
Jordi

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.