Introd. Microcontrolador PIC en Leng. C

Anuncio
Metodología de Programación, Programación en C, Aplicaciones electrónicas 1 / 7
Programación y diseño de dispositivos mediante
microcontroladores PIC
Hemos elegido el microcontrolador
PIC16F84 por las características que se
explicarán más adelante. Nuestro microcontrolador PIC16F84 (ver Figura 1) que
es un chip de 18 pines grabable, por lo
que necesitamos un dispositivo que
permita grabar el programa elaborado dentro del PIC 16F84, es decir, un grabador o
programador. Además, es necesario un
compilador que produzca el código ejecutable de dicho programa.
Una vez introducido el programa en la memoria del microcontrolador, éste
funcionará mediante un conjunto mínimo de componentes externos (ver Figura 2).
Francisco Larrosa Cascales
3ª Parte:
Microcontrolador PIC 16F84
Metodología de Programación, Programación en C, Aplicaciones electrónicas 2 / 7
Las herramientas imprescindibles para ponemos a trabajar son:
-Si desarrollamos bajo MS-DOS es necesario un editor de texto ASCII como
el Edit. Si trabajamos con Windows 95/98 el programa del grabador MultiPIC ya
incorpora un editor ASCII.
-Ensamblador MPASM para MS-DOS o el MPLAB para Windows que
proporciona gratuitamente la empresa fabricante del PIC Microchip.
-Un compilador en C en este caso
-Grabador o programador de PIC’s.
En la página web www.ugr.es/~emartin/Microcont-O1.htm están disponibles los
programas MPASM y MPLAB.
El microcontrolador PIC 16F84 pertenece a la gama media del fabricante y
posee unas características óptimas para su empleo en fases de aprendizaje. Este
microcontrolador dispone de memoria Flash y está fabricado con tecnología
CMOS. Su consumo es muy reducido, siendo un circuito estático que permite que
su reloj pueda detenerse completamente sin pérdida de los contenidos de los
Francisco Larrosa Cascales
3ª Parte:
Microcontrolador PIC 16F84
Metodología de Programación, Programación en C, Aplicaciones electrónicas 3 / 7
registros. El consumo típico es de 2 mA a 4 MHz y unos 40 µA funcionando en
modo Sleep.
El encapsulado de 18 pines así como la descripción del patillaje puede verse en la
«Figura 1 », mientras en la «Figura 2» se presenta el esquema eléctrico del
mismo. Contiene sólo y exclusivamente el microcontrolador PIC16F84 así como la
circuitería necesaria para su alimentación partiendo de una entrada en alterna de
9-12 V A.C. o desde una pila de 9V. Incluye además un conector de 17 pines
(CN1) donde se encuentran todas las líneas útiles del microcontrolador así como
las señales de masa, + 5V y el voltaje rectificado y filtrado del transformador PWR.
Con la sola sustitución del cristal de cuarzo y dos condensadores puede hacerse
funcionar el microcontrolador a 4 o 10 MHz.
Arquitectura interna
Las altas prestaciones de los microcontroladores PIC derivan de las
características de su arquitectura (ver «Figura 3»). Están basados en una
arquitectura tipo Hardvard, es decir, disponen de dos memorias independientes:
una que contiene sólo instrucciones y otra sólo con datos. Ambas poseen sus
respectivos sistemas de buses y es posible realizar operaciones de acceso
(lectura o escritura) simultáneamente en ellas. Esto los hace más rápidos que
los microcontroladores basados en la arquitectura tradicional de Von Neumann.
Otra característica es su juego de instrucciones reducido (35 instrucciones)
RISC, que en su mayoría se ejecutan en un solo ciclo de reloj excepto las
instrucciones de salto que necesitan dos ciclos.
Los microcontroladores PIC 16F84 poseen dos bloques de memoria
separados, la memoria de programa y los bancos de registros. (ver Figura 3 ).
Francisco Larrosa Cascales
3ª Parte:
Microcontrolador PIC 16F84
Metodología de Programación, Programación en C, Aplicaciones electrónicas 4 / 7
La memoria de programa está organizada con palabras de 14 bits con un
total de 1K. Es del tipo EEPROM y en funcionamiento es de sólo lectura.
Los bancos de registros RAM son de 8 bits (byte) a excepción del contador del
programa que es de 13 bits. Como puede verse en la Figura 3 las direcciones
bajas contienen los registros especiales y los registros de recursos, encontrándose
a continuación los registros de propósito general. El PIC 16F84 posee 68 registros
que van de la dirección $00 a la $4F, aunque no todas estas direcciones se usan.
El vector de reset se encuentra en la posición 0x0000h y el de
interrupciones en la 0004h, por lo que la memoria de usuario propiamente dicha se
extiende desde la dirección 0005h a la 03ffh.
La pila es de ocho niveles. No hay ningún flag que marque si está llena,
por lo que será el programador el responsable de controlar que no se produzca su
desbordamiento.
Francisco Larrosa Cascales
3ª Parte:
Microcontrolador PIC 16F84
Metodología de Programación, Programación en C, Aplicaciones electrónicas 5 / 7
Posee además una memoria EEPROM de datos de 8 bits. Ésta no forma
parte del espacio normal direccionable y sólo es accesible en lectura y escritura a
través de dos registros: para los datos el EEDATA que se encuentra en la posición
0008h del banco de registros RAM y para las direcciones el EEADR en la 0009h.
Para definir el modo de funcionamiento de esta memoria se utilizan dos
registros especiales, el EECONl dirección 0088h y el EECON2 en 0089h. Esta
memoria EEPROM no emplea ningún recurso externo de alimentación. Su
programación dura unos 10 ms y se controla mediante un temporizador interno.
Mencionar por último que el microcontrolador dispone de dos puertos de entrada y
salida (E/S). El puerto A con 5 líneas de la RAO a la RA4 y el puerto B que
dispone de 8 líneas de entrada/salida que van de la RBO a la RB7.
Programa de ejemplo
El primer programa que haremos estará escrito en ensamblador. La finalidad del
mismo consiste en contar en binario a través del puerto B (patitas RBO RB7),
iluminando, en su caso los correspondientes diodos LED. El primer paso consiste
en la escritura del programa CONTAR haciendo uso de un editor de textos ASCII
El segundo paso es el ensamblado de este fichero (CONTAR.ASM) empleando el
compilador-ensamblador MPASM.EXE que distribuye libremente el fabricante. El
ensamblador produce varios ficheros, aunque de entre ellos el que necesitamos es
el fichero CONTAR.HEX.
Francisco Larrosa Cascales
3ª Parte:
Microcontrolador PIC 16F84
Metodología de Programación, Programación en C, Aplicaciones electrónicas 6 / 7
Francisco Larrosa Cascales
3ª Parte:
Microcontrolador PIC 16F84
Metodología de Programación, Programación en C, Aplicaciones electrónicas 7 / 7
Este programa utiliza dos registros de 8 bits para realizar un contador
anidado, en el que por cada iteración del contador 1 se producen 256 iteraciones
del contador 2.
Llegados a este punto podemos comparar el número de líneas de código en
ensamblador con su equivalente en C utilizando un compilador para PIC’s:
main ( )
{
//Declaro dos variables auxiliares para contar
char i, j, k;
set_tris_b (0);
for (k=0;k<255;k++)
{
output_port-b(k);
for (i=0;i<255;i++)
for (j=0;j<255;j++)
}
}
Francisco Larrosa Cascales
3ª Parte:
Microcontrolador PIC 16F84
Descargar