Autor Tema: Ejecutar simulación de un PIC12F683  (Leído 4493 veces)

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

Desconectado bicho

  • PIC10
  • *
  • Mensajes: 5
Ejecutar simulación de un PIC12F683
« 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.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Ejecutar simulación de un PIC12F683
« Respuesta #1 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.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado bicho

  • PIC10
  • *
  • Mensajes: 5
Re: Ejecutar simulación de un PIC12F683
« Respuesta #2 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)

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Ejecutar simulación de un PIC12F683
« Respuesta #3 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
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado bicho

  • PIC10
  • *
  • Mensajes: 5
Re: Ejecutar simulación de un PIC12F683
« Respuesta #4 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.

Desconectado bicho

  • PIC10
  • *
  • Mensajes: 5
Re: Ejecutar simulación de un PIC12F683
« Respuesta #5 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.