Autor Tema: PIC 8259 - Controlador Teclado 8042  (Leído 4491 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado neidox

  • PIC10
  • *
  • Mensajes: 1
PIC 8259 - Controlador Teclado 8042
« en: 19 de Octubre de 2009, 10:39:12 »
Hola amigos!
Este es mi primer post en este foro, y estoy convencido de que no será el último. :mrgreen:
Les comentos lo que ando haciendo, cómo y porqué:
Antes de nada, he de decir que estoy trabajando bajo el sistema operativo Free-Dos y empleo el compilador tcc (versión 2.0). Estoy haciendo un programa muy sencillo en C que sustituye la RTI del teclado por una mía propia. Ya tengo realizada la RTI, que ahora mismo  permite únicamente la salida de un bucle pero en un futuro incorporará el código necesario para ir realizando tareas con las telcas pulsadas.
Mi problema viene ahora: cuando hecho a andar mi aplicación ya compilada y la pruebo (únicamente con la funcionalidad de salir del bucle) funciona bien, es decir, el programa espera a que se produzca una interrupción de telcado para continuar. Pero cuando se produce dichar interrupción, vuelve al dos pero el teclado está como "deshabilitado". Ya le he dado mil vueltas a mi problema, llevo casi 4 días probando soluciones posibles y no doy con el  por qué del problema. Les adjunto el código para que lo puedan examinar y me puedan decir alguna solución o alguna pista que me diga por donde pueden ir los tiros. No sé si estoy en lo cierto pero, puede que sea algún problema de mala configuración del PIC. La verdad, estoy muy desesperado ya.

Muchas Gracias y Saludos a tod@s. :-/

Código: [Seleccionar]
/*Declaraci¢n de Funciones*/
void interrupt (*vieja)();
void interrupt RTI();
void guardaRutina();
void restableceRutina();


/*Variables Globales*/
int salir = 0;


void main(void){
        /*Variables Locales*/
        int x,y;

        /*Bucle de Retardo*/
        x = 9999;
        while (x!=0){
                y = 9999;
                while (y!=0){
                        y = y - 1;
                }
                x = x - 1;
        }   
        x = 9999;
        while (x!=0){
                y = 9999;
                while (y!=0){
                        y = y - 1;
                }
                x = x - 1;
        }     

        /*Guardamos el vector de interrupci¢n*/
        guardaRutina();

        while (!salir){ /*Bucle infinito*/
       
        }       

             
        /*Recuperamos la RTI del teclado*/
        restableceRutina();
}

void guardaRutina(){
        disable(); /*Deshabilitamos las interrupciones*/
        vieja = getvect(0x09); /*Tomamos la RTI correspondiente al teclado*/
        setvect(0x09, RTI); /*Establecemos nuestra RTI para el teclado*/
        enable(); /*Volvemos a habilitar las interrupciones*/
}
void restableceRutina(){
        disable();
        setvect(0x09, vieja);
        enable();
}

void interrupt RTI(){
        salir = 1; /*Para salir del bucle infinito*/
        outportb(0x20,0x20); /*Para indicar el EOI*/
}

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: PIC 8259 - Controlador Teclado 8042
« Respuesta #1 en: 19 de Octubre de 2009, 13:07:59 »
Hola, moveré tu tema al subforo de Otros microcontroladores ya que el PIC (Peripheral Interface Controller) del que hablas es el fabricado por Intel. Es este foro se trabajan los microcontroladores PIC de Microchip que tienen funciones distintas al tuyo.

http://en.wikipedia.org/wiki/Intel_8259