Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad

Introducción a la Programación de Microcontroladores PIC16: Ejemplos y Proyectos, Resúmenes de Arquitectura de ordenadores

Este libro presenta los conceptos básicos referentes a los microcontroladores PIC16 y ofrece una serie de ejemplos y pequeños proyectos. Los microcontroladores PIC16 ejecutan solo 35 instrucciones diferentes y se consideran procesadores de tipo RISC. cómo funcionan los transistores y cómo se generan los circuitos para representar los símbolos 0 y 1. Además, se describe la memoria de programa y de datos, y se muestra cómo programar el microcontrolador sin necesidad de adquirir programas especiales.

Qué aprenderás

  • ¿Cómo se generan los circuitos para representar los símbolos 0 y 1 en los microcontroladores PIC16?
  • ¿Cómo se divide la memoria de programa en páginas en los microcontroladores PIC16?
  • ¿Cómo se accede a la memoria de datos en los microcontroladores PIC16?
  • ¿Cuáles son las 35 instrucciones que ejecutan los microcontroladores PIC16?
  • ¿Cómo funcionan los transistores en los microcontroladores PIC16?

Tipo: Resúmenes

2020/2021

Subido el 30/11/2021

erik-rapero
erik-rapero 🇲🇽

1 documento

1 / 19

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Microcontroladores PIC 16
Los avances en electrónica han permitido que las computadoras surjan y se usen en muy diversas
áreas del quehacer humano: investigación, ejército, gobierno, negocios, comunicaciones,
educación, salud, recreación, etc. Mientras que los microprocesadores se han vuelto más
poderosos, también se han especializado y han dado lugar a los ahora llamados procesadores de
uso general, a los procesadores digitales de señales (DSP), y a los microcontroladores.
Con la intención de agilizar el desarrollo de aplicaciones, mientras que son tratados los conceptos
básicos referentes a los microcontroladores PIC16, en este libro se presentarán una serie de
ejemplos y pequeños proyectos. La programación de estos proyectos se efectuó por
completo en lenguaje ensamblador por las razones siguientes:
• Es falsa la idea que usando lenguajes de alto nivel se puede uno librar de conocer a fondo
la estructura de los microcontroladores. Es posible programar las computadoras persónales
conociendo muy poco de su funcionamiento, porque cuentan con un sistema operativo y
“manejadores” para gestionar sus recursos que casi siempre son: memoria, puertos, teclados,
ratones, impresoras y monitores.
Aunque más lentamente y requiriendo un poco de dedicación, los humanos podemos gestionar
mejor los recursos que los compiladores, por ejemplo: podemos optimizar en forma intercalada
algunos segmentos de código para ocupar poca memoria y otros para ejecutarse rápidamente.
• Ya que los compiladores no se hacen solos, las personas con conocimientos de los procesadores
y de lenguajes de bajo nivel son requeridas para el diseño y desarrollo de estas herramientas.
• No se requiere adquirir programas para efectuar los desarrollos.
Primeros pasos
Los microcontroladores PIC16 ejecutan sólo 35 instrucciones diferentes, por lo que se consideran
procesadores de tipo RISC (Reduced Instruction Set Computer). La sig. Tabla muestra dicho
conjunto de instrucciones.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13

Vista previa parcial del texto

¡Descarga Introducción a la Programación de Microcontroladores PIC16: Ejemplos y Proyectos y más Resúmenes en PDF de Arquitectura de ordenadores solo en Docsity!

Microcontroladores PIC 16

Los avances en electrónica han permitido que las computadoras surjan y se usen en muy diversas áreas del quehacer humano: investigación, ejército, gobierno, negocios, comunicaciones, educación, salud, recreación, etc. Mientras que los microprocesadores se han vuelto más poderosos, también se han especializado y han dado lugar a los ahora llamados procesadores de uso general, a los procesadores digitales de señales (DSP), y a los microcontroladores. Con la intención de agilizar el desarrollo de aplicaciones, mientras que son tratados los conceptos básicos referentes a los microcontroladores PIC16, en este libro se presentarán una serie de ejemplos y pequeños proyectos. La programación de estos proyectos se efectuó por completo en lenguaje ensamblador por las razones siguientes:

  • Es falsa la idea que usando lenguajes de alto nivel se puede uno librar de conocer a fondo la estructura de los microcontroladores. Es posible programar las computadoras persónales conociendo muy poco de su funcionamiento, porque cuentan con un sistema operativo y “manejadores” para gestionar sus recursos que casi siempre son: memoria, puertos, teclados, ratones, impresoras y monitores. Aunque más lentamente y requiriendo un poco de dedicación, los humanos podemos gestionar mejor los recursos que los compiladores, por ejemplo: podemos optimizar en forma intercalada algunos segmentos de código para ocupar poca memoria y otros para ejecutarse rápidamente.
  • Ya que los compiladores no se hacen solos, las personas con conocimientos de los procesadores y de lenguajes de bajo nivel son requeridas para el diseño y desarrollo de estas herramientas.
  • No se requiere adquirir programas para efectuar los desarrollos.

Primeros pasos

Los microcontroladores PIC16 ejecutan sólo 35 instrucciones diferentes, por lo que se consideran procesadores de tipo RISC (Reduced Instruction Set Computer). La sig. Tabla muestra dicho conjunto de instrucciones.

siguiente posición a la izquierda, el valor de este uno se multiplica por el peso de la posición y resulta un diez; sumando estos valores obtenemos el dieciséis. SISTEMA BINARIO En el segundo ejemplo se agregó al 16 un cero a la izquierda, es decir, 016; si no usáramos cotidianamente el sistema decimal, tendríamos que efectuar la siguiente operación para determinar el valor que estamos representando: cero veces cien + una vez diez + seis veces uno; el objetivo de este segundo ejemplo es hacer notar que escribiendo en decimal no usamos los ceros a la izquierda porque no aportan información. En el último ejemplo de la tabla se representa el ciento sesenta mil novecientos diez; una vez cien mil + seis veces diez mil + cero veces mil + nueve veces cien + una vez diez + cero veces uno; una cantidad bastante grande, representada sistemáticamente a partir de diez símbolos que toman diferente valor dependiendo de la posición en que aparecen. En el sistema binario hay sólo dos símbolos y se usa en las computadoras digitales porque Es relativamente simple fabricar transistores que operen en dos estados diferentes: Corte representación. Con los transistores trabajando en estos modos se generan los circuitos para representar Los símbolos 0 y 1; sin embargo, es importante resaltar que corte NO representa forzosamente Alguno de los símbolos y saturación al otro, eso depende de la tecnología usada; en el caso de Los PIC16 se usa tecnología CMOS y obtener cada símbolo requiere del uso de dos transistores Operando en forma complementaria (el tema se retomará al abordar el uso de los puertos).

Sistema hexadecimal La tabla 1.4 muestra los ejemplos correspondientes al sistema hexadecimal. Para determinar el valor de una cifra seguiríamos el mismo proceso que en los sistemas decimal y Binario, sólo que en esta ocasión contamos con dieciséis símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F (sistema base dieciséis). Del 0 al 9 los símbolos representan lo mismo que en Sistema decimal, el símbolo A representa un diez, el B un once y así sucesivamente hasta el F, Que representa quince.

Memoria en los PIC16 (lo esencial para iniciar)

Cada localidad en la memoria de programa es de 14 bits, espacio suficiente para

almacenar Una instrucción y sus operandos (véase columna 4 de la tabla 1.1). La memoria

de programa Está dividida en secciones a las que se les llama páginas; cada página es de

2048 espacios y El PIC16 que tiene más memoria de programa, tiene cuatro páginas. La

primera localidad se Accede a través de la dirección 0. Una dirección en la memoria de

¿Qué representan en la tabla 1? ¿las letras f, d, b y k? En la primera columna de la tabla 1.1 se presentan los mnemónicos de las instrucciones que manejan los PIC16; después de cada instrucción puede presentarse una f, d, b o k. Estas letras representan los datos u operandos que requiere cada instrucción.

A través de la memoria para datos de los PIC16, se puede acceder a una serie de registros relacionados Con la operación del núcleo del procesador y de sus periféricos (registros de uso específico); estos registros ocupan Las primeras 32 localidades en cada banco. Las celdas sombreadas representan localidades que no existen en los Dispositivos. El MPLAB MPLAB es el nombre del entorno o ambiente integrado de desarrollo que ofrece la compañía Microchip para trabajar con sus productos. Para el desarrollo de este libro se usó la versión 8.53, que era la más nueva al iniciar el proyecto. Entre otras cosas, dicho ambiente integrado De desarrollo IDE (por sus siglas en inglés) permite editar, simular y depurar los programas, Así como fungir como controlador del equipo que finalmente programará el circuito integrado.

  1. Una vez que se esté ejecutando el MPLAB, seleccione Project Wizard... en el menú Project (figura 1.3). Aparecerá una ventana de presentación y será necesario oprimir el botón “siguiente”.
  2. La ventana siguiente permite seleccionar el procesador para el que desarrollaremos la aplicación, en este primer ejemplo usaremos el PIC16F84A (figura 1.4).
  3. Después obtendremos la ventana en la que se selecciona el lenguaje de desarrollo; para todos nuestros proyectos usaremos el lenguaje ensamblador y será necesario seleccionar Microchip MPASM Toolsuite. MUY IMPORTANTE: no avance de esta ventana si en la sección Toolsuite Contents aparece algún componente marcado con un tache, se trata de un problema con la trayectoria donde fueron almacenados los archivos y se corrige seleccionando la carpeta (directorio) correcta con el botón Browse (figura 1.5).
  4. A continuación se debe seleccionar la carpeta que contendrá el proyecto; use el botón Browse. Después dé un nombre al proyecto; en nuestro primer ejemplo haremos un ciclo de 10 iteraciones, por lo que sugerimos el nombre “ciclo”. El MPLAB agregará la extensión “mcp”
  1. Como NO hemos creado un archivo con el código de nuestro programa, en la siguiente ventana no podremos agregarlo al proyecto y nos concretaremos a oprimir “siguiente” (figura 1.7).
  2. Aparecerá una ventana resumiendo los datos del proyecto que hemos creado. Se debe oprimir “finalizar” (figura 1.8).
  3. Ahora tenemos un proyecto vacío, así que sigue crear el código fuente. Use la opción New del menú File. En el ambiente aparece una sección donde podemos editar texto. Antes de escribir cualquier cosa, seleccionaremos la opción Save As... del menú File para darle un nombre al archivo que contendrá el programa; utilizaremos el nombre “ciclo.asm” (figura 1.9). Aunque en el ambiente ya vemos la ventana de edición para el archivo “ciclo.asm”, éste aún no forma parte del proyecto; para incorporarlo hay que usar el ratón para colocar el puntero sobre la ventana de proyecto (titulada “ciclo.mcw”). Al oprimir el botón derecho sobre Source Files, aparecerá un menú en el que seleccionaremos Add Files...; después seleccionaremos “ciclo.asm” y oprimiremos “Abrir”; con esto el archivo “.asm” ya forma parte del proyecto (figura 1.10).
  1. Para evaluar en forma controlada el funcionamiento de los programas se usa un depurador; en este caso usaremos el MPLAB SIM, que forma parte del ambiente de desarrollo; para activarlo use la opción Select Tool en el menú Debugger (figura 1.11).
  2. Agregaremos un componente en el ambiente que permitirá observar cómo se desarrolla el programa; para hacerlo seleccione la opción Watch en el menú View (figura 1.12).
  3. En la ventana de programa “ciclo.asm”, agregaremos cuatro directivas para el ensamblador (figura 1.12). Es importante notar que éstas no son instrucciones para el microcontrolador y se hablará con detalle de ellas más adelante. Teclearemos al menos un espacio, en este caso dos tabuladores, antes de cada directiva. Directiva 1, PROCESSOR 16F84A; indica al MPLAB qué microcontrolador usaremos. Directiva 2, INCLUDE P16F84A.INC; ordena que el archivo “P16F84A.INC” forme parte del proyecto. Directiva 3, ORG 0; ordena al MPLAB que comience a acomodar el programa a partir de la dirección cero de la memoria de programa. Directiva 4, END; ordena que se detenga el proceso de “traducción” de lenguaje ensamblador a lenguaje de máquina; recuerde, NO significa detener la ejecución del programa en el microcontrolador.
  4. Aunque todavía no hemos programado nada, daremos la orden de ejecutar la simulación seleccionando la opción Run en el menú Debugger. El MPLAB avisará que el proyecto no está actualizado y preguntará si lo queremos construir; responderemos que sí. Después el MPLAB preguntará qué tipo de manejo de memoria deseamos; responderemos que absoluto (figura 1.13).

Al concluir el proceso obtendremos una serie de mensajes en la ventana de salida; el último será BUILD SUCCED. En este punto tenemos preparado el ambiente de desarrollo para efectuar los programas de ejemplo que usaremos al presentar el conjunto de instrucciones (figura 1.14). Cada vez que se modifique el código y se quieran observar los efectos en el simulador es necesario usar la opción Build All en el menú Project; como alternativas se tienen el icono Build All y las teclas Ctrl+F

Para inicializar el contador (CONT) a diez, requerimos dos instrucciones: una que cargue la constante o literal al registro de trabajo (MOVLW), y otra que pase el contenido del registro de trabajo a una localidad de memoria (MOVWF) (tablas 1.1 y 1.5). Para observar el efecto que tienen estas instrucciones, agregamos CONT (usando Add Symbol) y WREG (usando Add SFR) en la ventana Watch (figura 1.15). Para ejecutar el programa línea por línea se usa la opción Step Into del menú Debuger también se pueden usar la tecla F7 y el icono Step Into (al desplazar el cursor sobre los iconos aparece una etiqueta indicando su nombre o función).El cuerpo principal del programa sólo tiene la instrucción NOP precedida por la etiqueta CICLO. Esta etiqueta funciona en forma conjunta con la instrucción GOTO, que a su vez sirve para modificar el flujo en los programas. “Normalmente” se ejecuta una instrucción tras otra; al llegar a GOTO CICLO se ordena al microcontrolador ejecutar la instrucción que está en la dirección representada por CICLO. Observe en la figura 1.15 (memoria de programa) que CICLO se reemplazó automáticamente por 0x2 – GOTO 0x2, en lugar de GOTO CICLO. Antes de que se ejecute por primera vez la instrucción DECFSZ, el contenido de la localidad 020 representada por CONT es diez, después de la ejecución CONT valdrá 9; como este resultado es diferente de 0, no se ordenará saltar la siguiente instrucción. Como resultado de las siguientes iteraciones, CONT valdrá o almacenará: 8, 7, 6, 5, 4, 3, 2, 1 y 0. En la misma iteración en la que DECFSZ causa que CONT valga 0, el microcontrolador dejará de ejecutar (saltará) la instrucción GOTO: la flecha a la izquierda de las ventanas del programa en ensamblador y de la memoria de programa apuntará al penúltimo NOP (fin del ejemplo, figura 1.16).De la figura 1.17 a la 1.21 se muestra la descripción, similar a la que hace Microchip en el manual de procesadores de mediano rango,[1] de las instrucciones hasta ahora utilizadas. En comparación con la descripción de Microchip, se retiraron: Words porque todas las instrucciones ocupan una palabra en la memoria de programa, y Q Cycle Activity porque esto será tratado en el capítulo de arquitectura

es la misma que se usó para CONT en el ejemplo anterior. Para iniciar a cero RESULT se usó la instrucción CLRF (figura 1.23). Esta instrucción causa además que la bandera cero (Z) en el registro de estado (STATUS) tome el valor de 1. Para observar este cambio: en la ventana Wacth agregue STATUS usando la opción Add SFR. Puede facilitar la verificación si coloca además el apuntador sobre la opción decimal de la ventana Watch, da clic con el botón derecho y agrega la modalidad de visualización Binary (figura 1.22). El bit Z es el número 2, contando de derecha a izquierda a partir de 0 (registro 1.1).