¿CCS vs C18? ¿Por qué el CSS más que el C18?

CCS vs C18

¿Cuál es el mejor y por qué?

Me gustaría ver sus comentarios respecto a esto, encima los dos de pago. Menos mal que los ASM son gratuitos.

He instalado el C18 y no se ejecutarlo, sólo entro en la dirección C:\MCC18\bin y veo todos los exe pero solo funciona con CMD.

¿C18 es así?
 
Pero Meta que no estabas liado con una de 32 y ahora es una menor de 18...

Yo cuando empece, solo habia el hi-tech y ccs y basic, descarte el basic al no ser un sistema estructurado y poco elegante y me pase al C.

Primero probe el de hitech y el lio fue monumental, no sabia por donde empezar, se tenia que programar casi todo.

Despues me pase al CCs y en pocas horas ya andaba la cosa.
El C18 no lo he probado pero supongo que se integra como los otros.

Defines el lenguaje cuando creas el proyecto, sino mira bien el menu project y me entenderas.
 
Hola, estoy programando un 16f84 en Multisim en lenguaje C... tienes alguna idea de como deberia estructurar el codigo? conosco de C, pero no se como hacerlo en multisim...

Saludos
 
Pues yo voto por C18 en forma muy personal.

Pero creo que es mejor CCS, ¿Por que la contradiccion?
Pues a mi en lo personal me gusta el C18 por el simple hecho de que lo hizo microchip y por lo tanto esta perfectamente integrado con todas sus herramientas. Aparte de toda la documentacion por parte del fabricante para el uso de sus librerias libres.

Pero he de considerar que CCS es mejor, por el hecho de poder programar no solo la familia 18 si no tambien la familia 16. Es bastante mas practico(Pude hacer una aplicacion USB sin saber nada de este protocolo con unas cuantas funciones) y tiene muchas librerias muy utiles. Tiene su propio entorno de programacion y es compatible con MPLAB.

En cuanto a lo del uso de C18, si es asi lo que pasa es que esta integrado a MPLAB por lo cual tienes que crear un proyecto con la suite de C18 en el MPLAB. Ya ahi editas como si fuera en C. Al principio se siente extraño ya que estas acostumbrado a usar el ASM ahi, pero te terminas acostumbrando.

Saludos
 
Última edición:
Hola, estoy programando un 16f84 en Multisim en lenguaje C... tienes alguna idea de como deberia estructurar el codigo? conosco de C, pero no se como hacerlo en multisim...

Saludos

Tengo el Multisim 11 y la programación en C está basada en el compilador de Hi-Tech,
por lo que deberías buscar info al respecto pero no es muy difícil ya que maneja el estándar ANSI-C
 
ami pensar programar en c18 es mucho mejor, debido a que no toda la vida vamos a estar programando pics de 8bit, algun dia tendremos la ansiedad por dar el salto a programar un dspic o un pics de la serie 24 o 32 y a este nivel los compiladores de microchip(c30,c32) no tienen enemigos, entonces al dominar c18 no sera muy dificil dominar dichos compiladores.....en conclusion c18 es el camino
 
Hola todos...

Compáñero Carlos Alexis, te comento que en mi busqueda de programar el 16F84 con Multisim en C, me tope con este manual del compilador que usa el Multisim ya que al parecer no se le puede agregar otro, o si?

Saludes a todos y aca les dejo mi primer aporte como integrante de esta comunidad "User Guide PICC lite compiler ANSI C"...

Exitos...
 

Adjuntos

  • User Guide PICC lite compiler ANSI C.zip
    1.2 MB · Visitas: 304
El mejor es C18 ya que se puede usar diferentes archivos para extructurar y ordenar el programa. Tambien se puede adicionar assembler facilmente. Y sobre todo el codigo generado es mas optimizado que al usar CCS.
 
En efecto, el C18 es el más recomendable para hacer practicas profesionales. Incluso el compilador de Hi-tech es muy parecido, hasta el mismo microchip le hace hace propaganda.
Personalmente el entorno del Hi-Tech el IDE Hi-Tide es más agradable que el MPLAB y el código entre los dos es similar... pero es una lástima que no tenga mucha fama en el foro.
 
Yo hace mucho que uso CCS ...es con lo que empezé en el mundo de los PIC's...pero ahora quiero aprender a usar C18 y C30 para programar PIC18FXX y PIC24FXX asi también ( en un futuro ) los dsPIC
 
En más de un lugar he leído que el que tiene mayor capacidad de compresión es el c18, así que para aplicaciones mas grandes, obviamente es mucho más recomendable. Yo también empezé con el CCS pero ya que yo estuve buen tiempo con el ASM me molestaba un poco el hecho de hacer una comunicación sin saber siquiera que registros utilizaba o al menos algo del protocolo de comunicación, así que el C18 fue el punto medio perfecto para mí :LOL:.
Conclusión: empiecen con CCS y con algo de nivel pasen al C18.
 
yo uso C18, y lo del USB no me costó mucho, ni con el framework anterior ni con el actual, aunque el actual esta un poco mas simplificado.
Anteriromente programé en ASM, aunque no muchas aplicaciones, y empezar con C18 no me ha costado nada, ademas de que ya habia programado algo de C para aplicaciones en la PC.

Del CCS no puedo decir mucho, ya que no lo he visto.
 
Hola:

La verdad que en CCS mucho lo ven como el mejor. Para mi, ya que el C18 aunque sea más engorroso según tengo entendido, tiene la ventaja que es de MPLAB con el resultado de usar todos los PIC sin problemas. Está bien el C32 porque quiero manejar los PIC32 algún día que son muy curiosos.

Ver manual C18.

Ver manual PIC32.

Saludo.
 
El CCS, es un buen compilador pero el problema se da cuando se tiene que optimizar la memoria,
Ejm:
Código CCS
.................... output_high(PIN_B0); pon a 1 la salida puerto B, pin 0 "B0"
código ASM generado por CCS
0015: BSF 03.5
0016: BCF 06.0
0017: BCF 03.5
0018: BSF 06.0
a consumido cuatro lineas de memora ROM del PIC


Programando en ASM
BSF PORTB,0; Bit Set File
eso seria todo para poner 1 la salida puerto B, pin 0 "B0"

Un poco mas complejo con cualquier copilador C sea este CCS, HI-TECH,

Código probado en CCS
#BYTE PORTB = 0X06
#BIT B0 = PORTB.0

B0=0;
al compilar te genera
BSF PORTB,0;

HI-TECH & C18 ya tiene creada ejem pic12f509.h donde esta declarada todas la variables del micro

NO se podría negar la calidad de las funciones que tiene CCS ya implementadas solo se las debe conocer y utilizar, pero como mencione anteriormente el consumo de memoria se duplica o triplica.
Dependiendo de la aplicación se deberá de tomar los corectivos necesarios.
 
Como tu dices movlwjps, no muchos conocen esa opción de "#Use Fast_Io(B)" y no la colocan en el código y les crea código extra, pero igual te genera código extra.

Yo personalmente cuando programo mezclo Código C y Código ASM, en el proyecto que este realizando para optimiza recursos, no soy un experto en ASM, pero hay ciertas cosas donde con un pocas lineas en ASM la tienes como estructuras en tablas.

Te invito a que realices un código en C regularmente complejo, y compiles en CCS, Hi-tech, y compares códigos ASM resultantes, el consumo de ROM y RAM que te genera.

Mira este análisis que hace el amigo "SUKY" con su tema: "Comparando compiladores: C18, CCS y Hi-Tech PIC18"

Revisando la siguiente tabla de comparaciones que presenta CCS, en la sección 5, donde muestra algunas implementaciones, parecía exagerado la diferencia, así que mejor probar uno mismo:

Se compara CCS 4.108, C18 3.31 y Hi-tech 9.51.

Tamaño del archivo hex al usar printf:

C18:
Código:

#include <p18f4620.h>
#include <usart.h>
#include <stdio.h>
void main(){
unsigned char Var=10;

OpenUSART(USART_TX_INT_OFF & USART_RX_INT_ON &
USART_ASYNCH_MODE & USART_EIGHT_BIT &
USART_CONT_RX & USART_BRGH_HIGH ,129);
printf("Variable=%u",Var);
while(1);
}

Hi-Tech:
Código:

#include <pic18.h>
#include "usart.h"
#include <stdio.h>
#include "serial.h"
void main(){
unsigned char Var=10;

init_comms();
printf("Variable=%u",Var);
while(1);
}

CCS:
Código:

#include <18F4620.h>
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

void main(){
char Var=10;

printf("Variable=%u",Var);
while(1);
}


C18 3.31: 12372 bytes

CCS 4.108: 883 Bytes

Hi-Tech 9.51: 4649 Bytes

Velocidad de ejecución:

Código:

#include <p18f4620.h>

unsigned int uiCRC16(unsigned char value,unsigned int poly,unsigned int init_value){

unsigned int res;
unsigned int i;

res=value;
res^=init_value;
for(i=0;i<8;i++){
if(res & 1){
res>>= 1;
res^=poly;
}else{
res>>= 1;
}
}
return(res);
}

void main(){
float a,b,c;
unsigned int k;

a=12569.458;
b=8753.267;
c=a*b;

k=uiCRC16(0xAA,0xA6BC,0x00AA);
while(1);

}


C18:
Asignación 10 Ciclos. (Asignación del numero flotante a la variable)
Asignación 20 ciclos.-
Calculo 210 ciclos.- (Calculo de a*b)

Ejecución funcion 379 ciclos.-

CCS:
Asignación 8 ciclos.-
Asignación 8 ciclos.-
Calculo 133 ciclos.-

Ejecución funcion 204 ciclos.-

Hi-Tech

Asignación 7 ciclos.-
Asignación 7 ciclos.-
Calculo 425 ciclos.-

Ejecución funcion 153 ciclos.-



Código:

k=0x1563;
low=*((char *)&k);
high=*((char *)&k+1);


CCS:

Código:

33: k=0x1563;
0018 0E15 MOVLW 0x15
001A 6E12 MOVWF 0x12, ACCESS
001C 0E63 MOVLW 0x63
001E 6E11 MOVWF 0x11, ACCESS
34: low=*((char *)&k);
0020 6A16 CLRF 0x16, ACCESS
0022 0E11 MOVLW 0x11
0024 6EE9 MOVWF 0xfe9, ACCESS
0026 C016 MOVFF 0x16, 0xfea
002A CFEF MOVFF 0xfef, 0x13
35: high=*((char *)&k+1);
002E 6A16 CLRF 0x16, ACCESS
0030 0E11 MOVLW 0x11
0032 6E15 MOVWF 0x15, ACCESS
0034 0E01 MOVLW 0x1
0036 2415 ADDWF 0x15, W, ACCESS
0038 6E01 MOVWF 0x1, ACCESS
003A 0E00 MOVLW 0
003C 2016 ADDWFC 0x16, W, ACCESS
003E C001 MOVFF 0x1, 0xfe9
0042 6EEA MOVWF 0xfea, ACCESS
0044 CFEF MOVFF 0xfef, 0x14



// 24 ciclos.-


C18:
Código:

18: k=0x1563;
0EBC 0E63 MOVLW 0x63
0EBE 6EF3 MOVWF 0xff3, ACCESS
0EC0 0E01 MOVLW 0x1
0EC2 CFF3 MOVFF 0xff3, 0xfdb
0EC4 FFDB NOP
0EC6 0E15 MOVLW 0x15
0EC8 6EF3 MOVWF 0xff3, ACCESS
0ECA 0E02 MOVLW 0x2
0ECC CFF3 MOVFF 0xff3, 0xfdb
0ECE FFDB NOP
19: low=*((char *)&k);
0ED0 0E01 MOVLW 0x1
0ED2 50DB MOVF 0xfdb, W, ACCESS
0ED4 6EE7 MOVWF 0xfe7, ACCESS
0ED6 0E03 MOVLW 0x3
0ED8 CFE7 MOVFF 0xfe7, 0xfdb
0EDA FFDB NOP
20: high=*((char *)&k+1);
0EDC 0E02 MOVLW 0x2
0EDE 50DB MOVF 0xfdb, W, ACCESS
0EE0 6EE7 MOVWF 0xfe7, ACCESS
0EE2 0E04 MOVLW 0x4
0EE4 CFE7 MOVFF 0xfe7, 0xfdb
0EE6 FFDB NOP


// 22 Ciclos

Hi-Tech
Código:

16: k=0x1563;
15EE 0100 MOVLB 0
15F0 0E63 MOVLW 0x63
15F2 6FE0 MOVWF 0xe0, BANKED
15F4 0E15 MOVLW 0x15
15F6 6FE1 MOVWF 0xe1, BANKED
17: low=*((char *)&k);
15F8 C0E0 MOVFF 0xe0, 0xf7f
15FA FF7F NOP
18: high=*((char *)&k+1);
15FC C0E1 MOVFF 0xe1, 0xf7e
15FE FF7E NOP


// 9 Ciclos.-


Código:

unsigned char Buffer[200],Buffer1[200],*Ptr,*Ptr1;

Ptr=&Buffer[0];
Ptr1=&Buffer1[0];
for(k=0;k<200;k++){
*Ptr1++=*Ptr++;
}
while(1);


CCS 7214 ciclos
C18 7025 ciclos
Hi-tech 5219 ciclos
 
Última edición:
NO es hacer promoción a HI-TECH, pero por algo su costo http://www.microchipdirect.com/productsearch.aspx?Keywords=SW500006

La historia que tiene........

Los industrializados en los sistemas basados en uC, ya tienen establecidos sus funciones para sus interfaces.

Pero nosotros no tenemos el tiempo y la experiencia para crear estas funciones, pero CCS ya nos a facilitado muchas cosas con sus funciones, y en realidad lo que buscamos es que funcione, poco tiempo en su implementación y sea fácil de hacer.
 
Última edición:
si deseas optimizar memoria utiliza C18
si deseas sencillez utiliza CCS

ninguna herramienta es mejor que otra, el saber cuando y como utilizarlas es el asunto en el que debes centrarte.. yo empece trabajando con PIC CCS y se me hizo facil aprender C18 debido a que los dos compiladores son muy similares.

"a pesar de aprendido C18 la mayoria de las aplicaciones las sigo programando en CCS si te molesta el consumo de memoria simplemente no utilices las librerias integradas y ya esta"
 
Última edición:
Atrás
Arriba