TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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.
-
... 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'
-
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
-
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...
-
Me faltaba deshabilitar los comparadores :oops: Gracias!