Upload
eeindustrial
View
216
Download
0
Embed Size (px)
Citation preview
7/28/2019 Tutorial Xc8 Introduccion
1/7
http://www.micros-designs.com.ar/tutorial-xc8-introduccion/
Introduccin
AGOSTO 22, 2012 | POSTED IN PROGRAMACIN PIC| COMENTARIOS DESACTIVADOS
Aqu se presenta un tutorial del compilador XC8 que pretende proporcionar los conocimientos bsicos para comenzar a desarrollar
con el mismo, para ello daremos una introduccin de cmo es un microcontrolador PIC y su funcionamiento, los lenguajes de
programacin y la ventaja de usar C, como crear un proyecto, la estructura de un programa en C y lo necesario para ir creando
ejemplos. Espero sea de utilidad
Licencia
La misma se expresa al pie de cada articulo.
Indice
Introduccin al microcontrolador
El lenguaje de programacin
Comenzando a desarrollar en C
Nuestro primer proyecto en un PIC18F4550 y XC8
Operadores, variables y estructura for
Estructura if y arreglos de variables
Introduccin al microcontrolador
Un microcontrolador es un dispositivo electrnico capaz de ejecutar una secuencia de comandos previamente programados. Estos
comandos son proyectados por el usuario utilizando algn lenguaje de programacin y luego grabados en la memoria del
microcontrolador.
Los microcontroladores PIC de gama baja poseen arquitectura Harvard, esto quiere decir que utilizan dos memorias distintas, una para
almacenar las instrucciones y otra para manejar los datos. Entonces est compuesto principalmente por un procesador (CPU),memoria RAM, memoria ROM y buses de comunicaciones (cada tipo de memoria tiene un bus de datos, uno de direcciones y uno de
control). Adicionalmente tambin dispone de puertos de entrada y salida, y diversos perifricos que nos facilitan el desarrollo tales
como osciladores, temporizadores/contadores, mdulos de comunicacin serial y paralela, comparadores analgicos, conversores
analgicos a digital, memoria eeprom, etc.
Pero vayamos por partes, as entenderemos como es su funcionamiento, igualmente cabe aclarar que seremos concisos, sin describir
profundamente.
http://www.micros-designs.com.ar/tutorial-xc8-introduccion/http://www.micros-designs.com.ar/category/micros-pic/programacion-pic/http://www.micros-designs.com.ar/category/micros-pic/programacion-pic/http://www.micros-designs.com.ar/tutorial-xc8-introduccion/http://www.micros-designs.com.ar/tutorial-xc8-el-lenguaje-de-programacion/http://www.micros-designs.com.ar/tutorial-xc8-comenzando-a-desarrollar-en-c/http://www.micros-designs.com.ar/tutorial-xc8-nuestro-primer-proyecto-en-un-pic18f4550-y-xc8/http://www.micros-designs.com.ar/xc8_variables_for/http://www.micros-designs.com.ar/tutorial-xc8-estructura-if-y-arreglos-de-variables/http://www.micros-designs.com.ar/tutorial-xc8-introduccion/bloques01/http://www.micros-designs.com.ar/tutorial-xc8-introduccion/inicio/http://www.micros-designs.com.ar/tutorial-xc8-introduccion/http://www.micros-designs.com.ar/category/micros-pic/programacion-pic/http://www.micros-designs.com.ar/tutorial-xc8-introduccion/http://www.micros-designs.com.ar/tutorial-xc8-el-lenguaje-de-programacion/http://www.micros-designs.com.ar/tutorial-xc8-comenzando-a-desarrollar-en-c/http://www.micros-designs.com.ar/tutorial-xc8-nuestro-primer-proyecto-en-un-pic18f4550-y-xc8/http://www.micros-designs.com.ar/xc8_variables_for/http://www.micros-designs.com.ar/tutorial-xc8-estructura-if-y-arreglos-de-variables/7/28/2019 Tutorial Xc8 Introduccion
2/7
La memoria ROM es del tipo no voltil, esto significa que los datos almacenados no se pierden aunque no est energizada. Se
destina principalmente a contener la lista de instrucciones que conforman la aplicacin, por ello suele llamarse memoria de programa
y en microcontroladores de la actualidad ronda desde los 512 bytes a 128 kbytes, correspondientes a los de gama baja de Microchip.
Son del tipo Flash, de bajo consumo, que se pueden escribir y leer, y de gran densidad de almacenamiento. Adems tienen la ventaja
que permiten ser reprogramadas en circuito, sin necesidad de extraer el ci rcuito integrado de la tarjeta.
La memoria RAM,memoria voltil, es la destinada a guardar las variables y datos temporales que sern utilizados por el procesador
para realizar clculos u otro tipo de operaciones lgicas. El espacio de direcciones de memoria RAM se divide en dos sectores:
registros de propsito general (GPR), espacio destinado para crear variables por el usuario y variables propias del compilador; y
registros de funciones especiales (SFR), espacio que contiene bits de configuracin y control de los perifricos del microcontrolador.
En la actualidad se pueden encontrar microcontroladores con memoria RAM de unos 32 bytes hasta 4 kbytes.
Un registro es una pequea porcin de la memoria y su tamao se mide generalmente en bits (8-bits, 16-bits, 32-bits). Est
representado por un numero que denominamos direccin de memoria, pero dentro del lenguaje de programacin existe la posibilidad
de asignarle un nombre, de esta manera es ms sencillo de manejar.
El CPU o unidad central de procesamiento es el encargado de direccionar la memoria ROM, decodificar la instruccin y ejecutar la
operacin que implica. El primer paso es leer la instruccin de la memoria, la posicin es controlada por un contador de programa ( PC)
que almacena un nmero que identifica la posicin actual a ejecutar. La instruccin que el CPU lee desde la memoria es usada para
determinar qu operacin debe hacer el CPU, en este paso hay una decodificacin, en donde la instruccin es dividida en partes que
tienen significado para otras unidades del CPU. Despus de los pasos de lectura y decodificacin, es llevado a cabo el paso de
la ejecucin de la instruccin. Durante este paso, varias unidades del CPU son conectadas de tal manera que ellas pueden realizar la
operacin deseada. Si, por ejemplo, una operacin de adicin fue solicitada, una unidad aritmtico lgica (ALU) ser conectada a un
conjunto de entradas (nmeros a ser sumados) y un conjunto de salidas (suma). Luego el paso final, simplemente la obtencin del
resultado, escribindolo en un registro interno del CPU de acceso rpido, modificando un registro de la memoria RAM o modificando el
contador de programa para generar saltos o bucles, etc.
La siguiente animacin intenta dar a comprender como es el funcionamiento, pero tener en cuenta que es muy genrica:
Actualmente existen 3 tipos de arquitectura:
CISC (Computadores de juego de instrucciones complejo): Disponen de un conjunto amplio de instrucciones donde muchas de ellas
son complejas, permitiendo realizar operaciones sofisticadas y potentes, pero que ocupan varios ciclos.
RISC (Computadores de juego de instrucciones reducido): En este caso el repertorio de instrucciones mnimo y muy sencillo, y
generalmente ocupa entre 1 o 2 ciclos. La ventaja de stos es que la sencillez y rapidez de las instrucciones permiten optimizar el
hardware y el software del procesador.
http://www.micros-designs.com.ar/tutorial-xc8-introduccion/simulacion/http://www.micros-designs.com.ar/tutorial-xc8-introduccion/bloques02/7/28/2019 Tutorial Xc8 Introduccion
3/7
SISC (Computadores de juego de instrucciones especficos): Se utiliza para microcontroladores destinados a aplicaciones concretas,
donde el set de instrucciones es reducido y especfico para las tareas a desarrollar, adaptndose a las necesidades de la aplicacin
prevista.
Los microcontroladores de gama baja de Microchip se basan en la arquitectura RISC, con 35 instrucciones para los 16F y 75
instrucciones para los 18F, en este ltimo caso parecen muchas pero son simples y que ocupan pocos ciclos.
El PIC18F4550
Ahora tenemos un conocimiento general de que compone un microcontrolador y como es su funcionamiento, as que pasaremos a uno
puntual. En este tutorial nos basaremos en el microcontrolador PIC18F4550 de la familia PIC18 de Microchip que tiene las siguientescaractersticas bsicas:
Arquitectura RISC avanzada Harvard de 16-bits con 8-bits de datos.
Mxima frecuencia de operacin 48 MHz, 12 MIPS.
Memoria de programa de 32 kBytes.
Memoria RAM de 2 kBytes.
Memoria EEPROM de 256 Bytes.
Multiplicador por hardware de 88
Pila de 32 niveles.
2 niveles de prioridad para las interrupciones.
20 fuentes de interrupcin.
4 temporizadores.
2 comparadores analgicos.
13 canales de conversin analgica.
Comunicacin UART, SPI, I2C, USB.
PLL y oscilador interno de 8 MHz.
En el mismo datasheet podemos encontrar el siguiente diagrama de bloques de su estructura interna:
7/28/2019 Tutorial Xc8 Introduccion
4/7
Su memoria de programa de de 32768 bytes, pero las instrucciones ocupan 2 bytes (excepto call, goto, movff, lsfr que ocupan 4), por
lo que se pueden almacenar hasta 16384 instrucciones como mximo. Las direcciones especiales son 000 que corresponde al reset
del microcontrolador, 008correspondiente a la interrupcin de alta prioridad y 018 correspondiente a la interrupcin de baja
http://www.micros-designs.com.ar/tutorial-xc8-introduccion/pic18f4550_bloques/7/28/2019 Tutorial Xc8 Introduccion
5/7
prioridad. Las prioridades de interrupciones pueden no habilitarse y comportarse como un PIC16F, o habilitarse y cada fuente de
interrupcin (excepto la interrupcin externa por RB0, solo es de alta prioridad) tiene un bit que la configura como de alta prioridad o
baja prioridad.
La memoria RAM es de 2048 bytes, 8 bancos de
256 bytes donde 4 de ellos son utilizados por el mdulo USB en caso de utilizarlo. Adems se tiene 160 bytes dedicados a los registros
de funciones especiales utilizados para la configuracin de los mdulos del microcontrolador.
http://www.micros-designs.com.ar/tutorial-xc8-introduccion/memoriaprograma/7/28/2019 Tutorial Xc8 Introduccion
6/7
Fsicamente es un
dispositivo de 40/44 pines donde, excepto los de alimentacin, los pines tienen varias funciones segn como se lo configure. Se puede
encontrar con los package TQFP, QFN o DIP. Este ltimo, el ms utilizado para el aprendizaje y los hobbystas, tiene el siguiente pinout:
http://www.micros-designs.com.ar/tutorial-xc8-introduccion/memoriaram/7/28/2019 Tutorial Xc8 Introduccion
7/7
Hay mucho ms por agregar respecto a este microcontrolador, pero no es la intensin de este tutorial, para profundizar ms es
recomendable leer el datasheet.
Continuar
http://www.micros-designs.com.ar/tutorial-xc8-introduccion/pinout-4/