Sdcc lenguaje C programacion para microcontroladores

Aqui pongo este programa para Puppy, pero que tambien lo hay para distro para ubuntu, debian etc..  el enlace para bajarselo es:

http://www.mediafire.com/download/3aj2xb456dlkaj2/sdcc-3.4.0-rc2.pet

Esta es una pet que tengo que mejorar.

Sdcc es un poco pijotero a la hora de compilarlo es mejor tener unos programas tipo o plantilla y sobre estos crear los demas por que ha veces da muchos problemas pero la verdad es que es muy interesante.

Bueno copiar estas lineas de comando sobre un archivo por ejemplo : ejemplo.c
// ESTE PROGRAMA EN SDCC ES PARA  ENCENDER Y APAGAR LED CON RETARDO.
//
//  PARA COMPILARLO INTRODUCIR LA SIGUIENTE LINEA DE COMANDO
//
// sdcc -mpic14 –use-non-free -p16f677 –debug -I -c ejemplo.c
//

#include “pic16f877.h”

typedef unsigned int word;
word __at(0x2007) CONFIG = _XT_OSC & _WDT_OFF & _PWRTE_OFF & _BODEN_ON &
_LVP_ON & _CPD_OFF & _WRT_ENABLE_ON & _DEBUG_OFF & _CP_OFF;

void delay_ms(long ms)
{
long i;
while (ms–)
for (i=0; i < 300; i++);
}
void main() {
TRISB1 = 0;
while(1) {
RB1=0;
delay_ms (200);
RB1=1;
delay_ms (200);
}
}


Bueno basicamente lo que hace el programa para cualquiera que entienda un poco de C y de microcontroladores es encender y apargar la patita RB1 del microcontrolador.

Una vez echo esto y segun nos informa en la parte de no codigo de texto del programa para compilarlo escribir la siguiente linea.

# sdcc -mpic14 –use-non-free -p16f677 –debug -I -c ejemplo.c

y si todo va bien que supongo que si que esta probado se nos aparecen los siguiente archivos:

prueba.adb prueba.asm prueba.c prueba.cod prueba.hex prueba.lst prueba.o prueba.p

En los que en los mas importantes son los archivos prueba.hex para poder meterselo al microcontrolador osea grabarlo, el asm que seria el programa escrito en ensamblador, el de extensio .o si queremos utilizar este progrma para compilarlo en otras aplicaciones… etc..

Bueno una vez echo esto acabo esta parte.

Anuncios

3 Comentarios

  1. Vaya mierda no se por que me sigue cambiando los caracteres en el use-non-free lo sigue poniendo como le sale de los cojones al blog…. me sigue uniendo los guiones y en realida es
    (guion)(guion)use-non-free
    -(espacio)-use-non-free

    y en las comillas del include 16f877 pon las comillas tal como se hacen con el Mplab por que me las ha vuelto a cambiar…..

    Vamos que este blog hace lo que le da la gana.

    Saludos.

  2. Perdon por tardar en la respuesta, el problema es por el bloc este que escribe mal los guiones y los a puesto los dos juntos.

    Y tambien provoca unos error al hacer el copy paste del texto de programa en un archivo de texto. de muestro como se escribe la linea de comando.

    sdcc -mpic14 –use-non-free -p16f877a –debug -I -c ejemplo.c

    Si te das cuenta antes de use-non-free hay dos guiones no como pone el en blog que ya me a ocurrido otras veces que me cambia algunos caracteres.

    Otro error que te va ha dar cuando lo compilas es que el archivo de include lo pone con comillas asi:

    # include “pic16f877´´

    y eso da error cuando el include las comillas tienen que ser :

    #include “pic16f877.h”

    Pero como te digo es el blog que cambia los caracteres.

    Otra cosa que tienes que tener son el programa gputil instalado para que tengas el comando :

    gpasm activo.

    Este archivo de instalacion gputils lo tienes en:

    https://misterelectronico.wordpress.com/2015/03/19/la-ultima-version-de-gputils-para-puppy/

    Aun asi no se por que me esta dando un warning que aunque compila bien el programa y me crea el archivo hex no se por que me da ese warning tengo que invertigarlo.

    son los warning:

    on symbol “_cinit” [0x0000] has no section. (pass 0)
    warning: Relocation symbol “_cinit” [0x0004] has no section. (pass 0)
    warning: Relocation symbol “_cinit” [0x001E] has no section. (pass 0)
    warning: Relocation symbol “_cinit” [0x0022] has no section. (pass 0)
    warning: Relocation symbol “_cinit” [0x0000] has no section. (pass 0)
    warning: Relocation symbol “_cinit” [0x0004] has no section. (pass 0)
    warning: Relocation symbol “_cinit” [0x001E] has no section. (pass 0)
    warning: Relocation symbol “_cinit” [0x0022] has no section. (pass 0)

    posiblemente en algun conflicto de direccion con el archivo lkr..

    Hace bastante que no uso el sdcc y bueno estoy un poco desentrenado… un saludo nos vemos.

  3. tengo problemas con sdcc, siempre me da errores trante de compilar el codigo que muestras y me da error. me sale esto:

    [ronal@Ronal PIC]$ sdcc -mpic14 –use-non-free -p16f677 –debug -I -c ejemplo.c
    at 1: error 119: don’t know what to do with file ‘–use-non-free’. file extension unsupported
    at 1: error 119: don’t know what to do with file ‘–debug’. file extension unsupported
    WARNING: Command line option –use-non-free not present.
    When compiling for PIC14/PIC16, please provide –use-non-free
    to get access to device headers and libraries.
    If you do not use these, you may provide –no-warn-non-free
    to suppress this warning (not recommended).
    ejemplo.c:25:10: error: #include expects “FILENAME” or
    ejemplo.c:38: error 20: Undefined identifier ‘TRISB1’
    ejemplo.c:40: error 20: Undefined identifier ‘RB1’
    ejemplo.c:42: error 20: Undefined identifier ‘RB1’

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s