Recursos del PIC. Uso de la Interrupción RB4-RB7

Cualquier cosa relacionado con la programación de Microcontroladores PIC en C utilizando el compilador CCS.

Recursos del PIC. Uso de la Interrupción RB4-RB7

Notapor biblioman » Sab Oct 24, 2009 8:32 pm

Hola a todos. Aquí tenéis el código bien formateado y el DNS del ejemplo del uso de la interrupción por cambio de estado en RB4-RB7. Espero vuestras mejoras y aportaciones al ejemplo.

Código: Seleccionar todo
/*--------------------------------------------------------*\

|  Recursos del PIC. Uso de la interrupción por cambio    |

|  en las patillas RB4-RB7 del PIC.                       |

|  autor: biblioman                                       |

|  www.aquihayapuntes.com                                 |

\*--------------------------------------------------------*/



#include <16F877.h>

//Configuración de los fusibles.

#FUSES NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG

#use delay(clock=4000000) //Frecuencia de reloj 4MHz

#byte  puerto_B = 0x06    // Identificador para el puerto B.

#byte  puerto_D = 0x08    // Identificador para el puerto C.



#int_RB

void  RB_isr(void) //función de interrupción

{



switch(puerto_B)

      {

      case 239:

         puerto_D = 0x06;

         break;

      case 223:

         puerto_D = 0x5B;

         break;

      case 191:

         puerto_D = 0x4F;

         break;

      case 127:

         puerto_D = 0x66;

         break;

      default:

         

         break;

      }

}



void main()

{

   set_tris_b(0xFF); //Puerto B como entrada

   set_tris_d( 0x00 );  // Puerto D como salida.

   

   enable_interrupts(INT_RB);//habilita interrupción particular

   enable_interrupts(GLOBAL);//habilita interrupción global

   

   puerto_D =0x00; //inicializo puerto D



   while(True)

   {

       //código principal

     

   }



}



Un Saludo
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Avatar de Usuario
biblioman
 
Mensajes: 220
Registrado: Vie Mar 20, 2009 4:58 pm

Re: Recursos del PIC. Uso de la Interrupción RB4-RB7

Notapor QuijotescoXp » Dom Oct 25, 2009 12:26 pm

La verdad es que no sabía de la existencia de esta interrupción y me parece bastante útil.
He de decir que con las explicaciones de biblioman se entiende perfectamente el ejemplo.

Sólo se me ocurre (por hacer de abogado del diablo), que es una pena sacrificar el resto de patillaje del PORTB<3:0> por la interrupción.

En su lugar creo que sería posible usarlas para otros fines y sólo habría que enmascarar los cuatro bits más significativos cuando se recogiese el valor, es decir, algo parecido a esto:

Código: Seleccionar todo
void  RB_isr( void ) //función de interrupción
{
    switch( puerto_B & 0xF0 )
    {
    case 0xE0:
        puerto_D = 0x06; 
        break;
    case 0xD0:
        puerto_D = 0x5B; 
        break;
    case 0xB0:
        puerto_D = 0x4F; 
        break;
    case 0x70:
        puerto_D = 0x66; 
        break;
    default:
        break;
   }
}


En fin, es posible que lo que esté diciendo sea una barbaridad, en ese caso perdonadme, pero sería propio de mi ignorancia.

Saludos y que esto siga así por favor.
Existen 10 tipos de personas. Los que saben binario y los que no.
Avatar de Usuario
QuijotescoXp
 
Mensajes: 33
Registrado: Sab Sep 19, 2009 10:46 pm

Re: Recursos del PIC. Uso de la Interrupción RB4-RB7

Notapor jose » Lun Oct 26, 2009 8:16 am

:mrgreen: :mrgreen: Hola QuijotescoXP. He probado tú modificación en Proteus, quitando las conexiones RB0-RB3 y utilizando la mascara que propones, y el resultado ha sido satisfactorio. En cuanto al bug que comenta biblioman al utilizar el PIC 16f84A, a mí me compila sin errores en la versión 4.093.

Un saludo
jose
 
Mensajes: 9
Registrado: Sab Jul 18, 2009 4:08 pm

Re: Recursos del PIC. Uso de la Interrupción RB4-RB7

Notapor deshrell » Mar Jul 06, 2010 5:47 pm

Hola que tal! Soy prácticamente nuevo programando PICs, ya sabia programar en C++ y alguito por ahi de PICs y quiero aprender mucho mas 8-)

Mi duda es la siguiente, estuve practicando un poco con esta interrupción y se me ocurrió (no se que tan descabellado sea) si es posible que en lugar de generar la interrupción solo con un pulsador a la vez, que sea también con dos al mismo tiempo (que haga de 5to pulsador) para generar alguna acción, por ejemplo cambiando el flanco de RB4 y RB5 al mismo tiempo. Y otra pregunta, se puede alterar un variable que esta dentro del main cuando se genera alguna interrupción en RB4-RB7?

Muchísimas Gracias de antemano!
deshrell
 
Mensajes: 1
Registrado: Vie Jun 25, 2010 7:39 pm

Re: Recursos del PIC. Uso de la Interrupción RB4-RB7

Notapor biblioman » Mié Jul 07, 2010 4:04 pm

Hola deshrell. Bienvenido al foro. Con respecto a tus preguntas, la verdad no se exactamente que es lo que quieres conseguir, ayudaría bastante si incluyereas algo de código junto con el esquema del circuito que quieres implementar. Pero ten en cuenta que los microcontroladores no tienen procesadores de doble núcleo la única forma de emular la ejecución de varios procesos a la vez es utilizando un RTOS (Sistema Operativo en Tiempo Real), pero lo dicho especifica un poco más...

Un saludo
Avatar de Usuario
biblioman
 
Mensajes: 220
Registrado: Vie Mar 20, 2009 4:58 pm


Volver a Programación PIC en C con CCS

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron