Haz una pregunta
  Foros de Electrónica » Diseño digital » Interfaces y Programación
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

16/06/2013 #1

Avatar de jmth

Problema con TRIS en simulación Proteus
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
16/06/2013 #2

Avatar de Eduardo

jmth dijo: Ver Mensaje
...
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.
¿Como a FALSE? Si querés que acepte TRIS tiene que ser TRUE.
16/06/2013 #3

Avatar de jmth

Eduardo dijo: Ver Mensaje
¿Como a FALSE? Si querés que acepte TRIS tiene que ser TRUE.
Cierto, me he hecho un lío, ya lo he cambiado. De todas formas no funciona ni en un modo ni en otro.
16/06/2013 #4

Avatar de Eduardo

jmth dijo: Ver Mensaje
Cierto, me he hecho un lío, ya lo he cambiado. De todas formas no funciona ni en un modo ni en otro.
Mientras declares el puerto B como 8 entradas (set_tris_b(0xff) ; ) difícilmente puedas puedas sacar algo por ahí.
16/06/2013 #5
Moderador

Avatar de D@rkbytes

jmth dijo: Ver Mensaje
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
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.
16/06/2013 #6

Avatar de jmth

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.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Interfaces y Programación

Lenguajes de programación, gestión y manejo de puertos

Cerrar
Foros de Electrónica » Diseño digital » Interfaces y Programación

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.