TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: leitoferr en 26 de Mayo de 2013, 10:36:22

Título: Problema Hi Tech C usando el entorno MpLab
Publicado por: leitoferr en 26 de Mayo de 2013, 10:36:22
Buenas amigos del foro. Eh estado renegando con un programa que es sumamente sencillo, el problema es que el HiTech compila cualquier cosa. El programa es para manejar un srf04 que active la salida si el objeto esta a menos de 100cm.
El software:

#include   <htc.h>
#include   <pic16f628a.h>
#define   trigA   RB0
#define   echoA   RA0
#define   sensorA   RB5
#define   _XTAL_FREQ   4000000


void main (void)
{
   unsigned short   centA;
   
   TRISA=0b00111111;
   TRISB=0b00000000;

   while(1)
   {
      trigA=1;
      __delay_us(50);
      trigA=0;
      
      while(echoA==0)
         centA=0;

      while(echoA==1)
      {
         centA++;
         __delay_us(58);
      }
      
      __delay_ms(60);

      if(centA<100)
         RB5=1;
            else   
               RB5=0;
   }
}

El error que eh encontrado, es que al picar la opcion VIEW-PROGRAM MEMORY, en la direccion 000 de la memoria, me tira que hay un salto a la direccion 0*7b6 y al fijarme en esa direccion, ahi esta el codigo compilado.

Si alguien puede ayudarme estaria plenamente agradecido.

Saludos a todos.
Título: Re: Problema Hi Tech C usando el entorno MpLab
Publicado por: AleSergi en 26 de Mayo de 2013, 12:28:49
... pero el programa que has escrito, ¿cumple su función correctamente?
¿cual es el problema que inicie en una dirección que no sea la 0x00'
Título: Re: Problema Hi Tech C usando el entorno MpLab
Publicado por: leitoferr en 26 de Mayo de 2013, 14:35:02
El problema es ese, al ser la primera instruccion un salto a la direccion 7b6 el programa se escribe de ahi en adelante, y la ultima direccion de la memoria esta escrita,  lo que supongo que esa instruccion no es la ultima en realidad, sino que el programa tendria que continuar. Por ende no cumple la funcion por la cual lo diseñe.

Por eso no encuentro el error, sera el compilador? Yo desinstale el mplab y el compilador y volvi a instalar, pero el problema persiste. Me eh negado a tener que hacerlo en ASM, o usar el CCS
Título: Re: Problema Hi Tech C usando el entorno MpLab
Publicado por: AngelGris en 26 de Mayo de 2013, 19:58:47
El problema es ese, al ser la primera instruccion un salto a la direccion 7b6 el programa se escribe de ahi en adelante, y la ultima direccion de la memoria esta escrita,  lo que supongo que esa instruccion no es la ultima en realidad, sino que el programa tendria que continuar. Por ende no cumple la funcion por la cual lo diseñe.

Por eso no encuentro el error, sera el compilador? Yo desinstale el mplab y el compilador y volvi a instalar, pero el problema persiste. Me eh negado a tener que hacerlo en ASM, o usar el CCS

  No entiendo cuál es el problema que la última dirección esté escrita.

  echoA está asignado a RA0 que está configurado como entrada. Ten en cuenta que RA0 luego de un PowerOnReset queda configurada como entrada analógica y tú la quieres utilizar como entrada digital. Debes deshabilitar los comparadores que posee el 16F628.

  También estaría bueno que muestres como estás configurando al PIC. Me refiero al MasterClear, Oscilador, WDT, etc...
Título: Re: Problema Hi Tech C usando el entorno MpLab
Publicado por: leitoferr en 27 de Mayo de 2013, 11:17:37
Me faltaba deshabilitar los comparadores  :oops: Gracias!