CCS, Proteus y 16f88, registro OSCCON

Hola, por fin me he decidido a pasar a probar C en los pics por la rapidez de programación pero resulta que tengo un problema con el dichoso. 16f88 para variar y resulta que no he podido hacer ninguna simulación en el proteus y no se porque. Alguien me podria decir si ve el problema o pasarme un codigo de ejemplo de este micro para CCS? He probado com MikroC y va bien el problema es que no quiero usar MikroC aunque me gusta mas porque no soporta mi ICD2 en debbuger cosa que si hace el CCS. Alguna sugerencia para solventar mi problema? Gracias. Adjunto una imagen del error en el proteus. Y el valor del registro OSCCON durante la simulación.

Este es el código:

#include <16F88.h>
#device ICD=TRUE
#device adc=8
#FUSES NOWDT, INTRC_IO, NOPUT, NOMCLR, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG, NOPROTECT, NOFCMEN, NOIESO
#use delay(clock=8000000)

#byte TRISA=0xff
#byte PORTA=0x00
#byte TRISB=0X00
#byte PORTB=0x00

void main()
{

setup_adc_ports(sAN0|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_16);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_oscillator(OSC_8MHZ|OSC_INTRC);
set_adc_channel(0);

do{
PORTB=read_adc();
delay_ms(50);
} while(1);


}
 

Adjuntos

  • isis_168.jpg
    isis_168.jpg
    134.6 KB · Visitas: 47
Hola Twistx77:

¿Usted a pagado el CCS?





















Bromas a parte. No le podré ayudar porque no se C, estoy pensando en aprender ASM cosa que ahgo actualmente y saber también C sin olvidar el ASM. ¿Realmente nota la diferencia?

Para eso puedes usar los 18F que están orientado a C y sacas mejor rendimiento. Eso si, el 16F88 aunque no está orientado a C, está preparado para ello ya que es mñas potente. Es el posible sustituto de famoso y popular 16F84.

Un cordial saludos.
 
La versión del CCS supongo que es pagada porque me la ha pasado un profesor en un CD pero la verdad no lo se. En cuanto al lenguaje, controlo bastante bien ASM pero quería aprender C ya que hay muchos programas que aunque ocupen más memoria en C son muchísimo más fácil y rápido de desarrollar que en ASM. Un saludo
 
Hola, yo también estoy aprendiendo a programar en c, estoy utilizando ccs, como dije apenas estoy aprendiendo y no sé si lo que te diga este 100% bien (además no sé cómo debería de estar funcionando o que tarea debería realizar el pic) pero revise un poco tu código y en primera instancia no veo donde declaraste entradas y salidas, me refiero a que en tu código pones:

#byte TRISA=0xff
#byte PORTA=0x00
#byte TRISB=0X00
#byte PORTB=0x00
}

y #byte (aunque con mayúscula "#BYTE") es lo que yo utilizo para indicarle donde se encuentra ese registro o donde quiero ponerlo, no sé si soy claro. Al poner:

#BYTE PORTA=0X00

lo que estás haciendo es indicar al compilador que cuando tu pongas en tu programa por ejemplo:

PORTA=0xff;

estarás dando el valor de ff hexadecimal a la dirección 00 hexadecimal, te dejo un ejemplo de un programa que acabo de realizar, sé que era mejor hacerlo con interrupciones pero creo que es mejor ir aprendiendo poco a poco.

también te puedo proporcionar un libro de ccs con el que me di una idea de cómo programar en c, solo que pesa 25 Mb y no puedo cargarlo aquí, si te interesa puedo subirlo a otra página y te mando el link, avísame si lo quieres, hasta pronto y buena suerte.
 

Adjuntos

  • 2.rar
    46.9 KB · Visitas: 39
Para anexar una posición de registro a un nombre en CCS, se hace como redmaster lo indica y tambien de la forma
Código:
#BYTE TRISC = GETENV("SFR:TRISC")
por ejemplo, pero básicamente es lo mismo, aunque escrito así lo comprendes mejor.

Ojo, que TRISC solo es un nombre, puede ser lo que sea.

Saludos
 
Atrás
Arriba