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
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
Última edición: