Autor Tema: pcw para tmr0 del pic 16c84  (Leído 2115 veces)

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

Desconectado camou

  • PIC10
  • *
  • Mensajes: 2
pcw para tmr0 del pic 16c84
« en: 29 de Abril de 2004, 14:04:00 »
Necesito que me puedan ayudar con alguna rutina en pcw que maneje el TIMER-0 del pic 16c84, puès estoy probando con el Proteus y he tenido problemas para que funcione.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: pcw para tmr0 del pic 16c84
« Respuesta #1 en: 29 de Abril de 2004, 14:38:00 »
Este trozo de código que pongo correspondía a un 16F877,por lo que no se si serán correctas las direcciones de memoria asignadas a los puertos.Aun así te tiene que valer igual,poniéndolas bien en el caso de que estén mal,claro.
Código: [Seleccionar]
[BR]#include "16C84.h" // Fichero de símbolos y etiquetas.[BR]#use delay (clock=5000000) // Define frecuencia del oscilador.[BR]#fuses RC,NOWDT,NOPROTECT[BR][BR]#byte PORTB = 0x06 // Se definen los puertos y bits a utilizar.[BR]#byte PORTA = 0x05[BR]#bit RA4 = 0x05.4[BR][BR]static int cont; /* Variable global para contar interrupciones. */[BR][BR]#INT_RTCC // Interrupción por overflow de TMR0.[BR]trata()[BR]{[BR] cont++;[BR]}[BR][BR]main()[BR]{[BR]   setup_timer_0 (RTCC_INTERNAL|RTCC_DIV_256); // TMR0 con reloj interno y prescaler de 256.[BR]   enable_interrupts (INT_RTCC); // Habilita interrupción por TMR0.[BR]   enable_interrupts (GLOBAL); // Habilita interrupciones globales.[BR][BR]   set_tris_B (0); // PORTB como salidas.[BR]   PORTB=0;[BR]   cont=0;[BR][BR]   while (RA4) {}; // Espera hasta que se pulse la tecla.[BR]   PORTB=0b00000011; // Empieza encendiendo L0 y L1.[BR][BR]   for (;;)[BR]   {[BR]      if (cont==2) // Si se ha entrado dos veces en la interrupción[BR]      { //   se desplaza el contenido de PORTB dos bits[BR]         PORTB<<=2; //   a la izquierda (asegurando que no se pierde[BR]         if (PORTB==0x00) PORTB=0x03; //   la información) y se inicializa la cuenta[BR]         cont=0; //   a cero.[BR]      }[BR]   }[BR]}[BR][BR]

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: pcw para tmr0 del pic 16c84
« Respuesta #2 en: 29 de Abril de 2004, 14:41:00 »
Parece que no salió como debía salir.
A ver ahora...
Codigo:

#include "16C84.h"         // Fichero de símbolos y etiquetas.
#use delay (clock=5000000)      // Define frecuencia del oscilador.
#fuses RC,NOWDT,NOPROTECT

#byte   PORTB = 0x06         // Se definen los puertos y bits a utilizar.
#byte   PORTA = 0x05
#bit   RA4 = 0x05.4

static int cont;   /* Variable global para contar interrupciones. */

#INT_RTCC            // Interrupción por overflow de TMR0.
trata()
{
 cont++;
}

main()
{
   setup_timer_0 (RTCC_INTERNAL|RTCC_DIV_256);   // TMR0 con reloj interno y prescaler de 256.
   enable_interrupts (INT_RTCC);   // Habilita interrupción por TMR0.
   enable_interrupts (GLOBAL);      // Habilita interrupciones globales.

   set_tris_B (0);         // PORTB como salidas.
   PORTB=0;
   cont=0;

   while (RA4) {};         // Espera hasta que se pulse la tecla.
   PORTB=0b00000011;         // Empieza encendiendo L0 y L1.

   for (;;)
   {
      if (cont==2)         // Si se ha entrado dos veces en la interrupción
      {               //   se desplaza el contenido de PORTB dos bits
         PORTB<<=2;         //   a la izquierda (asegurando que no se pierde
         if (PORTB==0x00) PORTB=0x03;   //   la información) y se inicializa la cuenta
         cont=0;         //   a cero.
      }
   }
}




 

anything