Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
herramientas libres
Matias De la Puente
mfpuente.ar@gmail.com
10 de mayo de 2009
1.
Introduccin
Los microcontroladores PIC programados en ensamblador logran una ejecucin ptima del programa cargado en su memoria, pero muchas veces la
tarea de realizar y mantener un programa de grandes dimensiones en ensamblador se hace difcil. Sobre todo cuando ha pasado un tiempo sin ver el
programa. Esta es la principal ventaja de C, un lenguaje de programacin
de mas alto nivel que ensamblador. Un programa realizado en C puede no
ser mas rpido que uno realizado en ensamblador pero facilita la realizacin
y mantenimiento de un programa de grandes dimensiones. Adems el cdigo
fuente realizado en C es fcilmente portado a distintos modelos de PICs realizando nicamente pequeas modicaciones relacionadas a la arquitectura
del microcontrolador.
Este articulo muestra el empleo del compilador libre sdcc[4] para compilar programas en C, como as tambin el empleo del programador de PICs
libre picp[3] para cargar el programa compilado en la memoria del PIC.
Para leer este articulo solo es necesario que el lector presente mnimos
conocimientos del lenguaje C y de la linea de comandos.
2.
Primer programa
2
3
4
5
6
7
8
9
void delay ()
{
int i , j ;
for ( i =0; i <4; i ++)
for ( j =0; j <250; j ++)
;
}
10
11
12
13
void main ()
{
TRISA = 0 x00 ;
14
15
16
17
18
19
20
21
22
while (1)
{
RA0 =
delay
RA1 =
delay
}
1;
();
0;
();
La opcin -mpic14 le indica al compilador que genere cdigo en ensamblador para microcontroladores con instrucciones de 14 bits (16F84A,
16F628A, 16F876A, etc). Para microcontroladores con instrucciones de 16
bits se debe emplear la opcin -mpic16. La siguiente opcin, -p16f84a, indica al compilador el modelo de microcontrolador a emplear y debe coincidir
con el modelo del archivo de cabecera incluido en el cdigo fuente. La ultima
opcin indica el o los archivo de cdigo fuente a compilar.
Este compilador genera a partir del archivo de cdigo fuente en C distintos archivos, los mas importantes son:
Para este ejemplo se emple el archivo pic01.c pero puede ser cualquier
otro inclusive uno vaco. Para obtener una lista de los microcontroladores
de 16 bits soportados por el compilador simplemente hay que reemplazar la
opcin -mpic14 por -mpic16.
fuente. No hace falta abrir este archivo de cabecera para saber como estn
denidos todos los registros del microcontrolador ya que el nombre de registro
es el mismo empleado dentro de la hoja de datos del microcontrolador. Por
ejemplo, si queremos modicar el valor del registro INTCON del PIC16F84A
elegido simplemente hay que introducir la linea INTCON = 0x00; en el cdigo
fuente, para este ejemplo se modico por el valor 0x00 pero puede ser el que
uno desee.
Cabe mencionar que los microcontroladores de 14 bits presentan registros en diferentes bancos de memoria. En ensamblador el desarrollador deba
seleccionar el banco de memoria en donde se encontraba el registro a modicar. En C no hace falta realizar esta tarea ya que el mismo compilador
genera el cdigo para elegir el banco correspondiente antes de modica el
registro. En los microcontroladores de 16 bits lo bancos de memoria fueron
eliminados y no hace falta realizar esta tarea, mejorando el rendimiento del
programa.
Ahora bien, a veces es necesario modica solamente un bit de un registro,
esto puede ser fcilmente realizado ya que tambin se encuentran denidos
los bits de cada registro. La nomenclatura empleada para realizar esta tarea
es diferente entre un microcontrolador de 14 bits y uno de 16 bits. Para un
microcontrolador de 14 bits se emplea esta nomenclatura:
< nombre del registro > _bits . < nombre del bit >
programador
desarrollador
El primer comando limpieza (erase) toda la memoria ash del microcontrolador. La segunda opcin realiza un blanqueado (blank) de la memoria de
programa para luego grabar el programa compilado con sdcc.
La primera opcin /dev/ttyS0 es el puerto serie en donde se encuentra
conectado el programador (COM1, COM2, etc. para usuarios de Windows). La
segunda opcin 16f84a indica el modelo de microcontrolador a colocado
en el programador. Se puede obtener una lista completa de los dispositivo
soportados empleando picp -d. La opcin -ef especica que se limpie la
memoria ash del microcontrolador. La opcin -bp blanquea la memoria de
programa del microcontrolador. Por ultimo, la opcin -wp pic01.hex escribe
en la memoria de programa el archivo pic01.hex.
Aqu, la opcin -rp temp.hex lee la memoria de programa del microcontrolador y la almacena en temp.hex.
Dato de 16 bits
Conclusin
La programacin de un microcontrolador empleando el lenguaje C a probado durante aos ser la forma mas eciente de desarrollar un programa para
microcontroladores, por supuesto que no se genera un cdigo ensamblador
ptimo pero el cdigo hecho en C puede ser mantenido en forma mas sencilla
que uno en ensamblador. Adems pensar la solucin al problema en cdigo
en C es aun mas fcil que pensarla en ensamblador.
Este articulo ha demostrado que el desarrollo de un programa en C y el
grabado del mismo en la memoria del microcontrolador ha sido sencilla de
realizar. Las herramientas a utilizar son de fcil acceso y bien documentadas.
Un editor de texto y comandos fueron solamente necesarios para escribir
el programa y grabarlo al microcontrolador, esto prueba que no hacen falta
complejas aplicaciones grcas para realizar este trabajo. Por supuesto que
puede incorporarse dentro del editor de texto un par de botones en la barra de
herramienta para que haga en forma automtica la compilacin y el grabado
del programa.
Referencias
Como
if, while,
etc.