TODOPIC

Simuladores, editores de PCB, etc => Simuladores de circuitos => Proteus ISIS => Mensaje iniciado por: bicho en 22 de Mayo de 2011, 18:34:39

Título: Ejecutar simulación de un PIC12F683
Publicado por: bicho en 22 de Mayo de 2011, 18:34:39
Hola a todos,

Llevo bastante tiempo por aqui pero desde hace poco me he unido mucho más y me gustaría haceros una pregunta.
Tengo un código muy sencillo en C (Compilador CCS) y lo quiero depurar en Proteus. Mi problema es que cuando aparece la ventana del depurador en Proteus, no ejecuta ninguna instrucción y no salta de línea. Se que es una pregunta muy básica pero llevo varios dias sin avanzar.

El código sería este:
Código: [Seleccionar]
#include <12F683.h>
#device adc=8

#FUSES NOWDT                  //No Watch Dog Timer
#FUSES INTRC_IO              //Internal RC Osc, no CLKOUT
#FUSES NOCPD                  //No EE protection
#FUSES NOPROTECT              //Code not protected from reading
#FUSES MCLR                  //Master Clear pin enabled
#FUSES NOPUT                  //No Power Up Timer
#FUSES NOBROWNOUT            //No brownout reset
#FUSES IESO                  //Internal External Switch Over mode enabled
#FUSES FCMEN                  //Fail-safe clock monitor enabled
#FUSES RESERVED              //Used to set the reserved FUSE bits

#use delay(clock=8000000)
#use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=8)
#use fast_io(a)
#byte puerto_a=0x005

void main()
{

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_comparator(NC_NC);
   setup_vref(FALSE);
   port_a_pullups(true);


while(1){


      output_high(PIN_A1);
      output_high(PIN_A2);
      output_high(PIN_A0);
    delay_ms(250);
 
      output_low(PIN_A1);
      output_low(PIN_A2);
      output_low(PIN_A0);
   
}
}

En Proteus simulo de igual manera un interruptor con un LED y éste de enciende y apaga al actuar sobre el interruptor. Es como si no ejecutara instruccion alguna el simulador.

Gracias por adelantado.
Título: Re: Ejecutar simulación de un PIC12F683
Publicado por: AngelGris en 22 de Mayo de 2011, 19:06:06
  Contanos como es que hacés para cargar el código en el PIC que montás en Preoteus.

  Yo no utilizo CCS pero en este punto no interesa demasiado. Una vez armado el circuito en ISIS cargo el archivo .cof generado por el compilador. Asigno la velocidad correspondiente al PIC y ya se puede hacer correr el programa o ejecutarlo paso a paso.
Título: Re: Ejecutar simulación de un PIC12F683
Publicado por: bicho en 22 de Mayo de 2011, 19:28:30
Pues lo que hago es cargar el .c desde "Debug"->Add Source. Luego hago doble click en el PIC y le cargo el *.cof.
No me funciona tanto cargando el *.cof o el *.hex pero si que me funcionan los ejemplos.

Os adjunto los archivos para que no tengais que dibujar y gastar tiempo. (El *.txt es en realidad un *.DSN pero para poder subirlo necesitaba cambiarle la extension, con que la cambies vosotros ya lo reconocera Proteus)
Título: Re: Ejecutar simulación de un PIC12F683
Publicado por: KALLITOS en 22 de Mayo de 2011, 20:05:30
Hola, he simulado tu codigo y encontre lo siguiente:

Código: C
  1. #include <12F683.h>
  2. #device adc=8
  3.  
  4. #FUSES NOWDT                    //No Watch Dog Timer
  5. #FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
  6. #FUSES NOCPD                    //No EE protection
  7. #FUSES NOPROTECT                //Code not protected from reading
  8. #FUSES MCLR                     //Master Clear pin enabled
  9. #FUSES NOPUT                    //No Power Up Timer
  10. #FUSES NOBROWNOUT               //No brownout reset
  11. #FUSES IESO                     //Internal External Switch Over mode enabled
  12. #FUSES FCMEN                    //Fail-safe clock monitor enabled
  13. //#FUSES RESERVED                 //Used to set the reserved FUSE bits
  14. #fuses NOMCLR   ///COLOQUE ESTO
  15.  
  16. #use delay(clock=8000000)
  17. #use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=8)
  18. #use fast_io(a)
  19. #byte puerto_a=0x005
  20.  
  21. void main()
  22. {
  23. set_tris_a (0);   ///COLOQUE ESTO
  24.    setup_adc_ports(NO_ANALOGS|VSS_VDD);
  25.    setup_adc(ADC_CLOCK_DIV_2);
  26.    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  27.    setup_comparator(NC_NC);
  28.    setup_vref(FALSE);
  29.    port_a_pullups(true);
  30.  
  31.  
  32. while(1){
  33.  
  34.  
  35.       output_high(PIN_A1);
  36.       output_high(PIN_A2);
  37.       output_high(PIN_A0);
  38.       delay_ms(250);
  39.  
  40.       output_low(PIN_A1);
  41.       output_low(PIN_A2);
  42.       output_low(PIN_A0);
  43.       delay_ms(250);   ///COLOQUE ESTO
  44.    
  45. }
  46. }

y el codigo ya funciona.

saludos
Título: Re: Ejecutar simulación de un PIC12F683
Publicado por: bicho en 23 de Mayo de 2011, 05:35:32
Muchas gracias por los aportes. En breve me pondré a simularlo y os contaré. Con esas líneas de código nuevas tiene mejor pinta el programa.
Título: Re: Ejecutar simulación de un PIC12F683
Publicado por: bicho en 23 de Mayo de 2011, 16:41:50
Bueno, perfecto, era eso. El Master Clear Pin creo que se llama era el culpable de todo.