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

Hola:

No te preocupes en ello. Sólo cómpralo. En caso de querer tenerlo, pídeselo a un amigo que pagó por él o cómpraselo barato. Eso si, cuando se actualicen, hay qu epagar las novedades si son notables. Subversiones para corregir errores y añadir más PIC son gratuitas. Hay muchas alternativas para conseguir el C18 o el C32 sin pagar, por ejemplo los 60 días de pruebas. Hay más aún que muchos sabemos y no hace falta nombrarlo por aquí, es el que le gusta a casi tod@ el mundo.


En lo que dijo Moyano, entonces es bueno C18 por si das el salto a C32, una empresa donde vivo, usan el PIC32 desde hace 4 años. Lo que me llama la atención, es que por fin pusieron PIC32 de 28 y 40 pines con USB 2.0 y todo, es de agradecer porque s epuede poner en la protoboard, eso si, si quieres potencia de 32 bits real o manejo de 32 bits de puertos, ya son PIC32 de 60, 80 y 100 pines. Por ahora, losdel foro no les interesa mucho aprender PIC32 de 28 y 40 pines como los de 16F886/887 y 18F4550/2550. Cuando empeice haber más información, ya será otro cantar.

https://www.forosdeelectronica.com/f24/pic32-28-40-pines-69636/

Entonces mejor aprender C18, más motivo tengo. De todas maneras, el C18 va a cambiar con el tiempo para que sea más cómodo que ahora. ¿Cuándo?

Moyano, gracias por la información.

Saludo.

Hola. yo quiero aprender a utilizar los PIC32. Pero lo que dices que en el foro no interesa, es por que para la mayoría de los proyectos que desarrollamos, nos sobra con el pic18 o con el pic24. El día que a alguno utilicé las librerías gráficas del PIC32 para implementar un LCD gráfico y cuelgue el código, y a la gente lo vea un solución atractiva, veras como la gente se pone a estudiarlo. Un saludo
 
Hola. yo quiero aprender a utilizar los PIC32. Pero lo que dices que en el foro no interesa, es por que para la mayoría de los proyectos que desarrollamos, nos sobra con el pic18 o con el pic24. El día que a alguno utilicé las librerías gráficas del PIC32 para implementar un LCD gráfico y cuelgue el código, y a la gente lo vea un solución atractiva, veras como la gente se pone a estudiarlo. Un saludo

Hola:

Ahí tienes la razón del mundo mi muy distinguido amigo, a parte de ello, faltan libros en español del PIC32, hay revistas españolas con tutoriales básicos del PIC32. Leí libros en Inglés con ejemplosincluidos, me han gustado los PIC32. La verdad es mejor usar C para ellos, así que practicar C18 primero es de lo mejorcito, si lo haces con PIC32 de repente, no pasa nada, es como aprender C en PC que es más potente aún.

Lo bueno que ya aparecen PIC de 28 y 40 pines como los 16F886/7 y los 18Fx550 para probar.

Aún falta más documentación y más gente que se animen, lo están haciendo pero lentamente, al menos lo hacen y sobre todo ya hay Web qu eanima.

http://www.aquihayapuntes.com

Un saludo.
 
Lo bueno que ya aparecen PIC de 28 y 40 pines como los 16F886/7 y los 18Fx550 para probar.

disculpen mi ignorancia pero los 16F886/7 y los 18Fx550 son ds pic's? acaso son los PIC32 en 28 y 40 pines
o son pics comunes como los de la famila 16f y 18f
 
Hola:

Los dsPIC son microcontroladores de 16 bits.
Los PIC16F y PIC18F son de 8 bits, uno de media gama y el otro de gama alta.
Los PIC16F1 son de gama media mejorada con 14 nuevas instrucciones del asm.
Los PIC32 son de 32 bits, normalmente son de 60, 80 y 100 pines, ahora el fabricante les dio por hacerlos de 28 y 40 pines para vender más me imagino.

Saludo.
 
amigos me anime por el basic estoy usando el proton que fue bien fácil aprenderlo

pero quiero insertar assembler y no puedo

este es el código
DEVICE = 16f628A
XTAL = 20

ALL_DIGITAL true ;Pongo todo a digital

Dim led As Byte ;variable "led"

TRISB = 0 ;pongo como salida

inicio:
@movlw b'00000001' ;cargo W con el byte
@movwf led ;lo mando a la variable "led"
@movf led,W ;mando el contenido de la variable "led" a W
@movwf PORTB ;mando a visualizar el contenido de la variable "led" a PORTB
goto inicio ;cierro en un bucle infinito

me sale error y no comprendo bien
por favor alguien que me ayude
 
Hola a todos, tengo una problema, he instalado mplab c18, pero no se ni como se abre el programa, lo tengo instalado en esta ruta de la computadora, C:\Program Files\MCC18, pero no se creo ningun acceso directo, aunque hay un monton de archivos dentro a los que les di enter y nada.

Ayuda. o es que que tengo que tener instalado MpLab 8.50 y el c18 es una expansion de este.

Muchas gracias a todos quienes respondan.

Javier - Ecuador
 
Javier

El mplabC18 es un copilador no tiene IDE propio, este se une al MPLAB como su IDE de trabjo, una forma fácil de hacer un proyecto con C18 o en general es:

(RESUMEN SIMPLISTA)
Abre el MPLAB. menu: Project->Project Wizard (este te ayudara a configurar tu proyecto)
Step One: selecciona el PIC que utilizas en Devices:
Step Two; el lenguaje de compilación en tu caso: C18
Step Three: carpeta, donde se ubicara el proyecto
Step Four: si tienes algunos archivos pre-creado, si no tienes continua
Sunnary: finalizar y empezar a desarrollar tu código del proyecto
 
Hola a todos los foreros. Leyendo todo el hilo me encantaría con el respeto de todos los lectores intentar aclarar ciertas cosas que quizá están generando confusiones:

1. Al hablar de "C" se habla como tal del lenguaje de programación mas no de las herramientas existentes para programar haciendo uso de dicho lenguaje. Para eso se definen unos estándares siendo el caso para el Lenguaje C la definición de ANSI C89, ANSI C99 y la última lanzada en 2011 ANSI C11. Obviamente un estándar posterior significa mejoras respecto al estándar anterior. De ahí el hecho de que ciertas herramientas (compiladores) se acerquen o no a un estándar en cuestión. Por eso herramientas como C18 o Hitech C se destacan por acercarse a un estándar ANSI. En el caso de hitech C en sus últimas versiones PRO cumplen con el estándar ANSI C99 al igual que SDCC(GNU Compiler), el C18 se acerca bastante al ANSI C89, y el CCS C no tiene filiación por ningún estándar. El lenguaje se creó en los Laboratorios Bell para facilitar la creación de Sistemas Operativos principalmente ya que el desarrollo de estos sistemas en lenguaje ensamblador no sólo imposibilitaría el desarrollo del mismo por el tiempo empleado sino también por los costos operativos. Así que en terminos generales el lenguaje que se inventó con el fin ya mencionado ha sido tan versátil que no solamente ha servido para la creación de Sistemas Operativos sino también para la creación de aplicaciones, GUI (Graphic User Interfaces), La escritura de protocolos de comunicación entre muchos de ellos mencionar al TCP/IP (la columna vertebral de Internet) y en el caso de nosotros el desarrollo de software embebido. Por eso no creo de ninguna manera que sea un lenguaje para principiantes. De hecho los programas más importantes aún al día de hoy dentro de su núcleo contienen extensas líneas de código C compilado.

2. Cuando se menciona a MPLAB o MPLABX se está haciendo referencia a un IDE (Integrated Development Environment) que significa "Entorno de Desarrollo Integrado" y a grandes rasgos no es más que un editor con un set de herramientas y plugins que nos facilitan el tema de edición de un programa sin importar el compilador y el lenguaje utilizado. De aqui aclarar que si por ejemplo usamos MPLABX y este tiene plugins para enlazadar compiladores para lenguajes como Pascal, C, Java, lo podriamos usar indistintamente de las herramientas de codificación a las que hagamos referencia.

3. El desarrollo de compiladores como C18, Hitech C, o CCS, se dió por la misma versatilidad ofrecida del lenguaje C. Pero esta versatilidad no se debe confundir con las capacidades de cada compilador, porque una cosa es la especificación del lenguaje y otra muy diferente es que en el desarrollo del compilador se tengan en cuenta todos los criterios en el estándar de dicho lenguaje. De ahí el paradigma del porque unos compiladores tienen ciertas cosas que otros no y del porque unos si cumplen con el estándar ANSI C como son C18, Hitech C, SDCC y otros no como en el caso del CCS C. (Esto es para el caso de los microcontroladores PIC de Microchip)

4. Este punto es sobre el rendimiento. Con el desarrollo de los algoritmos para compiladores de hoy en día el tema del rendimiento en cuanto a código ensamblado resultante es más un tema de mercadeo que un tema técnico. Hago esta afirmación por la siguiente situación: Cuando se está escribiendo una aplicación en C para PC sobre plataformas Linux usando el compilador GCC, al hechar un vistazo al codigo ensamblado resultante, las lineas de ensamblador son en extremo cortas. Tan cortas que inclusive me atrevería a pensar que en algunos tramos de códigos hechos en C el ensamblado resultante resulta mas corto que como uno se lo imaginó en caso de haber querido codificar en ensamblador. Lo curioso de todo es que si compilamos en C++. ¡El resultado es identico!. En cuanto a los compiladores para sistemas embebidos siendo nuestro caso los PIC de Microchip, este rendimiento está condicionado por el factor $Dinero$. Por eso si compilamos con una versión PRO de Hitech C tendriamos enormes diferencias de rendimiento respecto a otros compiladores, ya que este usa un algoritmo especial llamado OCG (Omniscient Code Generation) que puede reducir el consumo hasta en un 50%. Por eso si quieres rendimiento debes pagar!!. Esta es otra de las razones por las que Microchip compró a Hitech Software.

5. La pelea de siempre: Si C o Ensamblador. Aunque el ensamblador nos da la posibilidad de crear en teoría código "más reducido", esto es demasiado relativo porque en el fondo es el desarrollador quien hace el código y es este quien puede hacerlo tan largo o tan corto como su mente en ese instante le de esa capacidad. Esto también se cumple para el lenguaje C. Pero hay algo que tiene el lenguaje C que no tiene ningún lenguaje ensamblador y es su Portabilidad. Imaginemonos teniendo que aprender ensamblador de Microchip, pero si la aplicación cambia a 8051 debemos aprender ensamblador para 8051. Que tal si depronto nos toca ARM, o Freescale, o AVR, y asi una cantidad ingestuosa de ensambladores sin incluir las arquitecturas de cada núcleo. Es ahí donde el C gana por goleada.

Para terminar: Estos comentarios los hago basandome en mi humilde experiencia. Empecé con ensamblador y duré asi 3 años. Pero cuando los programas se te van haciendo más y más complejos, con el tiempo estás pidiendo a gritos una herramienta que te saque del atolladero; siendo mi caso el lenguaje C el que me sacó (quisiera ver yo el código del protocolo USB o los sockets TCP/IP sólo en ensamblador). Cual es el mejor compilador para lenguaje C en micros PIC? Eso depende de la aplicación en sí y de su complejidad interna, y también del tiempo de desarrollo. Personalmente usé durante dos años CCS C pero tuve que migrar a C18 y a Hitech C. Cuales fueron las razones?. La inestabilidad de CCS C, su imposibilidad de linkar, su incapacidad para llamar a punteros de funciones y esas infernales actualizaciones que quitaban unos bugs y dejaban otros; entre otras cosas.

Un cordial saludo a todos.
 
Última edición:
Hola:

Llevo con el ASM desde el 2008 y sigo aprendiendo con él. Poco a poco en estos momentos estoy con el C del CCS porque el libro te lo explica con ese compilador. En realidad prefiero las cosas de los propios fabricantes de PIC. El ASM, cada vez lo entiendo un poco mejor, aún así no teng soltura. Me pego media vida en hacer algo grande y largo.

editcod.gif


Me estoy pasando C lentamente sin avandonar el ASM. Lo bueno de tener algo de conocimiento sobre de ASM, es que puedes incrustar código de ASM dentro de C con sus correspondientes etiquetas.

En CCS, si sacan un PIC nuevo, no puedes acceder a ciertas funciones, a veces esperar un año para que lo hagan. Así que a insertar etiquetas para escribir ASM. En lo sinstitutos y universidades obligan a usar ASM, nada de C, exceptuando algunos casos. En el mio, sólo ASM desde empezar. Si queremos como optativa, escogemos el C.

Tienes razón en una cosa. Hay tantos ensambladores como tantos micros hay en el mercado. El C es un estandar que te abre las puertas para otras marcas demicros. En este mismo tema puse una lista de marcas, seguro que se me escapa algunas.

Lenguaje-C.png


Bajo mi punto de vista. Es bueno meterte en ASM para entender bien los micros por dentro como el 16F84A y luego el C. El 16F84A tiene su propio libro en español y es de lo mejorcito.

www.pic16f84a.org

Estoy con otro libreo de ASM y C al mismo tiempo. No tenía ni la mejor idea de lo rápido que se trabaja C y fácil de entender otros uC así sin más, solo hay que aprenderse los nombres de los registros.

Hay ejemplos del PIC32 en ASM y casi me da algo, no entiendo ni papa. Los ejemplos que vienen tanto en C como en ASM, en la hojas de datos son en ASM.

otros sencillos con el C.
Código:
/*********************************************************************
 *
 *      Example Binky LEDs
 *
 *********************************************************************
 * FileName:        blinky_leds.c
 * Dependencies:    plib.h
 *
 * Processor:       PIC32MX
 *
 * Complier:        MPLAB C32
 *                  MPLAB IDE
 * Company:         Microchip Technology Inc.
 *
 * Software License Agreement
 *
 * The software supplied herewith by Microchip Technology Incorporated
 * (the “Company”) for its PIC32MX Microcontroller is intended
 * and supplied to you, the Company’s customer, for use solely and
 * exclusively on Microchip Microcontroller products.
 * The software is owned by the Company and/or its supplier, and is
 * protected under applicable copyright laws. All rights are reserved.
 * Any use in violation of the foregoing restrictions may subject the
 * user to criminal sanctions under applicable laws, as well as to
 * civil liability for the breach of the terms and conditions of this
 * license.
 *
 * THIS SOFTWARE IS PROVIDED IN AN “AS IS” CONDITION. NO WARRANTIES,
 * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
 * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
 * IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
 *
 *********************************************************************
 * $Id: blinky_leds.c 9390 2008-06-16 23:43:04Z rajbhartin $
 *
 * $Name:  $
 *********************************************************************
 * This program uses Exploer-16 to blink all of its LEDs at once.
 *
 * Platform:     Explorer-16 with PIC32MX PIM
 *
 ********************************************************************/
#include <plib.h>

// Configuration Bit settings
// SYSCLK = 80 MHz (8MHz Crystal/ FPLLIDIV * FPLLMUL / FPLLODIV)
// PBCLK = 40 MHz
// Primary Osc w/PLL (XT+,HS+,EC+PLL)
// WDT OFF
// Other options are don't care
//
#pragma config FPLLMUL = MUL_20, FPLLIDIV = DIV_2, FPLLODIV = DIV_1, FWDTEN = OFF
#pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_8

#if defined (__32MX460F512L__) || defined (__32MX360F512L__) || defined (__32MX795F512L__)
#define SYS_FREQ (80000000L)
#elif defined (__32MX220F032D__) || defined (__32MX250F128D__)
#define SYS_FREQ (40000000L)
#endif

int main(void)
{
    int i;

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // Configure the device for maximum performance but do not change the PBDIV
    // Given the options, this function will change the flash wait states, RAM
    // wait state and enable prefetch cache but will not change the PBDIV.
    // The PBDIV value is already set via the pragma FPBDIV option above..
    SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE);


    // Explorer16 LEDs are on lower 8-bits of PORTA and to use all LEDs, JTAG port must be disabled.
    mJTAGPortEnable(DEBUG_JTAGPORT_OFF);

    // Make all lower 8-bits of PORTA as output. Turn them off before changing
    // direction so that we don't have unexpected flashes
    mPORTAClearBits(BIT_7 | BIT_6 | BIT_5 | BIT_5 | BIT_4 | \
                             BIT_3 | BIT_2 | BIT_1 | BIT_0 );

    mPORTASetPinsDigitalOut( BIT_7 | BIT_6 | BIT_5 | BIT_5 | BIT_4 | \
                             BIT_3 | BIT_2 | BIT_1 | BIT_0 );

    // Now blink all LEDs ON/OFF forever.
    while(1)
    {
        mPORTAToggleBits(BIT_7 | BIT_6 | BIT_5 | BIT_5 | BIT_4 | \
                             BIT_3 | BIT_2 | BIT_1 | BIT_0 );

        // Insert some delay
        i = 1024*1024*10;
        while(i--);
    }
}

Código:
/*********************************************************************
 *
 *      PIC32MX PORT API Example Code
 *
 *********************************************************************
 * FileName:        ports_basic.c
 * Dependencies:    plib.h, attribs.h
 *
 * Processor:       PIC32MX
 *
 * Complier:        MPLAB C32
 *                  MPLAB IDE
 * Company:         Microchip Technology Inc.
 *
 * Software License Agreement
 *
 * The software supplied herewith by Microchip Technology Incorporated
 * (the “Company”) for its PIC32MX Microcontroller is intended
 * and supplied to you, the Company’s customer, for use solely and
 * exclusively on Microchip Microcontroller products.
 * The software is owned by the Company and/or its supplier, and is
 * protected under applicable copyright laws. All rights are reserved.
 * Any use in violation of the foregoing restrictions may subject the
 * user to criminal sanctions under applicable laws, as well as to
 * civil liability for the breach of the terms and conditions of this
 * license.
 *
 * THIS SOFTWARE IS PROVIDED IN AN “AS IS” CONDITION. NO WARRANTIES,
 * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
 * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
 * IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
 *
 *********************************************************************
 * $Id: ports_basic.c 9390 2008-06-16 23:43:04Z rajbhartin $
 *
 * $Name:  $
 *********************************************************************
 * The purpose of this example code is to demonstrate the PIC32MX
 * peripheral library macros and functions supporting IOPORT
 * module and its various features.
 *
 * Platform:     PIC32MX Starter Kit
 *
 * Features demonstrated:
 *      - Port pin configurations
 *      - Output Pin toggle
 *      - Interrupt on Change Notice
 *        - Weak pullups
 *      - Interrupt configuration
 *      - ISR syntax
 *
 * Description:
 *    This example blinks LED D1 (PORTD.RD0) when SW1 (PORTD.RD6)
 *  is pressed, causing a Change Notice interrupt.
 *  occurs.
 *
 * Oscillator Configuration Bit Settings:
 *         - Oscillator Selection Bits =     Primary Osc w/PLL (XT+HS+EC+PLL)
 *        - Primary Oscillator Config =     HS osc mode
 *        - PLL Input Divider            =    2x Divider
 *        - PLL Multiplier            =    18x Multiplier
 *
 * Notes:
 *        - To clear a mis-match condition, always read the port first,
 *          then clear CNIF interrupt flag.
 *
 *        - PIC32MX Starter Kit Led and Sw assignments:
 *          LED1 is on PORTD.RD0
 *          LED2 is on PORTD.RD1
 *          LED3 is on PORTD.RD2
 *          SW1 is on PORTD.RD6, Change Notice (CN15)
 *          SW2 is on PORTD.RD7, Change Notice (CN16)
 *          SW2 is on PORTD.RD13, Change Notice (CN19)
 *
 *        - No resistor pullups are provided for SW1..SW3.  PORTD internal
 *          pullups should be enabled.
 *
 ********************************************************************/
#include <plib.h>

// Configuration Bit settings
// SYSCLK = 80 MHz (8MHz Crystal/ FPLLIDIV * FPLLMUL / FPLLODIV)
// PBCLK = 40 MHz
// Primary Osc w/PLL (XT+,HS+,EC+PLL)
// WDT OFF
// Other options are don't care
//
#pragma config FPLLMUL = MUL_20, FPLLIDIV = DIV_2, FPLLODIV = DIV_1, FWDTEN = OFF
#pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_1



#define CONFIG          (CN_ON | CN_IDLE_CON)
#define PINS            (CN15_ENABLE)
#define PULLUPS         (CN15_PULLUP_ENABLE)
#define INTERRUPT       (CHANGE_INT_ON | CHANGE_INT_PRI_2)
#define SYS_FREQ         (80000000L)


int main(void)
{
    unsigned int temp;

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    //STEP 1. Configure cache, wait states and peripheral bus clock
    // Configure the device for maximum performance but do not change the PBDIV
    // Given the options, this function will change the flash wait states, RAM
    // wait state and enable prefetch cache but will not change the PBDIV.
    // The PBDIV value is already set via the pragma FPBDIV option above..
    SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE);


    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // STEP 2. configure the port registers
    PORTSetPinsDigitalOut(IOPORT_D, BIT_0);
    PORTSetPinsDigitalIn(IOPORT_D, BIT_6);

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // STEP 3. initialize the port pin states = outputs low
    mPORTDClearBits(BIT_0);

    // Note: It is recommended to disable vector interrupts prior to
    // configuring the change notice module, if they are enabled.
    // The user must read one or more IOPORTs to clear the IO pin
    // change notice mismatch condition, then clear the change notice
    // interrupt flag before re-enabling the vector interrupts.

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // STEP 4. enable change notice, enable discrete pins and weak pullups
    mCNOpen(CONFIG, PINS, PULLUPS);

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // STEP 5. read port(s) to clear mismatch on change notice pins
    temp = mPORTDRead();

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // STEP 6. clear change notice interrupt flag
    ConfigIntCN(INTERRUPT);

    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // STEP 7. enable multi-vector interrupts
    INTEnableSystemMultiVectoredInt();


   while(1)
   {
       // .. add things to do
   };

}
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // STEP 8. configure the CN interrupt handler
void __ISR(_CHANGE_NOTICE_VECTOR, ipl2) ChangeNotice_Handler(void)
{
    unsigned int temp;

    // clear the mismatch condition
    temp = mPORTDRead();

    // clear the interrupt flag
    mCNClearIntFlag();

    // .. things to do .. toggle the led
    mPORTDToggleBits(BIT_0);
}

Hay ejemplos de USB 2.0 en ASM y C. Mejor no mires el de ASM que te entra depreción.

En cuanto a los compiladores, preferiblemente prefiero el C18. Parece ser que Microchip se está poniendo las pilas, según estas noticias.

CCS no tiene compilador para PIC32 en estos momentos. Así qu epor el C32 o otros µC que más te guste.

El ANSI 11 ojalá se estanderice con el tiempo para los C de Microchip, no me van los antiestandar.

Total, hay que aceptar con lo que hay, incluido MikroC.

Saludo.
 
Al saber que C es un lenguaje considerado de alto, medio y bajo nivel. Nosotros nos ponemos los limites de cuan complejo sera el proyecto y si utilizamos código ASM en el mismo.

Yo programe algunos proyectos en ASM para el 8051 que es muy pesado y complejo; luego pase al BASCOM un lenguaje basic me facilito la vida; pero finalmente termine con el uVision de KEIL.

El lenguaje C, se utiliza como un compilador fijo para todos los uC(microcontrolador). Programo en C, C++, C#, JAVA y VB.NET, para PC; y, C y ASM para uC; recomendaría a los que se inician en el lenguaje C para uC, que practique haciendo programas sencillos para PC, se podría utilizar el Dev C++ http://www.bloodshed.net/devcpp.html, un compilador con IDE fácil de usar u otro programa, ya que al iniciarse en la programación los errores de tipo lógico son los más comunes y difíciles de identificar, con diagramas de algoritmos para su estructuración, al adquirir destrezas en la programación para PC se hace fácil la migración a un lenguaje C especifico para uC como puede ser el MC18, Hitech C o CCS.
 
Hola:

Mi consejo es aprender ASM primero algo, así sabes de que va el PIC paso a paso y tienes más control sobre él, sobre todo los tiempos.

Luego al C, no te molestas en cambiar bancos de memorias ni nada de eso, código más corto, más fácil y cómodo, más modular, etc.........
 
Atrás
Arriba