40
.

lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

.

Page 2: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Contenidos Capítulo I Introducción a la Programación Definición de programación………………………………………………..…………… 1 Pasos para desarrollar un programa……………….………………..…………………... 1 Definición de Pseudo Código……………………………………..……………………. 1 Como el Analista de Sistema utiliza en la práctica el Pseudo Código…………………. 2

Capítulo II Niveles de Lenguaje Introducción………………..………………………………………………..………….. 4 Lenguajes de bajo nivel………………………….……………………….…………….. 4 Complejidad vs. Dificultad… ………………………………………..…………………. 4 Assembler…………………………………………………………………….…………. 5 Lenguajes de medio nivel… ………………..……………………………..……………. 5 Lenguajes de alto nivel……………………………………………………….…………. 5

Capítulo III Diagrama de Flujo Introducción………………..………………………………………………………..…... 7 Como realizar un diagrama de flujo………………….….………………..…………….. 7 Ventajas de los diagramas de flujo……..………………..………………..…………….. 8 Reglas para realizar un diagrama de flujo……….………………………..…………….. 8 Símbolos estándares……………………..……….………………………..…………….. 8 Operadores estándares…………………..……….………………..…………………….. 9 Ejemplo de diagrama de flujo……………………...…….………………..……………. 11

Capítulo IV Introducción al Microcontrolador ¿Qué es un microcontrolador?……………..…….………….…………….……………. 12 Diferencia entre microprocesador y microcontrolador .…………….…….……………. 12 Arquitectura interna del microcontrolador ..…….……………….……….……………. 13 Memoria de programa ………………………………..…………………..……………. 13 Memoria de datos ………………………....…….………………………..……………. 14 Oscilador …………….……………………………………..…………….……………. 14 Los Puertos I/O del PIC ………………………....…….……………….……………… 16 Entradas digitales ………………………....……………..……………….……………. 16 Entradas analógicas ….……………………………..…………………….……………. 16 Salidas ………………....…….……………………………….………………………… 17

Capítulo V Programación en C aplicado a PIC Introducción ……………………………………..…….….…………….……………… 20 Estructura de un programa en C .………………………….……………...……………. 20 Tipos de datos ..…….…………………………………….……………….……………. 20 Variables globales y locales …………….……………………..………….……………. 21 Control de flujo ………………………………….....…….……………….……………. 22 Ejecución de condicional if…………………………….………….…. 22 Controles de loops …..…………………………..……………………. 24 while ……..……………….…………..………..…. 24 for …..……………………………..……………... 26 Ejemplo completo ……………………………..…….……………..…………………… 28

Capítulo VI Compilación en MPLAB Introducción ……………………………..…….……………….…………..…………… 32 Pasos para realizar la compilación .…………………………..…………...…………….. 32

1° Edición

Año MMXVII

Page 3: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

.

1

Prof. De Marinis

Capitulo I Introducción a la Programación

Definición de programación

Programación de computadoras es la ciencia que permite a una persona programar una computadora para que resuelva tareas de manera rápida. Un Programa de computadora se puede definir como una secuencia de instrucciones que indica las acciones o tareas que han de ejecutarse para dar solución a un problema determinado.

Programar computadoras es indispensable en cualquier área de la ingeniería, ya que diferentes problemas que se puedan presentar tardan tiempo resolverlos de manera manual. La computadora resuelve problemas de acuerdo como se le haya programado de manera rápida.

Pasos para desarrollar un programa Para llegar a tener una secuencia de instrucciones que den solución a un problema es

necesario ejecutar varias etapas.

1. Etapa de análisis: En esta etapa el programador debe entender claramente el problema. Saber que es lo que se quiere resolver. A esta etapa se la llama también Analizar.

2. Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema. Estos pasos se pueden desarrollar a través de un Diagrama de flujo (Utilizando símbolos) ó a través de un seudo lenguaje (Utilizando Lenguaje común) conocido como Algoritmo.

3. Etapa de prueba: Consiste en chequear el algoritmo paso a paso para estar seguro si la solución da solución verdaderamente el problema. A esta etapa se la llama también Prueba de Escritorio.

4. Etapa de implementación específica: Consiste en traducir el algoritmo a un lenguaje de programación. A esta etapa se la llama también Codificar.

5. Etapa de prueba: Consiste en ejecutar el programa en un computador y revisar los datos arrojados para ver si son correctos y hacer los ajustes necesarios. A esta etapa se la llama también Implementar.

6. Etapa de uso: Consiste en instalar el programa de manera definitiva para el uso por parte del usuario.

Definición de Pseudo Código

No es una forma de programación. Se trata de una herramienta que los analistas de sistemas utilizan para comunicar a los programadores la estructura del programa que van a realizar, de forma de tener una idea bien clara de lo que se necesita programar.

El Pseudo Código es una forma de diagramar un algoritmo (1) para resolver un determinado problema, sin atenerse a ningún lenguaje de programación en especial.

En vez de escribir el programa directamente en un lenguaje de programación determinado (C, Basic, etc.), crearemos un borrador entendible para todos, para luego de tener bien en claro lo que se debe hacer, pasar a la programación propiamente dicha. El Pseudo Código se refiere a crear un código para orientar a los programadores, pero sin la sintaxis ni la estructura propia de ningún lenguaje.

(1) Un algoritmo es un conjunto de procedimientos que permiten resolver un problema

Page 4: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Capítulo I

Introducción a la Programación

2

En el siguiente diagrama de bloques mostramos donde se ubicaría el Pseudos Código en el

desarrollo de un programa.

Un Pseudo Código no hay que confundirlo con un Diagrama de Flujo. En el diagrama de

flujo se representa el transcurso del programa, el momento donde se obtienen los datos, cuando se procesan y el momento de presentar los resultados. Si bien son dos herramientas que se utilizan en conjunto, cada una representa dos partes distintas en el diseño de un sistema. Como el Analista de Sistema utiliza en la práctica el Pseudos Código

En el trabajo de un Analista de Sistemas, una de las partes más trabajosas es la de determinar que es lo que necesitan de un sistema los usuarios finales. Se dedican muchas horas a hacer un relevamiento de los datos que serán necesarios, los tipos de procesamientos, las salidas, etc.

Analizamos el siguiente diagrama: Como se observa debe existir una realimentación entre el diseño y el usuario, para garantizar

que el sistema cumpla con los requisitos del usuario. Supongamos que tenemos un sistema para una empresa que utiliza una interfaz gráfica en

Visual Basic, algunas aplicaciones específicas en C, y páginas PHP para trabajo vía Internet. Seguramente que crear un diagrama específico para cada lenguaje sería una tarea tediosa.

Gracias a esta herramienta, podemos reunir a todos los programadores, dar las pautas de trabajo, y mediante el pseudo código, cada programador sabrá lo que hace el sistema, y podrá escribir el código correspondiente.

Incluso dos programadores que dominen el mismo lenguaje pueden tener metodologías de trabajo distintas. Un problema puede ser resuelto de muchas maneras, cada una más o menos eficiente que la otra, pero todas cumplen con el objetivo.

Requerimientos Pseudos Código Codificación

Analista de Sistemas Programadores

Usuario

Determinación de

requisitos Desarrollo Sistema

Page 5: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

.

3

Prof. De Marinis

El pseudo código elimina estas diferencias, dando libertad a los programadores para que

puedan ajustarse a su metodología de trabajo. Generalmente, este código se escribe con la participación de todos los programadores. Esto

representa la ventaja de que muchas opiniones ayudan a elegir la mejor entre todas, logrando una solución efectiva y eficaz al problema planteado.

Analista de Sistemas

Programador de C

Pseudos Código

Programador de PHP

Programadora de Visual Basic

Programa en C

Programa en Visual Basic

Programa en PHP

Page 6: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Capítulo II

Niveles de Lenguaje

4

Capitulo II Niveles de Lenguaje

Introducción Los lenguajes de programación son lenguajes creados por el ser humano para poder

comunicarse con las computadoras. Así podríamos decir que lenguaje de programación es el conjunto de símbolos y palabras que permiten al usuario de una computadora darle instrucciones y órdenes para que la computadora los ejecute.

Se los pueden clasificar en tres niveles, lenguaje de bajo nivel, lenguaje de nivel medio y lenguaje de nivel alto.

Mientras más bajo es el nivel de lenguaje, se acerca mas al lenguaje de la computadora y es más económico en el uso de recursos (cantidad de memoria). Mientras que más alto es el lenguaje es más cercano al lenguaje del ser humano haciéndolo de mas fácil comprensión, pero con mayor uso de recursos.

Lenguajes de bajo nivel

Un lenguaje de programación de bajo nivel es aquel en el que sus instrucciones ejercen un control directo sobre el hardware y están condicionados por la estructura física de las computadoras que lo soportan. El uso de la palabra bajo en su denominación no implica que el lenguaje sea menos potente que un lenguaje de alto nivel, sino que se refiere a la reducida abstracción entre el lenguaje y el hardware. Por ejemplo, se utiliza este tipo de lenguajes para programar tareas críticas de los sistemas operativos, de aplicaciones en tiempo real o controladores de dispositivo.

Complejidad vs. dificultad

Dicho lenguaje es muy simple o nada complicado, pero estructurar programas a ese nivel es muy difícil. Dado que este lenguaje viene dado por las especificaciones técnicas del hardware, no permite una abstracción fuera de lo estipulado para el microprocesador de un ordenador. Consecuentemente, es fácilmente trasladado a lenguaje de máquina.

Las estructuras de los lenguajes de bajo nivel son:

1. Código Binario - Es el lenguaje básico, sólo admite todo (1) o nada (0). Todo sistema informático está basado en este código, ya que el 1 (todo, SÍ) quiere decir que se permite el paso de la electricidad y el 0 (nada, NO) no lo permite. Sería la forma en la que están almacenados los programas, sea en memoria, sea en dispositivos de almacenamiento. De esta forma son recibidas y ejecutadas cada una de las instrucciones por la CPU del ordenador.

2. Lenguaje Máquina - Las invocaciones a memoria, como los procesos aritméticos lógicos son posiciones literales de conmutadores físicos del hardware en su representación booleana. Estos lenguajes son literales de tareas. Este lenguaje de programación utiliza el alfabeto binario, es decir, el 0 y el 1. Con estos dos únicos dígitos, también conocidos como bits, se forman lo que se conoce como cadenas binarias (combinaciones de ceros y unos) son con las que se escriben las instrucciones, y a través de estas instrucciones el microprocesador de la computadora entiende nuestros requerimientos.

3. Lenguajes ensambladores - También denominados nemotécnicos o nemónicos, no son ya programas ejecutables directamente por el ordenador, sino textos de código fuente que necesitan de alguna herramienta para su conversión a lenguaje máquina, son los programas llamados ensambladores. Sus instrucciones suelen ser una denominación abreviada de la instrucción máquina que simbolizan, y tienen una correspondencia casi directa a las

Page 7: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

.

5

Prof. De Marinis

instrucciones máquina que representan. El código resultante de la ejecución del programa ensamblador generaría un código binario ejecutable.

Son instrucciones que ensamblan los grupos de conmutadores necesarios para expresar una mínima lógica aritmética. Están íntimamente vinculados al hardware. Por norma general están disponibles a nivel firmware, cmos o chip set. Estos lenguajes están orientados a procesos. Los procesos se componen de tareas. Contienen tantas instrucciones como la arquitectura del hardware así haya sido diseñada.

Assembler:

El lenguaje ensamblador, o assembler (en inglés assembly language y la abreviación asm), es un lenguaje de programación de bajo nivel.

Consiste en un conjunto de mnemónicos que representan instrucciones básicas para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables.

Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura de procesador y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador. Cada arquitectura de procesador tiene su propio lenguaje ensamblador que usualmente es definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico de cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que idealmente son portátiles.

Lenguajes de medio nivel

Un lenguaje de programación de medio nivel se encuentra entre los lenguajes de alto nivel y los lenguajes de bajo nivel.

Suelen ser clasificados de alto nivel, pero permiten ciertos manejos de bajo nivel. Son precisos para ciertas aplicaciones como la creación de sistemas operativos, ya que permiten un manejo abstracto (independiente de la máquina, a diferencia del lenguaje ensamblador), pero sin perder mucho del poder y eficiencia que tienen los lenguajes de bajo nivel.

Una característica distintiva, por ejemplo, que convierte al lenguaje de programación C en un lenguaje de medio nivel y al lenguaje de alto nivel, es que en el primero es posible manejar las letras como si fueran números, por el contrario, en los lenguajes de alto nivel es posible concatenar las cadenas de caracteres con el operador suma y copiarlas con esa asignación.

Una de las características más peculiares del lenguaje de programación C es el uso de apuntadores, los cuales son muy útiles en la implementación de algoritmos como listas ligadas, tablas hash y algoritmos de búsqueda y ordenamiento que para otros lenguajes de programación (como en el lenguaje de programación Java, por ejemplo) suelen ser un poco más complicados de implementar.

Lenguajes de alto nivel

Un lenguaje de programación de alto nivel se caracteriza por expresar el algoritmo de una manera adecuada a la capacidad cognitiva humana, en lugar de la capacidad ejecutora de las máquinas.

Page 8: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Capítulo II

Niveles de Lenguaje

6

En los primeros lenguajes, la limitación era que se orientaban a un área específica y sus instrucciones requerían de una sintaxis predefinida. Se clasifican como lenguajes procedimentales o lenguajes de bajo nivel. Otra limitación de estos es que se requiere de ciertos conocimientos de programación para realizar las secuencias de instrucciones lógicas. Los lenguajes de alto nivel se crearon para que el usuario común pudiese solucionar un problema de procesamiento de datos de una manera más fácil y rápida.

Lenguaje de alto nivel se refiere al nivel más alto de abstracción de lenguaje de máquina. En lugar de tratar con registros, direcciones de memoria y las pilas de llamadas, lenguajes de alto nivel se refieren a las variables, matrices, objetos, aritmética compleja o expresiones booleanas, subrutinas y funciones, bucles, hilos, cierres y otros conceptos de informática abstracta, con un enfoque en la facilidad de uso sobre la eficiencia óptima del programa.

Principales lenguajes de alto nivel:

VB.NET – Ada – ALGOL – BASIC - C Sharp – FORTRAN – Java – Lisp - Modula-2 - Pascal – Perl – PHP - PL/1 - PL/SQL – Python – Ruby - MATLAB

Page 9: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

.

7

Prof. De Marinis

Capitulo III Diagrama de Flujo

Introducción

Un diagrama de flujo es una representación gráfica de un algoritmo o proceso. Se utiliza en disciplinas como la programación, la economía, los procesos industriales y la psicología cognitiva. Estos diagramas utilizan símbolos con significados bien definidos que representan los pasos del algoritmo, y representan el flujo de ejecución mediante flechas que conectan los puntos de inicio y de término.

Como realizar un diagrama de flujo

Un diagrama de flujo siempre tiene un único punto de inicio y un único punto de término.

Además, todo camino de ejecución debe permitir llegar desde el inicio hasta el término.

Acciones previas:

Las siguientes son acciones previas a la realización del diagrama de flujo:

• Identificar las ideas principales a ser incluidas en el diagrama de flujo.

• Definir qué se espera obtener del diagrama de flujo.

• Identificar quién lo empleará y cómo.

• Establecer el nivel de detalle requerido.

• Determinar los límites del proceso a describir.

Pasos para desarrollar el diagrama de flujo:

Los pasos a seguir para construir el diagrama de flujo son:

• Establecer el alcance del proceso a describir. De esta manera quedará fijado el comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso siguiente.

• Identificar y listar las principales actividades/subprocesos que están incluidos en el proceso a describir y su orden cronológico.

• Si el nivel de detalle definido incluye actividades menores, listarlas también.

• Identificar y listar los puntos de decisión.

• Construir el diagrama respetando la secuencia cronológica y asignando los correspondientes símbolos.

• Asignar un título al diagrama y verificar que esté completo y describa con exactitud el proceso elegido.

Page 10: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Capítulo III

Diagrama de Flujo

8

Ventajas de los diagramas de flujo

• Favorecen la comprensión del proceso a través de mostrarlo como un dibujo. El cerebro humano reconoce fácilmente los dibujos. Un buen diagrama de flujo reemplaza varias páginas de texto.

• Permiten identificar los problemas y las oportunidades de mejora del proceso. Se identifican los pasos redundantes, los flujos de los re-procesos , los conflictos de autoridad, las responsabilidades, los cuellos de botella, y los puntos de decisión.

• Muestran las interfaces cliente-proveedor y las transacciones que en ellas se realizan, facilitando a los empleados el análisis de las mismas.

• Son una excelente herramienta para capacitar a los nuevos empleados y también a los que desarrollan la tarea, cuando se realizan mejoras en el proceso.

Reglas para dibujar un diagramas de flujo.

1. Los Diagramas de flujo deben escribirse de arriba hacia abajo, y/o de izquierda a derecha.

2. Los símbolos se unen con líneas, las cuales tienen en la punta una flecha que indica la dirección que fluye la información procesos, se deben de utilizar solamente líneas de flujo horizontal o verticales (nunca diagonales).

3. Se debe evitar el cruce de líneas, para lo cual se quisiera separar el flujo del diagrama a un sitio distinto, se pudiera realizar utilizando los conectores. Se debe tener en cuenta que solo se vana utilizar conectores cuando sea estrictamente necesario.

4. No deben quedar líneas de flujo sin conectar

5. Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de muchas palabras.

6. Todos los símbolos pueden tener más de una línea de entrada, a excepción del símbolo final.

7. Solo los símbolos de decisión pueden y deben tener más de una línea de flujo de salida.

Los Diagramas de flujo se dibujan generalmente usando algunos símbolos estándares; sin embargo, algunos símbolos especiales pueden también ser desarrollados cuando sean requeridos.

Los símbolos estándares, que se requieren con frecuencia para diagramar programas de computadora se muestran a continuación:

Símbolos estándares

• Inicio o fin del programa o subprogramas. Si se usa en el inicio, se escribe un nombre o referencia que indique, cual es la función del programa o subprograma.

Inicio/Fin

Page 11: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

.

9

Prof. De Marinis

• Pasos, procesos o líneas de instrucción. Se utiliza para definir variables o constantes, realizar operaciones aritmético lógicas, llamar a subrutinas o funciones, cargar valores en variables

• Entrada. Se utiliza para señalar el ingreso de valores por parte del usuario

• Decisión/Bifurcación. Se utiliza para hacer una pregunta para decidir que secuencia de pasos realizar o no. Este símbolo es el único con una entrada y dos salidas, de ahí el nombre de bifurcación

• Conector de página. Se utiliza cuando el diagrama de flujo sigue en otra página, el uso de este símbolo es para indicar la continuidad de la línea de flujo. Para identificar la continuidad la línea de flujo de una página a otra se le coloca un número. La orientación del símbolo depende del sentido del flujo del algoritmo

• Líneas de flujo. Se utilizan para indicar la secuencia del algoritmo

Operadores estándares

Los operadores son utilizados específicamente para operaciones aritméticas y relaciones condicionales. La siguiente es una lista de los símbolos más comúnmente utilizados en el lenguaje C de los microcontroladores:

Proceso

Entrada

Decisión

Page 12: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Capítulo III

Diagrama de Flujo

10

Operador Propósito

* Multiplicación

+ Suma

- Resta

/ División

= ó eq Igualdad

> ó gt Mayor que

>= ó ge Mayor o igual que

< ó lt Menor que

<= ó le Menor o igual que

<> ó ne No igual a

Low Byte bajo

High Byte alto

Mod Módulo

& AND

˄ EXOR

| OR

Not Complemento

<< ó shl Corrimiento a la izquierda

>> ó shr Corrimiento a la derecha

Rol Rotación a la izquierda

Ror Rotación a la derecha

Page 13: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

. 11

Prof. De Marinis

Ejemplo de diagrama de flujo:

Desarrollar el diagrama de flujo que cumpla con la siguiente consigna: Calcular la suma de los 20 primeros números naturales.

Sumatoria

Suma – entero Num -- entero

Suma =0

Num =0

Num =Num+1

Suma =Suma+Num

Num <= 20

Fin

si

no

Inicio

Proceso Se definen las variables Suma y Num como números esnteros.

Proceso Se inicializa la variable Suma con

el valor 0.

Proceso Se inicializa la variable Suma con

el valor 0.

Proceso Incrementar el valor de Num

Proceso A la variable Suma se le suma el

nuevo valor de Num

Decisión Pregunta si Num es menor o igual a

20

Fin

salida SI

salida NO

Page 14: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Capítulo IV

Introducción al Microcontrolador

12

Capítulo IV Introducción al Microcontrolador

¿Qué es un microcontrolador?

Es un circuito integrado programable que contiene todos los componentes de un computador. Se emplea para controlar el funcionamiento de una tarea determinada y, debido a su reducido tamaño, suele ir incorporado en el propio dispositivo al que gobierna. Esta última característica es la que le confiere la denominación de «controlador incrustado»

Un microcontrolador es un computador completo, aunque de limitadas prestaciones, que está contenido en el chip de un circuito integrado y se destina a gobernar una sola tarea. Diferencia entre microprocesador y microcontrolador

Un microprocesador es un sistema abierto con el que puede construirse un computador con las características que se desee, acoplándole los módulos necesarios. Un microcontrolador es un sistema cerrado que contiene un computador completo y de prestaciones limitadas que no se pueden modificar.

µP

Microprocesador

Bus de Direcciones

Bus de Datos

Bus de Control

Memoria Controlador 1

Controlador 2

Periféricos Periféricos

Estructura de un sistema abierto basado en un microprocesador

Page 15: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

. 13

Prof. De Marinis

ARQUITECTURA INTERNA DEL MICROCONTROLADOR

Un microcontrolador posee todos los componentes de un computador, pero con unas características fijas que no pueden alterarse. Las partes principales de un microcontrolador son: 1. Procesador 2. Memoria no volátil para contener el programa 3. Memoria de lectura y escritura para guardar los datos 4. Memoria de datos no volátil. 5. Líneas de EIS para los controladores de periféricos: a) Comunicación paralelo b) Comunicación serie c) Diversas puertas de comunicación (bus l2C, USB, etc.) 6. Recursos auxiliares: a) Circuito de reloj b) Temporizadores c) Perro Guardíán («watchdog») d) Conversores AD y DA e) Comparadores analógicos f) Protección ante fallos de la alimentación g) Estado de reposo o de bajo consumo

Memoria de programa

El microcontrolador está diseñado para que en su memoria de programa se almacenen todas las instrucciones del programa de control. No hay posibilidad de utilizar memorias externas de ampliación.

µC

Microcontrolador

Estructura de un sistema cerrado basado en un microprocesador. Todas las partes del computador están contenidas en su interior y sólo

salen al exterior las líneas que gobiernan los periféricos.

Periféricos Periféricos

Page 16: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Capítulo IV

Introducción al Microcontrolador

14

Como el programa a ejecutar siempre es el mismo, debe estar grabado de forma permanente. Los tipos de memoria adecuados para soportar esta función admiten cinco versiones diferentes:

• ROM con máscara: En este tipo de memoria el programa se graba en el chip durante el proceso de su fabricación mediante el uso de «máscaras». Los altos costes de diseño e instrumental sólo aconsejan usar este tipo de memoria cuando se precisan series muy grandes.

• EPROM: La grabación de esta memoria se realiza mediante un dispositivo físico gobernado desde un computador personal, que recibe el nombre de grabador. En la superficie de la cápsula del microcontrolador existe una ventana de cristal por la que se puede someter al chip de la memoria a rayos ultravioletas para producir su borrado y emplearla nuevamente. Es interesante la memoria EPROM en la fase de diseño y depuración de los programas, pero su coste unitario es elevado.

• OTP (Programable una vez): Este modelo de memoria sólo se puede grabar una vez por parte del usuario, utilizando el mismo procedimiento que con la memoria EPROM. Posteriormente no se puede borrar. Su bajo precio y la sencillez de la grabación aconsejan este tipo de memoria para prototipos finales y series de producción cortas.

• EEPROM: La grabación es similar a las memorias OTP y EPROM, pero el borrado es mucho más sencillo al poderse efectuar de la misma forma que el grabado, o sea, eléctricamente. Sobre el mismo zócalo del grabador puede ser programada y borrada tantas veces como se quiera, lo cual la hace ideal en la enseñanza y en la creación de nuevos proyectos.

• FLASH: Se trata de una memoria no volátil, de bajo consumo, que se puede escribir y borrar en circuito al igual que las EEPROM, pero suelen disponer de mayor capacidad que estas últimas. El borrado sólo es posible con bloques completos y no se puede realizar sobre posiciones concretas. En las FLASH se garantizan 1.000 ciclos de escritura-borrado. Son muy recomendables en aplicaciones en las que sea necesario modificar el programa a lo largo de la vida del producto, como consecuencia del desgaste o cambios de piezas, como sucede con los vehículos.

Memoria de datos

Los datos que manejan los programas varían continuamente, y esto exige que la memoria que les contiene debe ser de lectura y escritura, por lo que la memoria RAM estática (SRAM) es la más adecuada, aunque sea volátil. Hay microcontroladores que también disponen como memoria de datos una de lectura y escritura no volátil, del tipo EEPROM. De esta forma, un corte en el suministro de la alimentación no ocasiona la pérdida de la información, que está disponible al reiniciarse el programa. Oscilador

Los PICs poseen un oscilador configurable por programa de características muy amplias. Dependiendo del tipo de PIC podemos encontrar hasta ocho tipos de modelos diferentes de osciladores.

1. LP Oscilador a cristal o resonador cerámico de baja potencia "LP" (Low Power Crystal): Se trata de un oscilador de bajo consumo construido con un cristal de cuarzo o un resonador diseñado para trabajar con frecuencias comprendidas entre 30 KHz y 200 KHz.

2. XP Oscilador o resonador cerámico "XT" (Crystal/Resonator): Es un oscilador estándar que permite una frecuencia de clock entre 100 kHz de 4MHz.

Page 17: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

. 15

Prof. De Marinis

3. HS Oscilador de cristal o resonador de alta velocidad "HS"(High Speed

Crystal/Resonator): Es un oscilador con una frecuencia comprendida entre 4MHz y 10MHz. Tiene un alto consumo de energía.

4. RC Oscilador RC (resistencia/capacitor): Conectado en OSC1 y salida FOSC/4 en OSC2. Oscilador de poca precisión.

5. RCIO Oscilador RC (resistencia/capacitor): Conectado también en OSC1 pero libera el pin OSC2 para ser usado como entrada o salida (I/O).

6. INTIO1 Oscilador interno: Con salida FOSC/4 en OSC2, liberado OSC1 para ser usado como entrada o salida (I/O).

7. INTIO2 Oscilador interno: Los pines OSC1 y OSC2 son liberados para ser usados como entradas o salidas (I/O).

8. ECIO Clock Externo: Conectado también en OSC1 y libera el pin OSC2 para ser usado como entrada o salida (I/O).

Por ejemplo el PIC16F818/819 contiene estas posibilidades de configuración de osciladores.

Del manual de Microchip (PIC16F818/819 Data Sheet) podemos observar como se realizaría la conexión.

Page 18: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Capítulo IV

Introducción al Microcontrolador

16

Los Puertos I/O del PIC

Los microcontroladores PIC cuentan uno, dos tres o más puertos, designados como PORTA (RA), PORTB (RB), etc. Estos puertos paralelos pueden contar hasta 8 pines. Cada pin puede ser configurada para operar como entrada o salida.

Cada pin de un puerto puede entregar hasta 20 mA y recibir hasta 25 mA. Cada una de ellas tiene un resistencia pull-up (resistencia conectada a la fuente) interna que puede ser desconectada por medio del programa. La resistencia pull-up se desconectan automáticamente si se configura como salida.

Para configurar un pin de un puerto como entrada o salida se utilizan los registros TRISx (para el puerto A – TRISA , para el puerto B – TRISB , etc.). Si se desea que un pin opere como salida en el bit correspondiente del registro TRISx se completa con “0” y si se quiere que opere como entrada un “1” .

Entradas digitales

Entradas analógicas

Si el microcontrolador cuenta con conversor analógico digital (A/D), este pic dispondrá de pines que configurados como entradas analógicas, podrá leer este tipo de señal.

5 volts

Pin de un puerto

configurado como entrada

Lógica positiva

Pin de un puerto

configurado como entrada

5 volts

Lógica negativa

Page 19: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

. 17

Prof. De Marinis

Salidas

Cuando un pin de un puerto es configurado como salida, se debe tener mucho cuidado de que la corriente no supere los 20 mA. Por eso es importante poner siempre un limitador de corriente (resistencia). Aquí algunos ejemplos.

5 volts

Pin ANx

Entrada analógica de lectura de un potenciómetro

Pin ANx

5 volts

Lectura de nivel de luz por medio de un LDR

Pin de un puerto

configurado como salida

Salida led

5 volts

Salida transistorizada, amplificación de corriente

Pin de un puerto

configurado como salida

Page 20: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Capítulo IV

Introducción al Microcontrolador

18

Pin de un puerto

configurado como salida

Etapa de potencia con RELAY

12 volts ó 24 volts

Etapa de potencia con RELAY opto acoplado

Page 21: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

. 19

Prof. De Marinis

Control de Potencia con TRIAC

Pin de un puerto

configurado como salida

220 VCA TIC226C TIC226D 2N6073A

Page 22: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Capítulo V

Programación en C aplicado a PIC

20

Capitulo V Programación en C aplicado a PIC

Introducción En este capítulo desarrollaremos distintas estructuras de programación en lenguaje C,

aplicadas a los microcontroladores PIC. Esto será útil como herramienta para que se puedan desarrollar programas en otros tipos de microcontroladores o computadoras o desarrollar programas en otros tipos de lenguajes.

C es un lenguaje de programación estructurado de propósito general. Sus instrucciones constan de términos que se parecen a expresiones algebraicas, además de ciertas palabras clave inglesas como if , else, for , do y while. En este sentido, C recuerda a otros lenguajes de programación estructurados de alto nivel. C tiene también algunas características adicionales que permiten su uso a un nivel más bajo, cubriendo así el vacío entre el lenguaje máquina y los lenguajes de alto nivel más convencionales. Esta flexibilidad permite el uso de C en la programación de sistemas, así como en la programación de aplicaciones.

Estructura de un programa en C Todo programa C consta de una función principal llamada main y podrá además, contener

otras funciones secundarias o subprogramas que son llamadas o solicitadas por la función principal (main) o entre ellas. Estas otras funciones secundarias deberán ser identificadas con un nombre y deberán ser ordenadas antecediendo a la función en la cual es llamada.

La cabecera de la función, consta del nombre de la función, una de las cuales se llama main, seguido de una lista opcional de argumentos encerrados con paréntesis.

A continuación de la cabecera se escriben todas las sentencias pertenecientes a la función entre llaves “{ }”.

Ejemplo:

Para poder escribir un comentario, que no sea tomado como una sentencia por parte del programa compilador, existen dos posibilidades:

• Si es un comentario de varios renglones se lo escribe entre los siguientes indicadores /* y */.

• Si lleva un solo renglón, el comentario se escribe después de los siguientes indicadores //.

Tipos de datos Existen varios tipos de datos asociados con las variables, pero nombraremos dos que

utilizaremos este año:

⁞ void Tiempo(int tf) { ⁞ } void main () { ⁞ Tiempo(200); ⁞ }

Cada sentencia se terminar

con “ ; ” (punto y coma)

Page 23: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

. 21

Prof. De Marinis

• int Entero • char Caracter

Para declarar una o mas variables se deben realizar las siguientes sentencias. Ejemplo:

Variables globales y locales Las variables tiene solo validez en el ambiento en que se declaran. Por lo tanto pueden ser

definidas como globales o locales. Una variable es global cuando es definida fuera de todas las funciones. Todas las funciones la

pueden reconocer y ejecutarla (leer su valor o modificarla). Una variable es local cuando es definida dentro una función y solo es reconocida solo por

dicha función. Ejemplo

⁞ int a,b; ⁞ void funcion1( ) { int c; ⁞ c=a+b; ⁞ } void funcion2( ) { int d,e; char letra1; ⁞ d=a; e=b; d=d+1; e=e*2 ⁞ } void main( ) { int g; g=1; a=g*2; b=g+3; funcion1( ); ⁞ funcion2( ); ⁞ }

a y b son variables globales. Pueden ser utilizadas por funcion1, funcion2 y

main

c es una variable local. Solo puede ser utilizada por funcion1.

d, e y letra1 son variables locales. Solo puede ser utilizada por funcion2.

g es una variable local. Solo puede ser utilizada por main.

⁞ int a,b.c; char d,e; ⁞

Page 24: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Capítulo V

Programación en C aplicado a PIC

22

Control de flujo En un programa no siempre se ejecutan las mismas sentencias o instrucciones. A veces es

necesario, dependiendo de valores de datos de variables o de señales externas, cambiar la secuencia de ejecución de las instrucciones.

Analizaremos Ejecución de Condicional y Control de Loops (bucles).

Ejecución de Condicional:

En la ejecución de condicional veremos dos casos el if (solo) y el if-else.

• if

El caso del if es cuando se realizan tareas únicamente en la bifurcación afirmativa (el camino del SI), mientras que en el camino del NO, no se realiza ningún tipo de tarea.

Ejemplo 1: En el pin RA4, configurado como entrada, se conectó una entrada digital con pulsador de lógica positiva. Cuando este se acciona, se prende un led conectado en RB0, configurado como salida, por un tiempo y luego se apaga.

¿RA4=1? SI

2

NO

RB0=1

Llamar a subrutina Tiempo

RB0=0

1

Esquema del circuito realizado en Proteus

Diagrama de Flujo Pregunta si se activo el pulsador

Prende el led conectado en

RB0

Espera un tiempo

Apaga el led

if (RA4= =1)

{

RB0=1;

Tiempo( );

RB0=0;

}

Programa en C

En la sentencia if no se pone

punto y coma al

final. Porque se abren llaves { }

Page 25: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

. 23

Prof. De Marinis

• if-else

El caso del if-else es cuando se realizan tareas en los dos caminos de la bifurcación (el camino del Si y del NO).

Ejemplo 2: En el pin RA4, configurado como entrada, se conectó una entrada digital con pulsador de lógica positiva. Cuando este se acciona, se prende un led conectado en RB0, y si no se acciona se prende un led en RB7 luego de un tiempo se apaga.

Esquema del circuito realizado en Proteus

¿RA4=1? SI

2

RB0=1

Llamar a subrutina Tiempo

RB0=0

1

Diagrama de Flujo

if (RA4= =1)

{

RB0=1;

Tiempo( );

RB0=0;

}

else

{

RB7=1;

Tiempo( );

RB7=0;

}

Programa en C

NO

RB7=1

Llamar a subrutina Tiempo

RB0=0

Page 26: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Capítulo V

Programación en C aplicado a PIC

24

Controles de Loops:

Para el control de loops veremos dos casos el while y el for . Estas dos sentencias están formadas generalmente por un conjunto de sentencias simples.

• while

El while se utiliza para repetir una o mas sentencias una cierta cantidad de veces determinadas o no. El while puede necesitar una condición de inicio y un incremento de una variable, para poder dar solución a los requerimientos del programa.

La sentencia se realiza de la siguiente manera:

while (condición)

{

sentencia1;

sentencia2;

}

Mientras se siga cumpliendo la condición, se repetirán las sentencias 1 y 2.

Ejemplo 3 Formar un loop infinito : Reconsiderando el ejemplo 1, se observa que la pregunta, si se activó el switch, se realiza una sola vez, pasado este instante no se lee mas esta entrada. Una solución a este problema es un loop infinito usando la sentencia while.

El esquema del circuito es el mismo del ejemplo 1.

¿RA4=1? SI NO

RB0=1

Llamar a subrutina Tiempo

RB0=0

1

Diagrama de Flujo

2

while (1= =1)

{

if (RA4= =1)

{

RB0=1;

Tiempo( );

RB0=0;

}

}

Programa en C

Uno siempre es igual a uno. Esta

condición siempre se

cumple. Así se logra el loop

infinito.

Estas sentencias entre las llaves del while se

repiten.

Llave del while.

Llave del while.

Page 27: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

. 25

Prof. De Marinis

Ejemplo 4 Formar un loop finito : Modificando el ejemplo 3, al activar el switch el led se prende y se apaga cinco veces. Aquí podemos observar que el while trabaja conjuntamente por una condición inicial y un incremento sobre una variable.

El esquema del circuito es el mismo del ejemplo 1.

Ejemplo 5 Formar un loop cuya duración dependa de una entrada o condición aleatoria: Modificando el ejemplo 4, al activar el switch el led se prende y se apaga, y lo continúa haciéndolo mientras se siga activando el switch. El esquema del circuito es el mismo del ejemplo 1.

¿RA4=1? SI NO

RB0=1

Llamar a subrutina Tiempo

RB0=0

1

Diagrama de Flujo

2

while (1= =1)

{

if (RA4= =1)

{

num=1;

while (num<=5)

{

RB0=1;

Tiempo( );

RB0=0;

Tiempo( );

num=num+1;

}

}

}

Programa en C

num=1

¿num<=5?

SI

NO

num=num+1

Llamar a subrutina Tiempo

Esto se repite 5 veces

Page 28: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Capítulo V

Programación en C aplicado a PIC

26

• for

El for se utiliza para repetir una o mas sentencias una cierta cantidad de veces determinadas. El for en sí, está formado por una condición de inicio, una condición de continuidad del loop y un incremento de una variable.

La sentencia se realiza de la siguiente manera:

for (inicialización del contador; condición de continuidad; incremento del loop)

{

sentencia1;

sentencia2;

}

Mientras se siga cumpliendo la condición, se repetirán las sentencias 1 y 2.

¿RA4=1? SI NO

RB0=1

Llamar a subrutina Tiempo

RB0=0

1

Diagrama de Flujo

2

while (1= =1)

{

if (RA4= =1)

{

while (RA4= =1)

{

RB0=1;

Tiempo( );

RB0=0;

Tiempo( );

num=num+1;

}

}

}

Programa en C

¿RA4=1?

SI

NO

Llamar a subrutina Tiempo

Esto se repite mientras se

activa el switch en

RA4

Page 29: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

. 27

Prof. De Marinis

Ejemplo 5 Formar un loop finito usando for: Retomamos el ejemplo 4. Al activar el

switch el led se prende y se apaga cinco veces. Ahora lo resolveremos por medio del for que ya tiene incluido: la pregunta, una condición inicial y un incremento sobre una variable. El diagrama de flujo es el mismo al ejemplo 4.

El esquema del circuito es el mismo del ejemplo 1.

¿RA4=1? SI NO

RB0=1

Llamar a subrutina Tiempo

RB0=0

1

Diagrama de Flujo

2

while (1= =1)

{

if (RA4= =1)

{

for (num=1 ; num<=5 ; num=num+1)

{

RB0=1;

Tiempo( );

RB0=0;

Tiempo( );

}

}

}

Programa en C

num=1

¿num<=5?

SI

NO

num=num+1

Llamar a subrutina Tiempo

Esto se repite 5 veces

Page 30: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Capítulo V

Programación en C aplicado a PIC

28

Definir PORTA como entrada digital Definir PORTB como salida

Definir PORTC como entrada

NO Juego1( )

Diagrama de Flujo de main (bloque principal)

main

¿RA0=1? SI

¿RA1=1? SI

NO

¿RA2=1?

SI

NO

Juego2( )

Juego3( )

fin

PORTB=0 (deja apagado todos los leds)

Ejemplo completo Juego de Luces:

Usando un PIC16F873A desarrollar un sistema de juego de luces. Se cuenta con 3 pulsadores en los pines de RA0, RA1 y RA2. Al activar uno de ellos se debe generar un juego de luces, en 8 leds conectados en el puerto B.

En el diagrama de flujo del bloque principal podemos observar, que primero definimos cuales puertos son de entrada y salida. En este punto debemos considerar que:

• El PIC16F873A tiene la posibilidad de entrada analógica en el puerto A por eso se aclara que se configura como entrada digital. Para ello el registro ADCON1 se carga con 0x06.

• Cuando un pin no se utiliza se recomienda configurarlo como entrada para proteger así al microcontrolador.

Observamos después un loop infinito que resolvemos con un while (1= =1) (condición que se cumplirá siempre) y dentro de el se encuentran las preguntas si se activaron los switch.

Page 31: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

. 29

Prof. De Marinis

Prender un led PORTB←●●●●●●●☼

Diagrama de Flujo de Juego1

Juego1( )

fin

Tiempo(200)

PORTB←●●●●●●☼●

Tiempo(50)

PORTB←●●●●●☼●●

Tiempo(200)

PORTB←●●●●☼●●●

Tiempo(200)

PORTB←●●●☼●●●●

Tiempo(200)

PORTB←●●☼●●●●●

Tiempo(200)

PORTB←●☼●●●●●●

Tiempo(200)

PORTB←☼●●●●●●●

Tiempo(200)

Deja apagado todos los leds

PORTB←●●●●●●●●

Prender un led PORTB←☼●●●●●●●

Diagrama de Flujo de Juego2

Juego2( )

fin

Tiempo(200)

PORTB←●☼●●●●●●

Tiempo(50)

PORTB←●●☼●●●●●

Tiempo(200)

PORTB←●●●☼●●●●

Tiempo(200)

PORTB←●●●●☼●●●

Tiempo(200)

PORTB←●●●●●☼●●

Tiempo(200)

PORTB←●●●●●●☼●

Tiempo(200)

PORTB←●●●●●●●☼

Tiempo(200)

Deja apagado todos los leds

PORTB←●●●●●●●●

Las subrutinas Juego1, Juego2 y Juego3 que son llamadas por el bloque principal del programa llamado main son los que siguen a continuación.

Para representar que un led está prendido utilizamos el siguiente símbolo ☼, para representar un led apagado el siguiente ●.

Nota: Para identificar cual bit del puerto B tener en cuenta:

RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7

Page 32: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Capítulo V

Programación en C aplicado a PIC

30

Diagrama de Flujo de Juego3

Juego3( )

fin

Definir n como entero

Tiempo(100)

PORTB←☼●●●●●●☼

Tiempo(100)

PORTB←●☼●●●●☼●

Tiempo(100)

PORTB←●●☼●●☼●●

Tiempo(100)

n<=3

Deja apagado todos los leds

PORTB←●●●●●●●●

n = 1

PORTB←●●●☼☼●●●

n = n + 1

SI

NO

Diagrama de Flujo de Tiempo

Tiempo(int tfinal )

Definir t1 y t2 como entero

t2=1

t2<=tfinal

t1 = 1

SI

NO

t2=t2+1

t1=t1+1

t1<=tfinal

SI

NO

fin

En el Juego3 la secuencia de prendido desde los

extremos al centro, se repetirá tres veces. Para lograr tal cometido usaremos la sentencia for (n=1; n<=3; n=n+1)

La subrutina Tiempo( ) usada por las subrutinas

Juego1, Juego2 y Juego3. A esta subrutina se le ingresa un argumento del tipo número entero tfinal . Por lo tanto la subrutina queda definida como: Tiempo(int tfinal) .

De las subrutinas

juegos se llaman a Tiempo con un valor entero que será cargado a la variable tfinal .

En sí esta subrutina cuenta con dos loops anidados, para lo cual se usará la sentencia:

for (t1=1; t1<=tfinal; t1=t1+1)

Y dentro de ella la

sentencia:

for (t2=1; t2<=tfinal; t2=t2+1)

Para escribir el programa debemos tener en cuenta como ordenar las distintas funciones o

subprogramas. Debemos tener en cuenta que una función que es llamada por otra la debe anteceder. En este ejemplo main llama a Juego1, Juego2 y Juego3 y estas tres a Tiempo. Por lo tanto se deben escribir en el siguiente orden:

Tiempo Juego1 Juego2 Juego3 Main Además se debe considerar si existe una variable global que en este ejemplo no hay.

Page 33: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

. 31

Prof. De Marinis

//Juego de luces #include <pic16f873A.h> /////////////////////////////////////// void Tiempo(int tfinal) {int t1,t2; for (t1=0;t1<tfinal;t1=t1+1) { for (t2=0;t2<tfinal;t2=t2+1){} } } /////////////////////////////////////// void Juego1() { PORTB=0b00000001; Tiempo(200); PORTB=0b00000010; Tiempo(200); PORTB=0b00000100; Tiempo(200); PORTB=0b00001000; Tiempo(200); PORTB=0b00010000; Tiempo(200); PORTB=0b00100000; Tiempo(200); PORTB=0b01000000; Tiempo(200); PORTB=0b10000000; Tiempo(200); PORTB=0b00000000; } /////////////////////////////////////// void Juego2() { PORTB=0b10000000; Tiempo(200); PORTB=0b01000000; Tiempo(200); PORTB=0b00100000; Tiempo(200); PORTB=0b00010000; Tiempo(200); PORTB=0b00001000; Tiempo(200);

PORTB=0b00000100; Tiempo(200); PORTB=0b00000010; Tiempo(200); PORTB=0b00000001; Tiempo(200); PORTB=0b00000000; } /////////////////////////////////////// void Juego3() { int n; for (n=1;n<=3;n=n+1) { PORTB=0b10000001; Tiempo(100); PORTB=0b01000010; Tiempo(100); PORTB=0b00100100; Tiempo(100); PORTB=0b00011000; Tiempo(100); } PORTB=0b00000000; } /////////////////////////////////////// void main() { ADCON1=0x06; TRISA=0b11111111; TRISB=0b00000000; TRISC=0b11111111; PORTB=0b00000000; while (1==1) { if (RA0==1) { Juego1();} if (RA1==1) { Juego2();} if (RA2==1) { Juego3();} } } /* Fin del programa */

Programa en C

Page 34: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Capítulo VI

Compilación en MPLAB

32

Capitulo VI Compilación en MPLAB

Introducción En este capítulo se desarrollará los pasos para compilar el programa usando el programa

MPLAB de Microchip.

Un compilador es un programa que traduce un programa escrito en un lenguaje de programación a otro lenguaje diferente. Usualmente el segundo lenguaje es lenguaje de máquina. Este proceso de traducción se conoce como compilación.

El MPLAB puede traducir el programa desde lenguaje ASSEMBLER o a C.

Pasos para realizar la compilación

1. Abrir el MPLAB : Activar este icono

2. Se desplegaran las siguientes pantallas:

3. Desplegar File:

Activar New

Se abre la siguiente ventana

Page 35: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

. 33

Prof. De Marinis

4. Guardar el archivo: desplegar nuevamente File

Dentro de File activar Save AS… y se desplegará la siguiente ventana

Es conveniente generar una carpeta nueva donde generaremos todo el

proyecto

Una vez creada la carpeta abrirla y

guardar el archivo con extensión “.c”

Guardar

Page 36: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Capítulo VI

Compilación en MPLAB

34

5. Escribir el programa: En la ventana se escribe el programa. Para mejor comodidad ampliarla.

6. Generar el proyecto: Una ves escrito el programa, generar el proyecto.

Al guardar el título de la ventana cambia

Desplegar Project

Activar Project Wizard…

Al activar Project Wizard… se abre una ventana de

Bienvenida

Page 37: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

. 35

Prof. De Marinis

En la ventana de bienvenida activar Siguiente >

Así se abre la ventana Step One (paso uno) Es para seleccionar el tipo de microcontrolador que

se va a utilizar

Hacer clic aquí para desplegar todos los tipos de dispositivos

Seleccionar el Pic que se usará y activar Siguiente >

Así se abre la ventana Step

Two (paso dos)

Es para seleccionar el

tipo de compilador

Seleccionar la opción HI-TECH

Universal ToolSuite

Así se selecciona el compilador de

lenguaje C

Activar Siguiente >

Así se abre la ventana Step Three (paso tres)

Es para crear el proyecto en sí.

Activar Browse…

Page 38: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Capítulo VI

Compilación en MPLAB

36

Al activar Browse… se abre

otra ventana

Buscar la carpeta creada en el punto

4 y abrirla.

Escribir el nombre del archivo creado en el punto 4, pero

con extensión .mcp y guardar

Al guardar se retorna a la ventana Step Three. Y activar Siguiente >

Seleccionar el archivo con extensión .c

Y activar Add>>

Así se abre la ventana Step Four (paso cuatro) Es para adicionar los archivos al proyecto.

Al activar Siguiente > Aparece la ventana final.

Activar Finalizar

Page 39: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Lenguajes Electrónicos 5to

. 37

Prof. De Marinis

A partir de aquí se deberán corregir los errores si así sucediesen. El programa no tiene errores si aparece la leyenda

********** Build successful! **********

Abrir archivo

Desplegar Project

Hacer clic en Build para compilar el programa.

SUERTE

Page 40: lenguajes electr nicos 5...Capítulo V Programación en C aplicado a PIC ... Etapa de Solución general: Escribir la serie de pasos que sean necesarios para dar solución al problema

Material Consultado

• Data Sheet PIC16F87XA Microchip

• Data Sheet PIC16F87X Microchip

• Data Sheet PIC16F627A/628A /648A Microchip

• La Revista. Informática.com http://www.larevistainformatica.com

• Introducción a los microcontroladores, José Adolfo González V., McGraw Hill

• Microcontroladores PIC, Tavernier, Editorial Paraninfo

• Microcontroladores PIC, La solución en un solo chip, Angulo y otros, Editorial Paraninfo

• Microcontroladores PIC, Diseño de aplicaciones, Angulo y otros, McGraw Hill

• Cursos sobre Microcontroladores PIC, Niveles Básico y Avanzado, Tekcien Ltda.

• Embedded Control Handbook, Microchip

• MPASM assembler. User’s Guide, Microchip

• MPLAB IDE User’s Guide, Microchip.

• www.microchip.com