Autor Tema: programa con pic 12f509 no funciona todos los pines  (Leído 3669 veces)

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

Desconectado miltonmc

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 305
programa con pic 12f509 no funciona todos los pines
« en: 22 de Diciembre de 2007, 12:19:57 »
Hola a todos.
                    tengo una duda con este programa ya que por mas que intente usar todos los pines no funcionan.
solo puedo usar uno o 2 pines como salida y no los 5 que se pueden usar al mismo tiempo.
pongo el programa que estoy usando y lo estoy simulando con el proteus.

// Device: PIC12F509 1024 WORD, 41 Byte SRAM, 0 Byte EEProm
//                              ______
// Vdd +5VDC ---> 1 |º        | 8 <---  Vss (GROUND)
//  GPIO.5 <--->    2 |          | 7 <---> GPIO.0
//  GPIO.4 <--->    3 |          | 6 <---> GPIO.1
//   GPIO.3  --->    2 |______| 5 <---> GPIO.2
//
// GPIO.5----PIN_B5   I/O
// GPIO.4----PIN_B4   I/O
// GPIO.3----PIN_B3   I, MCRL
// GPIO.2----PIN_B2   I/O
// GPIO.1----PIN_B1   I/O
// GPIO.0----PIN_B0   I/O

#include <12F509.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC                    //Internal RC Osc
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOMCLR                   //Master Clear pin used for I/O

#use delay(clock=4000000)

SET_TRIS_B(b001000);

void main() {
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

   while (true) {
      output_low(PIN_B0);
      output_low(PIN_B1);
      output_low(PIN_B2);
      output_low(PIN_B4);
      output_low(PIN_B5);
      delay_ms(250);
      output_high(PIN_B0);
      output_high(PIN_B1);
      output_high(PIN_B2);
      output_high(PIN_B4);
      output_high(PIN_B5);
      delay_ms(250);
   }   // End While
}
« Última modificación: 22 de Diciembre de 2007, 12:32:27 por miltonmc »

Desconectado miltonmc

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 305
Re: programa con pic 12f509 no funciona todos los pines
« Respuesta #1 en: 25 de Diciembre de 2007, 12:22:37 »
hola a todos
                 parece que es difícil encender al mismo tiempo un diodo led en cada pin del 12f509 o el programa es tan complicado

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: programa con pic 12f509 no funciona todos los pines
« Respuesta #2 en: 25 de Diciembre de 2007, 14:56:14 »
Puede ser el pic, preba con otro.

Aunq te falta algunas cosas sobre el oscilador:
*En los fusibles no dices si vas a usar una frecuncia XT, HS, ...
*No configuras el oscilador interno.

Entonces todo esto quedaria asi:
Código: [Seleccionar]

#include <12F509.h>

#FUSES XT  //////////////////////////////////////
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC                    //Internal RC Osc
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOMCLR                   //Master Clear pin used for I/O

#use delay(clock=4000000)

SET_TRIS_B(b001000);

void main()
{   
   setup_oscillator(OSC_4MHZ);  ////////////////////////
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

   while (true)
   {
      output_low(PIN_B0);
      output_low(PIN_B1);
      output_low(PIN_B2);
      output_low(PIN_B4);
      output_low(PIN_B5);
      delay_ms(250);
      output_high(PIN_B0);
      output_high(PIN_B1);
      output_high(PIN_B2);
      output_high(PIN_B4);
      output_high(PIN_B5);
      delay_ms(250);
   }   // End While
}

Espero sea eso. Suerte.
salu2 8)

Desconectado miltonmc

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 305
Re: programa con pic 12f509 no funciona todos los pines
« Respuesta #3 en: 25 de Diciembre de 2007, 17:22:34 »
hola a todos
                     jeremylf gracias por contestar pero si ves bien el código que puse. Si los fusibles declaran el oscilador como  #FUSES INTRC      //Internal RC Osc
eso declara el oscilador interno de 4mhz que el único que tiene ese pic.
y como ese pic solo tiene 8 pines y dos son de la fuente +/- y unos solo se puede usar como entrada GPIO.3 los 5 demas si se pueden usar como salidas y si uso in cristal externo pierdo 2 pines que en ese caso solo puedo usar 3 pines.
Este programa funciona bien con un pic 12f675 o con el 12f683 los cuales son mas complejos que el  12f509.
el pic 12f509 no cuenta con un registro TRISIO como los otros por eso pienso que el compilador se comporta extraño y no declara bien los pines.
gracias por todo.