uControl
Mayo 20, 2013, 10:58:57 *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Comparando compiladores: C18, CCS y Hi-Tech PIC18  (Leído 3313 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Suky
**----- ^^ ------**
Moderador
dsPIC
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5345


Con Qt...


WWW
« : Agosto 29, 2010, 10:29:49 »

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



Saludos!





« Última modificación: Agosto 29, 2010, 11:07:19 por Suky » En línea

salvador
PIC12F
**
Desconectado Desconectado

Sexo: Masculino
Mensajes: 113


if (think) exist;


WWW
« Respuesta #1 : Enero 04, 2012, 07:32:24 »

Excelente comparativa, si tuviera que votar por alguno seria por CCS por su gran libreria facil de usar pero sobre todo por su precio!!!
En línea

main()
{
if (think)
exist;
}
http://pic-club.net
Zerg
PIC10F
*
Desconectado Desconectado

Mensajes: 33



« Respuesta #2 : Julio 13, 2012, 09:46:46 »

Para que carajo me meti con C18 jajaja  Cry .

Buen post!.
En línea

Nada para decir por ahora......
E_Blue
PIC24F
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 2132


Electric Blue


« Respuesta #3 : Julio 13, 2012, 11:20:27 »

Es tremenda la diferencia de mas de 12K lineas a casi 900 lineas, ¿Miraste el ASM generado por C18? Me da la sensación de que esta incluyendo librerías que no se usan, no puede ser tanta diferencia.

¿Esta corriendo con optimizacion de código C18?
En línea

Procesando...
Si escribes para la (censurado) solo ella va a leerte.

Si quieres ayuda con tu proyecto recuerda agregar información del mismo, y no seas haragán y esperes tener todo servido, esto es un foro, no una bolsa de trabajo.
salvador
PIC12F
**
Desconectado Desconectado

Sexo: Masculino
Mensajes: 113


if (think) exist;


WWW
« Respuesta #4 : Noviembre 23, 2012, 10:58:49 »

Perdon por resucitar este tema, pero deseo preguntar si alguien ha probado el sourceboost c compiler, estoy deseando adquirir una lic FULL, gracias por cualquier comentario,

lo único que recuerdo es que este compilador es tan viejo como yo, ofrecian una ver de linea de comandos que use pocas veces para el PIC16C84, si escribi bien la C, despues me perdi entre tantas ofertas, bueno ojala alguien pueda opinar....

http://www.sourceboost.com/Products/BoostC/Specification.html
En línea

main()
{
if (think)
exist;
}
http://pic-club.net
DarkTemplar23
PIC10F
*
Desconectado Desconectado

Sexo: Masculino
Mensajes: 2


« Respuesta #5 : Enero 20, 2013, 06:27:31 »

Yo particularmente usaba CCS, hasta que vi que no tenia libreria par manejar dispositivos de almacenamiento masivo USB, y tube que lidiar con C18 el cual me parece caro y mas complicado de usar, esperemos que XC8, XC16, cambie la situacion, lo malo es que el lenguaje de programacion no es compatible con C18.
En línea
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.18 | SMF © 2011, Simple Machines
SMFAds for Free Forums
XHTML 1.0 válido! CSS válido!
Página creada en 0.088 segundos con 28 consultas. (Pretty URLs adds 0.009s, 3q)