Problema con TRIS en simulación Proteus

#1
Hace ya tiempo que estoy intentando meterme en la programación de PICs en C. Hoy por fin he conseguido compilar, porque tenía problemas con las librerías y eso... Y simulando en el Proteus me salta un error que dice "TRISB instruction is deprecated for PIC1684", y el tiempo sigue corriendo pero no hace nada.

He investigado sobre ello y se debe a que en algunos PIC la función TRISX no funciona correctamente (en la práctica), y por ello sale como error en el simulador. Sin embargo, supuestamente el 16f84A no tiene éste problema.

Estoy utilizando el CCS C compiler y hay gente que lo ha solucionado entrando en tools, device editor, seleccionando el uC, other features y cambiando la pestaña de TRIS a TRUE. Ya lo he hecho pero me sigue dando el mismo error.

Por si puede servir adjunto el código del programa. Es el típico "enciende y apaga el puerto B". Da igual si tiene algún error a parte del dicho, la cuestión es saltar ése primer obstáculo.

#include <16f84a.h>
#use delay(clock=4000000)
#byte port_b=0x06
#fuses NOWDT

int contador;

void main(){
set_tris_b(0xff);
port_b=0;

while(true){
contador=0xff;
port_b=contador;
delay_ms(1500);
contador=0;
port_b=contador;
delay_ms(1500);
}
}

Éste post es tanto por aquellos que buscan la solución de éste error como por preguntar si alguien más sabe cómo solucionar mi caso particular. Gracias otra vez que ya es la segunda vez que pregunto hoy :LOL:
 
Última edición:
#2
...
Estoy utilizando el CCS C compiler y hay gente que lo ha solucionado entrando en tools, device editor, seleccionando el uC, other features y cambiando la pestaña de TRIS a false. Ya lo he hecho pero me sigue dando el mismo error.
:confused: ¿Como a FALSE? Si querés que acepte TRIS tiene que ser TRUE.
 
#5
Hace ya tiempo que estoy intentando meterme en la programación de PICs en C. Hoy por fin he conseguido compilar, porque tenía problemas con las librerías y eso... Y simulando en el Proteus me salta un error que dice "TRISB instruction is deprecated for PIC1684", y el tiempo sigue corriendo pero no hace nada.

He investigado sobre ello y se debe a que en algunos PIC la función TRISX no funciona correctamente (en la práctica), y por ello sale como error en el simulador. Sin embargo, supuestamente el 16f84A no tiene éste problema.

Estoy utilizando el CCS C compiler y hay gente que lo ha solucionado entrando en tools, device editor, seleccionando el uC, other features y cambiando la pestaña de TRIS a TRUE. Ya lo he hecho pero me sigue dando el mismo error.

Por si puede servir adjunto el código del programa. Es el típico "enciende y apaga el puerto B". Da igual si tiene algún error a parte del dicho, la cuestión es saltar ése primer obstáculo.

Éste post es tanto por aquellos que buscan la solución de éste error como por preguntar si alguien más sabe cómo solucionar mi caso particular. Gracias otra vez que ya es la segunda vez que pregunto hoy :LOL:
Para evitar que aparezca esa advertencia en proteus usando el PIC16F84/A,
en vez de utilizar la instrucción set_tris_x(); utiliza las siguientes declaraciones en la cabecera del programa..
#byte TRISA = getenv("SFR:TRISA")
#byte TRISB = getenv("SFR:TRISB")

Y ahora utiliza TRISA y TRISB en el main para configurar los puertos.
Por ejemplo...
TRISB = 0;

Nota que en tu código estás configurando el puerto B como entradas y quieres usarlo cómo salidas.

Saludos.
 
Última edición:
#6
Genial, funciona! Era la respuesta que necesitaba, gracias a todos otra vez. Lo del =0xff es lo que pasa cuando has aprendido en casa y llevas 3 meses sin programar.
 
Arriba