Sunteți pe pagina 1din 58

Jenniffer Bustamante Mejia

Muchas personas prefieren programar en lenguaje


ensamblador y en justificación a eso se debe decir que
muy difícilmente un compilador supera la eficiencia de un
buen programa en lenguaje ensamblador. He aquí la
disyuntiva, y la elección depende del tipo de programa o
proyecto a realizar. Un compilador estaría bien para fines
educativos o proyectos en los que una hipotética falla del
programa (causada por el compilador) no represente un
mayor riesgo, de aquí, que si hablamos de compiladores,
existen de todos los tipos y con diferentes grados de
confiabilidad, de donde se establece su precio, desde unos
cientos a algunos miles de dólares. El compilador PICC de
Hi-Tech es bastante bueno, a juzgar por los resultados y
prestaciones del mismo.
En general, una aplicación en
lenguaje C pasa por seis etapas
antes de ejecutarse, y cuando se
trabaja con microcontroladores, no
es la excepción; estas etapas son:
edición, preproceso, compilación,
enlace, carga y ejecución
 La edición consiste en la escritura  El compilador realiza la traducción
del programa en un editor del programa en C a código en
(MPLAB), el mismo que además lenguaje de máquina “entendible”
permitirá realizar las correcciones por el microcontrolador.
necesarias. El archivo fuente es
 El enlazador (linker) realiza el
guardado en el disco de la
computadora con la extensión .c. enlace del programa fuente con las
referencias a funciones y datos
 El preprocesador se encarga de definidos en otra parte, tales como
realizar ciertas manipulaciones en bibliotecas estándar o privadas
el programa antes de la que constituyen una determinada
compilación, obedeciendo a aplicación, y así crea una imagen
comandos denominados directivas ejecutable de nuestro programa
del preprocesador. (archivo .hex).
 La siguiente fase realiza la carga de la imagen ejecutable en la
memoria del Microcontrolador (ROM o FLASH), para esto se
dispone de “programadores” que realizan este trabajo; se tiene a
PICSTARPLUS de Microchip y algunos gratuitos como IC-PROG,
PONY-PROG, etc., que conjuntamente con el hardware adecuado
(JDM, Propic, etc., cuyos circuitos están disponibles en la red)
son una alternativa interesante cuando no se tiene mucho
dinero. Por último, la ejecución del programa se realiza en el
microcontrolador (después de una conexión y alimentación
adecuada) una instrucción a la vez.
 Confiabilidad probada.
 Manejo automático de páginas y
bancos de memoria.
 Múltiples niveles de optimización2
 Hi-Tech PICC es un compilador de en código C.
alto rendimiento para las familias
10/12/14/16/17 de Microchip, el  Optimización en ensamblador.
mismo que implementa en forma  Librerías estándar de ANSI C.
completa ISO/ANSI C (excepto
recursión de funciones); además,  Inclusión de lenguaje ensamblador
maneja varios tipos de variables, entre código C.
incluso las de punto flotante de 24
bits e IEEE de 32 bits. Este  Ilimitado número de archivos fuente.
compilador genera un código  Compatible con MPLAB IDE, MPLAB
altamente optimizado, brindando al ICD y otras herramientas de
programador capacidades solamente desarrollo.
limitadas por las características del
microcontrolador. Entre las  Compatible con varias plataformas:
características más importantes se Windows, Linux, Unix, Mac OS X, S
pueden destacar: Solaris.
Al realizar la instalación del compilador
PICC-Lite es aconsejable seguir la
configuración por defecto del instalador,
sobre todo cuando no se tiene mucha
experiencia. Después de haber instalado el
compilador, lo primero que se debe
comprobar es el correcto enlace entre los
dos programas.
 Dentro de la ventana “Set Languaje Tool Locations”
asegúrese de que para “PICC Asembler”, “PICC Compiler” y
“PICC Linker” el archivo PICL.EXE esté correctamente
direccionado (Por lo general dentro de Raíz:\Archivos de
programa\HI-TECH Software\ PICC-Lite\9.50\BIN\), en
caso contrario, utilizar la herramienta de configuración
“Configure MPLAB” en el menú del programas o ejecutar el
archivo MPLABConfig.EXE que se encuentra dentro de la
carpeta BIN en el directorio de instalación del compilador.
 Primero se debe seleccionar
el dispositivos que se va a
programar, para ello se
ubica el cursor en
Configure-Select Device.
 Después se debe
seleccionar el lenguaje de
programación en el cual se
desarrolla el código, la ruta
es: Project-Select Language
Toolsuite, se despliega la
siguiente ventana
 Se procede a crear el nuevo  Vincule el script al Source Files,
proyecto, para ello Project-New dando clic derecho allí y
adicionando el archivo de
 Se visualizan los directorios View-
extensión .c
Project
 Desarrolle el código y compilelo en
 Se crea el nuevo script File-New
Project-Build All
 Guarde este script en la misma
 Si la compilación es exitosa
carpeta donde se guardo el aparece un resumen del consumo
proyecto, coloque el nombre que de memoria
desee y guárdelo con extensión “.c”
 Los operadores & y * se utilizan para trabajar con punteros . El
lenguaje C está muy influenciado por el uso de punteros. Un puntero
es una variable que contiene la dirección de una variable o de una
función, es decir, es una variable que apunta a otra variable. Los
punteros permiten la manipulación indirecta de datos y códigos
 La única diferencia a la hora de declarar variables es la
aparición de variables de tipo BOLEAN, de un bit,
cuando necesitamos utilizar este tipo de variables en
nuestros programas deberemos utilizar un tipo no
estandar que se denomina SHORT. Es un tipo especial
utilizado para generar código muy eficiente para las
operaciones de manejo de bit en I/O. No se permiten
las arrays de SHORT ni los punteros a SHORT. La
siguiente tabla muestra la sintaxis para las
declaraciones de datos.
El comando break se puede utilizar con los
tres formatos de bucle y switch. Cuando el
programa alcanza un break, se deja sin
ejecutar el resto del bucle y se transfiere el
control a la sentencia inmediatamente
posterior a dicho bucle.
 El comando continue se puede emplear con
cualquiera de los tres bucles, pero no con
switch. Al igual que antes el programa no
ejecuta las sentencias restantes del bucle donde
se encuentra. En bucles for o while se comienza
a ejecutar el siguiente ciclo del bucle. En do
While se comprueba la condición de salida; si se
cumple, se comienza el nuevo ciclo.
#include <Filename>
 Esta directiva hace que el compilador incluya en
nuestro fichero fuente el texto que contiene el archivo
especificado en <filename>. Deberemos utilizarla
siempre que queramos incorporar los ficheros de
cabecera que contienen las definiciones de todos los
registros internos del microcontrolador que utilicemos
en nuestro proyecto, como por ejemplo:

#include <PIC16f84>
 Realizaremos nuestro primer
programa en C, que consistirá
en rotar el encendido de un
led a través de una hilera de 8
LED’s conectados al puerto B
del PIC. Dependiendo de si el
pin RA0 del puerto A está a
cero, la rotación de encendido
será hacia la derecha , y si
está a uno, hacia el sentido
contrario, es decir, hacia la
izquierda
#include
#use delay(clock=4000000,RESTART_WDT)
#byte port_b=6
#org 0x1F00, 0x1FFF {}//para proteger el código //del cargador
main()
{
port_b=1;
set_tris_b(0x00); // todo el puerto B como salida
while(1)
{
if(input(PIN_A0))
rotate_left(&port_b,1);
else
rotate_right(&port_b,1);
delay_ms(100);
}
}
 En esta sección se propone la realización de un
sencillo contador de 0..9 visualizando la cuenta
en un display de 7 segmentos conectado a la
puerta B.
 Es decir, realizaremos un contador decimal
continuo de tal manera que vayamos
visualizando los números a través de dicho
display. Para ello conectaremos el PIC según se
muestra en el esquema.
#include
#use
delay(clock=4000000,RESTAR
T_WDT)
set_tris_b(0x00); // todo el
#byte port_b=6 #org 0x1F00, puerto B como salida
0x1FFF {}//para proteger el port_b=0;
código del cargador
for(;;)
main() {
{ x++;
if(x>9) x=0;
unsigned int const
display[10]={0x3f,0x6,0x5,0x port_b=display[x];
4f,0x66,0x6d,0x7d,0x27,0x7 delay_ms(500);
f,0x6f}; }
int x=0; }

S-ar putea să vă placă și