Curso de Robotica y Otras Aplicaciones en El Aula de Tecnologia

November 18, 2017 | Author: Larry Antorveza Diaz | Category: Microcontroller, Microprocessor, Computer Engineering, Computing, Technology
Share Embed Donate


Short Description

Download Curso de Robotica y Otras Aplicaciones en El Aula de Tecnologia...

Description

Curso de Robótica y aplicaciones a el Aula de Tecnología

Curso de Robótica y otras aplicaciones en el Aula de Tecnología

Pedro Alonso Sanz IES Joan Miró Enero 2009

IES Joan Miró

Página 1

Curso de Robótica y otras aplicaciones en el Aula de Tecnología 1.- MANEJO DEL LABORATORIO ELECTRÓNICO VIRTUAL “PROTEUS”. ............................ 4 1.1.- ISIS (CAPTURA Y SIMULACIÓN DE CIRCUITOS ELECTRÓNICOS). ............................................. 4 1.1.1.- Introducción. ............................................................................................................................. 4 1.1.2.- Captura Electrónica: Entorno Gráfico (ISIS) .............................................................................. 5 1.1.3.- Depuración de programas. ....................................................................................................... 9 1.2.- ARES (DISEÑO DE PLACAS). .............................................................................................. 17 1.2.1.- Diseño de un esquema con ISIS. .............................................................................................. 17 1.2.2.- Generación del listado de conexiones “Netlis to Ares”. .......................................................... 21 1.2.2.1.- Entorno de Trabajo .......................................................................................................................... 22

1.2.3.- Creación del tamaño de la placa de PCB. ............................................................................... 22 1.2.4.- Posicionamiento de los componentes dentro de la placa. ...................................................... 25 1.2.4.1.- Posicionamiento Automático. ......................................................................................................... 25 1.2.4.2.- Posicionamiento Manual. ................................................................................................................ 26

1.2.5.- Rutado de la pistas. ................................................................................................................ 27 1.2.5.1.- Rutado Automático. ........................................................................................................................ 28 1.2.5.2.- Rutado manual. ............................................................................................................................... 29

1.3.- CREACIÓN DE SÍMBOLOS EN ISIS Y ENCAPSULADOS EN ARES. .......................................... 34 1.3.1.- Creación de una biblioteca de encapsulados en ARES. ........................................................... 34 1.3.2.- Creación de un encapsulado en ARES. ................................................................................... 36 1.3.3.- Creación de una biblioteca de símbolos en ISIS. ..................................................................... 39 1.3.4.- Creación de un símbolo en ISIS. ............................................................................................. 41 2.- PRINCIPIOS DE FUNCIONAMIENTO DE UN MICROCONTROLADOR PIC. ...................... 47 2.1.- DIAGRAMA EN BLOQUES. ................................................................................................... 49 2.2.- M APA DE MEMORIA. ........................................................................................................... 50 2.2.1.- Memoria de Programa. .......................................................................................................... 50 2.2.2.- Memoria de Datos. ................................................................................................................. 50 3.- INICIACIÓN A LA PROGRAMACIÓN EN C EN UC PIC. ........................................................ 51 3.1.- COMPILADOR CCS................................................................................................................ 51 3.1.1.- Introducción. ........................................................................................................................... 51 3.1.2.- Estructura de un programa. ................................................................................................... 51 3.1.3.- Constantes. ............................................................................................................................. 53 3.1.4.- Tipo de variables. .................................................................................................................... 54 3.1.5.- Operadores. ............................................................................................................................ 55 a) Asignación. ................................................................................................................................................ 55 b) Aritméticos. ............................................................................................................................................... 55 c) Relacionales. .............................................................................................................................................. 55 d) Lógicos. ...................................................................................................................................................... 55 e) De Bits. ...................................................................................................................................................... 56 f) Punteros. .................................................................................................................................................... 56

3.1.6.- Funciones. ............................................................................................................................... 56 3.2.- M ANEJO DE LAS DECLARACIONES DE CONTROL. ................................................................ 59 3.2.1.- If-Else. .................................................................................................................................. 60 3.2.2.- Switch-Case. ....................................................................................................................... 63 3.2.3.- For. ........................................................................................................................................ 66 3.2.4.- While. .................................................................................................................................... 70 3.2.5.- Do-While. ............................................................................................................................. 72 3.3.- CREACIÓN DE FUNCIONES. ................................................................................................ 74 3.4.- M ANEJO Y CREACIÓN DE DRIVER O LIBRERÍAS..................................................................... 80

IES Joan Miró

Página 2

Curso de Robótica y otras aplicaciones en el Aula de Tecnología 4.- EJEMPLOS PRÁCTICOS. ......................................................................................................... 82 4.1.- INTERFACE OPTOACOPLADA ENTRE DISPOSITIVOS DIGITALES Y ANALÓGICOS ...................... 82 4.1.1.- Control con Relés. ................................................................................................................... 82 4.1.2.- Control con Optotransistores. ................................................................................................. 84 4.1.3.- Control con Optotriac. ............................................................................................................ 86 4.2.- CONTROL DE UNA PANTALLA LCD. .................................................................................... 88 4.2.1.- LCD_ejemplo1.c ...................................................................................................................... 91 4.2.2.- LCD_ejemplo2.c ...................................................................................................................... 92 4.2.3.- LCD_ejemplo3.c ...................................................................................................................... 93 4.2.4.- LCD_ejemplo4.c ...................................................................................................................... 94 4.2.5.- LCD_ejemplo5.c ...................................................................................................................... 95 4.2.6.- LCD_ejemplo6.c ...................................................................................................................... 96 4.2.7.- LCD_ejemplo7.c ...................................................................................................................... 97 4.3.- DIGITALIZACIÓN DE UNA SEÑAL ANALÓGICA CON EL SISTEMA DE ADQUISICIÓN DE DATOS...... 99 4.3.1.- Conversión_A/D_D/A.c ......................................................................................................... 101 4.3.2.- Conversión_A-D1.c................................................................................................................ 104 4.3.3.- Conversión_A-D2.c ............................................................................................................... 106 4.3.4.- Conversión_A-D3.c................................................................................................................ 107 4.4.- CONTROL DE VELOCIDAD Y SENTIDO DE GIRO DE MOTORES DE CORRIENTE CONTINUA. ...... 109 4.4.1.- PWM1.c ................................................................................................................................ 110 4.4.2.- PWM2.c ................................................................................................................................ 111 4.4.3.- PWM3.c ................................................................................................................................ 115 4.5.- CONTROL DE UN SERVO DE POSICIÓN. ............................................................................. 117 4.5.1.- Control_2_Servos_Posición.c ................................................................................................ 118 4.6.- DISEÑO DE MANDOS TRANSMISORES Y RECEPTORES DE RADIO FRECUENCIA. ................... 123 4.6.1.- Introducción. ......................................................................................................................... 123 4.6.1.1.- Transmisión serie asíncrona. ......................................................................................................... 123 4.6.1.2.- Modulación en AM. ....................................................................................................................... 124 4.6.1.3.- Protocolo de Comunicaciones entre el Mando y el Receptor. ...................................................... 124

4.6.2.- Ejemplo 1 (Transmisión Simple). ........................................................................................... 126 4.6.3.- Ejemplo2 (Transmisión Compleja). ....................................................................................... 131 4.6.4.- Apertura de una puerta. ....................................................................................................... 140 4.7.- DISEÑO Y CREACIÓN DE UN ROBOT RASTREADOR Y COCHE TELEDIRIGIDO. ....................... 146

IES Joan Miró

Página 3

Curso de Robótica y otras aplicaciones en el Aula de Tecnología 1.- Manejo del laboratorio electrónico virtual “Proteus”. 1.1.- ISIS (Captura y Simulación de circuitos electrónicos). 1.1.1.- Introducción. El laboratorio virtual electrónico PROTEUS VSM de LABCENTER ELECTRONICS, nos permite simular circuitos electrónicos analógicos/ digitales y microprocesados. Es capaz de realizar simultáneamente una simulación hardware y software (Lenguaje de bajo y alto nivel Ensamblador y C respectivamente) en un mismo entorno gráfico. También enlaza con una herramienta que nos permite desarrollar las placas para realizar los prototipos. Para ello suministra tres potentes herramientas:   

ISIS (Diseño Gráfico) VSM(Virtual System Modelling) Simulación de Componentes. ARES (Diseño de Placas).

Las herramientas tradicionales de diseño seguían el siguiente proceso: Diseño esquemático del prototipo

Diseño de la Placa

Fabricación de la Placa

Creación del Prototipo

Desarrollo del software

Pruebas del Prototipo

En caso de error en el prototipo se tiene que repetir el proceso

Con las herramientas de diseño tradicionales, el desarrollo del software y la comprobación del prototipo, no puede realizarse hasta que este no se desarrolla. Esto puede suponer semanas de retraso. Si se localiza un error hardware, la totalidad del proceso se debe repetir.

Diseño esquemático del prototipo

Desarrollo del software

Simulación del Circuito

Diseño de la Placa

Fabricación de la Placa

Fabricación del Prototipo

En caso de error se depura hasta obtener los resultados adecuados

Usando Proteus VSM, el desarrollo del software puede comenzar tan pronto como el diseño esquemático este acabado y la combinación del hardware y el software nos permite testear el prototipo y ver si funciona.

IES Joan Miró

Página 4

Curso de Robótica y otras aplicaciones en el Aula de Tecnología 1.1.2.- Captura Electrónica: Entorno Gráfico (ISIS) Isis es un programa de diseño electrónico que permite realizar esquemas que pueden simularse en el entorno VMS y/o pasarlos a un circuito impreso a través del entorno de ARES. Posee una colección de bibliotecas de componentes. Permite crear nuevos componentes y su modelización para la simulación. Sin entrar profundamente en este entorno (Requeriría un libro solo para el entorno de ISIS), se va a explicar cómo dibujar cualquier circuito electrónico. El programa de ISIS posee un entorno de trabajo formado por una ventana de trabajo y barras de herramientas.

Comandos de Fichero e Impresión

Comandos de Edición

Comandos de Visualización

Herramientas de Diseño

Barra de Menús

Ventana de Edición Comandos de rotación y reflexión Ventana de componentes y Biblioteca

Ventana de Trabajo

Modos de Trabajo

Herramientas de Diseño Electrónico Comandos de dibujo Barra de estado Barra de simulación

Para dibujar el circuito electrónico se deben primero seleccionar el modo componentes “Component.” y seleccionar el botón “P” de búsqueda de componentes “Pick Devices” en las bibliotecas.

Component. Pick Devices

IES Joan Miró

Página 5

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Se abre un menú asociado a la búsqueda de componentes. Se busca el componente de dos maneras diferentes por categorías o poniendo el nombre o palabra clave en la ventana Keywords (Ejemplo: DAC0808_JOAN)

Permite localiza los componentes por nombre

Represente el símbolo del Componente en ISIS y si está simulado

Permite localiza los componentes por categoría, clase y fabricante

Muestra el resultado de la búsqueda de los componentes a que bibliotecas pertenecen y una descripción breve de cada uno de ellos

Represente el encapsulado del Componente en ARES es decir su encapsulado

Ventana de Edición

Al localizar el componente adecuado se realiza una doble pulsación y aparecerá en la columna de dispositivos “DEVICE”. Se puede realizar esta acción tantas veces como componentes se quiera incorporar al esquema. Una vez finalizado el proceso se cierra la ventana de Comandos de Edición búsqueda de componentes. Antes de situar los componentes en la “Ventana de trabajo” se pude comprobar la orientación en la “Ventana de Edición” y rotarlos con los “Comandos de Edición”. Columna de Dispositivos DEVICE Una vez seleccionado el componente en la “Columna de Dispositivos” se pincha sobre la “Ventana de Trabajo” y este se posiciona. Si pulsamos más veces sobre dicha ventana se insertaran componentes con una referencia automática. (Tiene que estar activa para ello seleccionar TOOLS Real Time Anotation).

Si pasamos el ratón por encima del componente, aparece una “X” en la patilla del componente, esto nos indica que podemos tirar hilo hasta la siguiente pata de otro o el mismo componente.

IES Joan Miró

Recorrido del Ratón

Página 6

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Una vez situado los componentes en la “Ventana de Trabajo” se pueden mover, rotar, copiar, borrar. Para ello se seleccionan con el botón derecho del ratón (Se ponen en rojo) y se seleccionan los “Comandos de Edición” en “Herramientas de Grupo” ó “Comandos de rotación y reflexión “ para un solo elemento.

Rotar un solo componente

Rotar un conjunto de componentes

Cada componente electrónico se puede editar, se selecciona con el botón derecho del ratón (Se pone en rojo) y con el botón izquierdo se abre. Se puede cambiar su referencia y valor

Se puede ocultar referencias, Valores, etc.

Se puede cambiar de encapsulado

Se puede excluir de la simulación

IES Joan Miró

Se puede excluir del diseño de la placa

Página 7

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Para la unión de diferentes componentes “Sin Cables” se pueden utilizar el Icono “Inter-sheetTerminal” de la caja de Herramientas de Diseño. Este abrirá una ventana donde aparecen los diferentes terminales.

Terminal por defecto Terminal de entrada Terminal de salida Terminal Bidireccional Terminal de Alimentación Terminal de masa Terminal bus

Terminal de entrada Terminal de Alimentación

Terminal de masa

Terminal de salida

Si queremos unir cables en forma de bus se utiliza el Icono Diseño y etiquetarlos con el icono del Modo de Trabajo Etiquetado de Cable

IES Joan Miró

de la caja de Herramientas de . Etiquetado de bus

Página 8

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Se pueden introducir Generadores de señal, Voltímetros, Osciloscopios, etc. Utilizando los iconos de las Herramientas de Diseño.

Inter-sheet-Terminal (Terminales)

Device Pin (Patillas de Componentes)

Simulation Graph (Simulación Gráfica)

Tape Recorder (Grabadora)

Generator (Generador)

Voltaje Probe (Sondas de Tensión)

Current Probe (Sondas de Corriente)

Virtual Instruments (Instrumentos Virtuales)

Osciloscopio

Voltímetro (CA)

Generador de Tensión Sinusoidal

1.1.3.- Depuración de programas. Una de las características importantes del PROTEUS VSM es la capacidad de depurar programas fuentes de distintos lenguajes de programación (Lenguajes ensamblador, C , Basic, etc). La herramienta que se utiliza está en la barra de tareas llamada “Source”

IES Joan Miró

Página 9

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Con la opción añadir o remover ficheros fuentes “Add/Remove Source files” introducimos los fichero fuentes que queremos añadir a nuestro hardware y elegimos la herramienta de compilación (Programa que traduce un lenguaje de programación a código Binario)

Ficheros Fuente

Cambiar el Fichero Fuente

Herramienta de Compilación

Nuevos Ficheros Fuente

Quitar Ficheros Fuente

Con la opción “Define Code Generation Tools” podemos introducir nuevos compiladores y depuradores de programas.

Se introduce el Compilador C de CCSC para uC PIC dentro del Proteus

Generador de Ficheros

Se introduce el Depurador de Programas en el Proteus

IES Joan Miró

Página 10

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Con la opción “Setup External Text Editor” podemos elegir el Editor de Texto. Editor de texto del Compilador CCSC

Editor de texto del Proteus

La opción Build All compila el programa fuente ejecuta el programa que traduce un lenguaje de programación a código Binario. Si hemos utilizado el editor de texto del Compilador CCSC este nos permite depurar el programa y ver los errores. Abrimos el Fichero “Dec_Hex_Bin.c” y ejecutamos el Icono “Compile” Compila un fichero no un proyecto

Al compilar se genera varios ficheros (ERR, HEX, SYM, LST, COF, PJT, TREE, STA) . El fichero con “Dec_Hex_Bin.COF”, nos permite depurar el Programa en el Proteus y el fichero “Dec_Hex_Bin.HEX” es el código binario que se introduce de forma real al uC PIC. IES Joan Miró

Página 11

Curso de Robótica y otras aplicaciones en el Aula de Tecnología La forma de introducir el fichero “Dec_Hex_Bin.COF” en un microcontrolador uC PIC es seleccionar lo con el botón derecho del ratón (El uC PIC se pondrá en color rojo) y pulsar el botón izquierdo. Se abrirá una ventana contextual e introduciremos el fichero.COF.

Pulsar con el botón derecho del ratón y después con el botón izquierdo

Pulsar con el botón Izquierdo del ratón y buscar el fichero.COF deseado

La frecuencia del reloj se fija aquí independientemente del hardware que se utilice externamente (Cristal de Cuarzo)

Una vez cargado del microcontrolador con el programa fuente “ Dec_Hex_Bin.COF” , se puede proceder a la simulación del circuito empleando la Barra de Simulación.

Marcha

IES Joan Miró

Paso a Paso

Pausa

Stop

Página 12

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Con la opción Marcha la simulación se inicia (el botón se vuelve verde) y funciona en modo continuo. La simulación no es en tiempo real. Con la opción Stop la simulación se para. Con la opción Paso a Paso permite trabajar en tramos de tiempo predefinidos, permitiendo utilizar herramientas de depuración. Esta opción está asociada a la configuración de Animación, que está en la Barra de Menús en SYSTEM Set Animation Options.

Número de veces que la pantalla de ISIS se refresca en 1 Segundo

Tiempo de simulación por cada uno de los Frames (Suele ser el valor inverso a Frames per Second)

Se muestra las corrientes y tensiones de las puntas de prueba que tengamos en el circuito

Se muestra en las patillas de circuitos de Lógica Digital unos cuadrito de color rojo “1” o azul “0”

Los cables de los esquemas toman diferentes colores en función de la intensidad que pasen por ellos.

Incremento de tiempo que se desea cada vez que se pulsa la tecla Paso a Paso

Si los valores en la simulación son inferiores a estos valores, no se visualizan los efectos de Animation Options

Se muestran en los cables de los esquemas el sentido de las Intensidades.

La opción SPICE Options define las características de simulación del sistema. Son parámetros que podemos manipular para obtener más precisión en la simulación (No se aconseja tocar si se desconocen) Si disminuimos los parámetros RELTOL, GMIN y PIVTOL el sistema converge antes, pero es menos preciso. Aquí , ya se puede simular (Animar) un sistema con microcontroladores .Lo más interesante de una simulación es la utilización de las herramientas de depuración que contiene este sistema de desarrollo. A estas herramientas se accede pulsando primero Pausa de la Barra de Tareas y después Debug de la Barra de Menús.

IES Joan Miró

Página 13

Curso de Robótica y otras aplicaciones en el Aula de Tecnología

Barra de Simulación

Ejecución de un programa sin puntos de ruptura.

Ejecución de un programa hasta un tiempo determinado

Herramientas de Ejecución de un programa Paso a Paso

Visualización de las variables creadas por el usuario y las propias del microcontrolador, con la simulación en marcha.

Visualización del programa fuente para poder utilizar las herramientas de ejecución paso a paso.

Visualización de las variables del sistema mientras se están utilizando las herramientas de ejecución paso a paso.

Visualización de los registros del uC utilizando las herramientas de ejecución paso a paso.

Visualización de la memoria de datos del uC utilizando las herramientas de ejecución paso a paso.

Visualización de la memoria de Programa del uC utilizando las herramientas de ejecución paso a paso.

Visualización de la memoria Pila del uC utilizando las herramientas de ejecución paso a paso.

Visualización de la memoria EPROM del uC utilizando las herramientas de ejecución paso a paso.

La ventana Watch Window es la más versátil se pueden añadir variables propias y del uC y visualizarlas en plena simulación.

IES Joan Miró

Página 14

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Si se pincha con el botón derecho del ratón sobre la ventana Watch Window aparece un menú contextual siguiente: Permite añadir variables del uC PIC

Permite añadir variables propias

Permite poner puntos de ruptura al programa en función de determinadas variables

Permite seleccionar todas las variables

Buscar variables

Indica el Tipo de variables (Tiene que estar seleccionada la variable)

Muestra el formato de la variables Binario, Decimal, Hexadecimal, etc. (Tiene que estar seleccionada la variable)

IES Joan Miró

Página 15

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Si queremos ejecutar un programa en modo depuración, tenemos que realizar los siguientes pasos: 1.- Crear una carpeta para contener el hardware y el software “Representación en Binario, BCD, Hexadecimal” 2.- Crear un Sistema Microprocesado con PIC en la ventana de trabajo de ISIS 3.- Generamos un programa en C “Dec_Hex_Bin.c” desde Source ADD/Remove Source filesNew. 4.- Compilamos el Programa desde CCSC. (Se genera el fichero. COF “Dec_Hex_Bin.COF”) 5.- Introducimos el fichero.COF “Dec_Hex_Bin.COF” dentro del uC PIC. 6.- Ejecutamos Paso a Paso ó Pause de la Barra de Simulación. 7.- Pinchamos Debug y abrimos las ventanas siguientes:    

Watch Windows PIC CPU Source Code - U1 PIC CPU Variables - U1 PIC CPU Registers - U1

8.- Ejecutamos paso a paso el programa desde PIC CPU Source Code - U1 utilizando las Herramientas de Ejecución y visualizamos como varían las variables y el hardware. Es conveniente poner puntos de ruptura y ejecutar de golpe el programa hasta dicho punto.

El triangulo indica la instrucción que se va a ejecutar

IES Joan Miró

Página 16

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Simulación en modo continuo, no permite ver las ventanas de depuración a excepción de Watch Window

Permite ejecutar una instrucción. Si es una subrutina o una función entra dentro de ella.

Habilita o deshabilita los punto de ruptura.

Ejecuta una instrucción, subrutina ó función de golpe

Trabaja de modo continuo hasta que encuentra un retorno de cualquier subrutina o función y sale de ella.

Trabaja de modo continuo hasta que encuentra un punto de ruptura.

1.2.- Ares (Diseño de Placas). En este manual de ARES se mostrará los pasos básicos para realizar el rutado de una placa PCB, no se pretende enseñar de forma precisa el manejo del programa pero sí las funciones principales del mismo. Pasos a seguir:

1.2.1.- Diseño de un esquema con ISIS. Buscar componentes que tengan el encapsulado o huella (PCB)

Componente a buscar

Encapsulado(PCB)

IES Joan Miró

Página 17

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Dibujamos el esquema.

Antes de realizar la placa comprobar si algún componente tiene pines o patillas ocultas. Los Circuitos Integrados ocultan los pines de masa “GND, VSS” y alimentación “VCC , VDD”.

Editamos el Componente

Si está la pestaña Hidden Pins indica que existen patillas ocultas

IES Joan Miró

Página 18

Curso de Robótica y otras aplicaciones en el Aula de Tecnología

Vemos que patillas están ocultas pinchando sobre las pestana “Hidden Pin “

Patillas ocultas

Para que estas patillas “GND ó VCC” se conecten en un circuito real, se tienen que etiquetar los cables donde queremos unir. Seleccionamos de la barra Modos de Trabajo el icono etiquetado de cable “Wire Label” Etiquetado de Cable

Wire Label

Modos de Trabajo

Buscamos una Masa ó Tierra “GROUND”. Seleccionamos el cable que está unido a ella con el botón derecho del ratón (Se pone rojo) y pulsamos el botón izquierdo. Se abre un menú contextual y escribimos GND. E Buscamos una masa GND y seleccionamos el cable con el botón derecho del ratón.

Se abre el menú contextual y escribimos GND.

IES Joan Miró

Página 19

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Buscamos el positivo de la “Pila de 5V”. Seleccionamos el cable que está unido a ella con el botón derecho del ratón (Se pone rojo) y pulsamos el botón izquierdo. Se abre un menú contextual y escribimos VCC. Buscamos el positivo de la pila de 5V y seleccionamos el cable con el botón derecho del ratón.

Se abre el menú contextual y escribimos VCC.

El resultado es el siguiente:

Nota: Cuando etiquetamos con VCC el cable la simulación no funciona

Todos los componentes tienen que tener nombre (Ejemplo: R1, E2, etc ), si no lo tuvieran no aparecerían en el diseño de la placa.

IES Joan Miró

Página 20

Curso de Robótica y otras aplicaciones en el Aula de Tecnología

1.2.2.- Generación del listado de conexiones “Netlis to Ares”. Pulsamos el icono de Herramientas de Diseño “ARES” Herramientas de Diseño

Herramienta de diseño de placas PCB

ARES Si algún componente no tuviera máscara te pediría que la insertaras, aparece un menú contextual: Dentro de una Biblioteca de Seleccionamos el Encapsulado

componentes

Componente sin encapsulado

Pulsamos con el botón izquierdo del ratón y aparecerá aquí

Después de asignar las máscaras a los componentes que no las tenían aparece la Aplicación ARES

Aparecen todos los componentes que tienen encapsulado para el diseño de placas

IES Joan Miró

Página 21

Curso de Robótica y otras aplicaciones en el Aula de Tecnología 1.2.2.1.- Entorno de Trabajo Comandos de archivos y de Impresión

Comandos de Visualización

File/Print Commands

Display Commands

Ventana de Edición

Barra de Menús

Comandos de Edición

Herramientas de Diseño

Editing Commands

Layout Tools

Herramientas de Posicionamiento y Rutado

Placing & Routing Herramientas de emplazamientos de PAD

Pad Placement Herramientas de diseño gráfico

2D Graphics

Ventana de Trabajo

Selector de Objetos

Object Selector

Selector de Caras

Herramientas de Rotación y Reflexión

Layer Selector

Rotation & Reflection

Barra de Estado

Test de errores

1.2.3.- Creación del tamaño de la placa de PCB. Una vez situados los componentes en el Selector de objetos “Object Selector” con las Herramientas de diseño gráfico “2D Graphics” seleccionamos la cuadrado “2D Graphics box” Cuadrado

2D Graphics box Herramientas de diseño gráfico

2D Graphics

IES Joan Miró

Página 22

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Con el Selector de Caras “Layer Selector” seleccionamos borde de placa “Board Edge”

Borde de placa

Selector de Caras

Board Edge

Layer Selector

Con el ratón nos situamos en la Ventana de Trabajo y dibujamos el tamaño de la placa. Ponemos las cotas y los agujeros para sujetar la placa a un soporte.

Borde de placa

Board Edge Cotas Agujeros para sujetar la placa a un soporte

Para poner los agujeros para sujetar la placa a un soporte buscamos en Herramientas de diseño gráfico “2D Graphics” seleccionamos el circulo “2D Graphics circle”

Cuadrado

2D Graphics circle Herramientas de diseño gráfico

2D Graphics

Con el Selector de Caras “Layer Selector” seleccionamos borde de placa “Board Edge”

Borde de placa

Board Edge

Selector de Caras

Layer Selector

Con el ratón nos situamos en la Ventana de Trabajo y dibujamos el circulo. IES Joan Miró

Página 23

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Para poner las Cotas, elegiremos si queremos trabajar en pulgadas o en milímetros. Si queremos milímetros vamos a los Comandos de Visualización y pinchamos sobre el icono “Select Metric/ Imperial Coordinates” Comandos de Visualización

Display Commands

Milímetros/Pulgadas

Select Metric/ Imperial Coordinates

Se visualiza en la parte baja derecha de la Ventana de trabajo.

Coordenadas X/Y en mm

Estas coordenadas X/Y son con respecto a el punto de origen que está en el centro de la Ventana de trabajo Si queremos resolución a la hora de dibujar (Pistas, Cotas, Tamaños de Placa, etc.), tenemos que cambiarla, para ello vamos a la Barra de Menús y seleccionamos VIEW y cambiamos dicha resolución. Una vez realizado los ajustes adecuados, procedemos a poner las cotas. Para ello, buscamos en Herramientas de diseño gráfico “2D Graphics” y seleccionamos Cotas “Dimension object placement”

Herramientas de diseño gráfico

2D Graphics Cotas

Dinension object placement

Con el Selector de Caras “Layer Selector” seleccionamos borde de placa “Board Edge”

Borde de placa

Board Edge

Selector de Caras

Layer Selector

Con el ratón nos situamos en la Ventana de Trabajo y dibujamos las Cotas.

IES Joan Miró

Página 24

Curso de Robótica y otras aplicaciones en el Aula de Tecnología 1.2.4.- Posicionamiento de los componentes dentro de la placa. Existen dos posibilidades a la hora de situar los componentes.

1.2.4.1.- Posicionamiento Automático. Seleccionar en las Herramientas de Diseño “Layout Tools” el icono Posicionamiento Automático dentro de la Placa “Autoplace the components onto the board”.

Herramientas de Diseño

Layout Tools

Posicionamiento Automático dentro de la Placa

Autoplace the components onto the board

Se abre este menú contextual marcamos las reglas de diseño y seleccionamos los componentes que queremos posicionar de forma automática. Reglas de Diseño y Peso

Marcamos que componentes queremos posicionar de forma automática

Restaurar valores

No obstante se puede posicionar determinados componentes de forma manual y el resto de forma automática.

IES Joan Miró

Página 25

Curso de Robótica y otras aplicaciones en el Aula de Tecnología 1.2.4.2.- Posicionamiento Manual. Seleccionamos el icono de Edición y situación de componentes “Component placement and editing” de Herramientas de Posicionamiento y Rutado “Placing & Routing” y aparecen los componentes de diseño de la placa en ISIS. Edición y situación de componentes

Component placement and editing

Herramientas de Posicionamiento y Rutado

Placing & Routing

Componentes de diseño de la placa en ISIS

Selector de Objetos

Object Selector

Situamos los componentes en la placa, para ello posicionamos el ratón sobre la placa y pulsamos el botón izquierdo del ratón y el componente que este marcado en azul en el Selector de Objetos “Object Selector” se insertara en la placa.

Uniones entre componentes

Netlis

IES Joan Miró

Página 26

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Los componentes puestos en la placa se pueden mover, cortar, copiar, etc con los Comandos de Edición (Conjunto de componentes) y las Herramientas de Rotación y Reflexión (Un solo componente). Se seleccionan el ó los componentes con el botón derecho del ratón (Se ponen en rojo) y después se selecciona la herramienta que queremos utilizar (Rotar, mover, etc). Rotación a Derecha de un componente (90º) Rotación a Izquierda de un componente (-90º)

Herramientas de Rotación y Reflexión

Rotation & Reflection

Reflexión a Derechas de un componente Reflexión a Izquierda de un componente

Comandos de Edición

Deshacer o rehacer operaciones realizadas

Editing Commands

Copiar un conjunto de componente

Borrar un conjunto de componente

Mover un conjunto de componente

Rotación de un conjunto de componente

1.2.5.- Rutado de la pistas. Existen dos posibilidades a la hora de realizar el ruteado. Pero antes de rutar, podemos marcar las estrategias de diseño. Para realizarlo nos vamos a la Barra de Menú y seleccionamos System Set_Strategies Marcamos las estrategias para pistas de potencia y para pistas de señal.

Pistas de Potencia Tipo de prioridad Optimizar las esquinas

Tamaño de las Pistas

Tácticas de rutado

Tamaño de las Vías

Tipo de Vías Normales Ciegas Superiores Ciegas Inferiores Ocultas

Tamaño de las Vías Tipo cuello Pistas Horizontales y Verticales. Se trazan por las Capas Superiores

IES Joan Miró

Reglas de diseño Distancia mínima entre PADs . Distancia mínima entre PAD y Pista . Distancia mínima entre Pista . Distancia mínima a Gráficos. Distancia mínima al Borde de la Placa o Ranuras.

Página 27

Curso de Robótica y otras aplicaciones en el Aula de Tecnología

Pistas de Señal

Pistas Horizontales y Verticales. Se trazan por las Capas Inferiores

1.2.5.1.- Rutado Automático. Seleccionar en las Herramientas de Diseño “Layout Tools” el icono Diseño automático de pistas “Autorouter the conections specified by de ratsnest”.

Herramientas de Diseño

Layout Tools

Diseño automático de pistas especificadas por las conexiones

Autorouter the conections specified by de ratsnest

Se abre este menú contextual marcamos las reglas de diseño y seleccionamos los componentes que queremos posicionar de forma automática.

Son las estrategias de la Barra de Menú seleccionando System y Set_Strategies

Opciones de Rutado Permiso de rutado Permiso de Ordenamiento Protección manual de las pistas trazadas manualmente

IES Joan Miró

Página 28

Curso de Robótica y otras aplicaciones en el Aula de Tecnología El diseño quedaría:

1.2.5.2.- Rutado manual. Para el rutado manual tenemos las Herramientas de Posicionamiento y Rutado Placing & Routing

Edición y situación de componentes

Component placement and editing (Componentes del Diseño)

Edición y situación de las mascaras

Package placement and editing (Nos permite editar los encapsulados y añadir otros tipos de encapsulados que no son del proyecto). (Abre el director de Biblioteca de encapsulados)

Herramientas de Posicionamiento

Placing & Routing

Selecciona el Tipo de Pistas

Track placement and editing

Selecciona el Tipo de Vías

Via placement and editing

Planos de Masa o Alimentación

Zone placement and editing

IES Joan Miró

Página 29

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Si queremos tirar pistas por la cara de abajo de la placa procedemos de la siguiente manera: Seleccionamos el Tipo de Pistas “Track placement and editing”

Selecciona el Tipo de Pistas

Track placement and editing Herramientas de Posicionamiento

Placing & Routing

Con el Selector de Caras “Layer Selector” seleccionamos pistas de tipo Bottom Cooper

Tipo de Pista

Selector de Caras

Botton Cooper

Layer Selector

Con el ratón nos situamos en la Ventana de Trabajo y dibujamos la pista de una patilla a otra siguiendo las uniones entre componentes “Netlis”.

IES Joan Miró

Página 30

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Si queremos tirar pistas por la cara de abajo, pasar por una vía y tirar pistas por la capa de arriba procedemos de la siguiente manera: Seleccionamos el Tipo de Pistas “Track placement and editing”

Selecciona el Tipo de Pistas

Track placement and editing

Herramientas de Posicionamiento

Placing & Routing

Con el Selector de Caras “Layer Selector” seleccionamos pistas de tipo Bottom Cooper

Tipo de Pista

Bottom Cooper

Selector de Caras

Layer Selector

Con el ratón nos situamos en la Ventana de Trabajo y dibujamos la pista “Bottom Cooper “ de una patilla a otra siguiendo las uniones entre componentes “Netlis”, pulsas dos veces con el botón izquierdo del ratón según estas trazando la pista, sale una “VÍA” y las pistas pasan a ser “Top Cooper”, seguimos trazando la pista y si pulsas otras dos veces con el botón izquierdo del ratón sale una “VÍA” y las pistas pasan a ser “Bottom Cooper”. Otra forma más fácil es poner “VÍA” y trazar las pistas con Bottom ó Top Cooper . Selecciona el Tipo de Vias Via placement and editing

Pista Bottom Cooper

VIA

Tamaño de la VIA Pista Bottom Cooper

IES Joan Miró

Página 31

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Si queremos que una determinada zona de una cara sea un plano de masa o alimentación podemos utilizar Zone placement and editing de las Herramientas de Posicionamiento y Rutado Placing & Routing

Herramientas de Posicionamiento Planos de Masa o Alimentación

Placing & Routing

Zone placement and editing

Con el Selector de Caras “Layer Selector” seleccionamos pistas de tipo Bottom Cooper

Tipo de Zona

Top Cooper Selector de Caras

Layer Selector

Con el ratón nos situamos en la Ventana de Trabajo y dibujamos la Zona que queremos de cobre. Aparece un menú contextual donde decimos tamaño de la zona de cobre, Zonas de clareo, etc.

Tamaño de las Zona de Cobre

Clareo

La placa queda:

IES Joan Miró

Página 32

Curso de Robótica y otras aplicaciones en el Aula de Tecnología

Si queremos cambiar el tamaño o la forma de los PAD de un determinado componente utilizar herramientas de emplazamientos de PAD “Pad Placement” PAD Redondo PAD Cuadrado PAD tipo DIL

Herramientas de emplazamientos de PAD

Pad Placement

Seleccionamos el tipo de PAD.

Tipo de PAP Tamaño del PAP

Pinchamos el PAD de un componente de nuestro circuito y este se sustituye. Tamaño del PAP

Tamaño del PAP

S50-25

S90-50

IES Joan Miró

Página 33

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Utilizando las herramientas de diseño de placas que nos proporciona ARES tenemos como resultado el siguiente circuito:

1.3.- Creación de símbolos en ISIS y encapsulados en ARES. 1.3.1.- Creación de una biblioteca de encapsulados en ARES. Para crear una Biblioteca propia en ARES, se deben primero seleccionar el modo de edición y situación de componentes “Package placement and editing.” y seleccionar el botón “L” de manejo de Bibliotecas “Manage Libraries”.

Edición y situación de los Encapsulados

Package placement and editing

Herramientas de Posicionamiento y Rutado

Placing & Routing

Manejo de Bibliotecas

Manage Libraries

Se abre un menú contextual, donde podemos crearnos nuestra propia Biblioteca, añadir encapsulados de otra Biblioteca, borrar encapsulados, etc.

IES Joan Miró

Página 34

Curso de Robótica y otras aplicaciones en el Aula de Tecnología

Creación de una Biblioteca

Cuando pulsamos “Create Library” tenemos que dar un nombre a la biblioteca “Robótica_ARES” y donde queremos crear la biblioteca “C:\Archivos de Programa\Labcenter Electronic\Proteus 6 Professional\Library”.

Nos pedirá un número máximo de Encapsulados.

Máximo 4000

Pulsamos “OK” y la biblioteca se crea. En la biblioteca nueva “Robótica_ARES”, podemos copiar componentes “CONN-DIL8” de otras bibliotecas ”CONNECTORS”. Seleccionamos el encapsulado y damos al icono de copiar “Copy Items”

IES Joan Miró

Página 35

Curso de Robótica y otras aplicaciones en el Aula de Tecnología

Biblioteca Robótica_ARES

Confirmación de copia

1.3.2.- Creación de un encapsulado en ARES. a) Dibujamos el componente sin PAD. Abrimos el ARES y seleccionamos Herramientas de diseño gráfico “2D Graphics”. Con el Selector de Caras “Layer Selector” seleccionamos borde de encapsulado “Top Silk” y dibujamos el encapsulado. Borde de Encapsulado

Top Silk

Herramientas de diseño gráfico

2D Graphics

Selector de Caras

Layer Selector

IES Joan Miró

Página 36

Curso de Robótica y otras aplicaciones en el Aula de Tecnología b) Le añadimos los PAD. Seleccionamos PAD Redondo de las Herramientas de emplazamiento de PAD “Pad Placement “ los insertamos en el encapsulado dibujado.

PAD Redondo

Herramientas de emplazamientos de PAD Tamaño del PAP

Pad Placement

c) Editamos el PAD (Poner un número) Seleccionamos el PAD con el botón derecho del ratón del ratón “El PAD se pone blanco” y pulsamos el izquierdo. Numeramos el PAP “U” con “1”.

Numeramos el PAP

d) Hacer el encapsulado y almacenarlo. Seleccionamos el encapsulado con el botón derecho del ratón (se pone en blanco), pinchamos sobre el icono de realizar un encapsulado “Make Package” de los “Comandos de edición” Comandos de Edición

Editing Commands

Hacer el encapsulado

Make Package

IES Joan Miró

Página 37

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Aparece un menú contextual y escribimos el nombre de la huella “MOTOR-TRI_ROBOTICA” su categoría “Connectors”, tipo de agujero de PAD “agujero pasante” “Through Hole” y la biblioteca donde se almacena “Robótica_ARES”

Nombre del Encapsulado

Categoría

Tipo de agujero del PAD

e) Deshacer el encapsulado y almacenarlo.

Biblioteca donde se almacena

Seleccionamos el encapsulado con el botón derecho del ratón (se pone en blanco), pinchamos sobre el icono de deshacer encapsulados. “Decompose” de los “Comandos de edición” Comandos de Edición

Editing Commands

Deshacer el Encapsulado

Decompose

Variamos el encapsulado, lo seleccionamos con el botón derecho del ratón y volvemos almacenarlo pulsando Make Package

IES Joan Miró

Página 38

Curso de Robótica y otras aplicaciones en el Aula de Tecnología 1.3.3.- Creación de una biblioteca de símbolos en ISIS. Para crear una biblioteca propia en ISIS, se deben primero seleccionar el modo componentes “Component.” y seleccionar el botón “L” de manejo de bibliotecas “Manage Device Libraries”. Component. Manage Device Libraries

Se abre un menú contextual , donde podemos crearnos nuestra propia biblioteca, añadir símbolos de otra biblioteca, borrar símbolos, etc. Creación de una Biblioteca

Cuando pulsamos “Create Library” tenemos que dar un nombre a la biblioteca “Robótica_ISIS” y donde queremos crear la biblioteca “C:\Archivos de Programa\Labcenter Electronic\Proteus 6 Professional\Library”.

Nos pedirá un número máximo de simbolos.

Máximo 4000

IES Joan Miró

Página 39

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Pulsamos “OK” y la biblioteca se crea. En la biblioteca nueva “Robótica_ISIS”, podemos copiar componentes “2N2907” de otras bibliotecas ”Bipolar”. Seleccionamos el encapsulado y damos al icono de copiar “Copy Items”

Biblioteca Robótica_ISIS

Confirmación de copia

IES Joan Miró

Página 40

Curso de Robótica y otras aplicaciones en el Aula de Tecnología 1.3.4.- Creación de un símbolo en ISIS. a) Dibujamos el componente sin patillas. Abrimos el ISIS y seleccionamos “Comandos de Dibujo”

Comandos de Dibujo

b) Le añadimos pines ó patillas. Seleccionamos Patillas de Componentes “Device Pin“ de las Herramientas de Diseño

Tipo de Pin

Patillas de Componentes Device Pin

Herramientas de Diseño

Ponemos los pines en el dibujo realizado, teniendo en cuenta lo siguiente:  

Que los caracteres no estén excesivamente próximos al pin (El pin no conectará con el hilo si esto ocurre y habría que descomponer el componente y modificarlo). Que el tipo de de rejilla sea mayor de Snap 50th (Ver View de la Barra de Menús), para poder insertar el hilo de forma más cómoda.

c) Editamos el pin (Poner el nombre y número) Seleccionamos el pin con el botón derecho del ratón del ratón “El pin se pone rojo” y pulsamos el izquierdo. Nombramos al Pin “U” y lo numeramos “1”.

IES Joan Miró

Página 41

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Nombre Número

d) Hacer el símbolo y almacenarlo. Seleccionamos el símbolo con el botón derecho del ratón (se pone en rojo), pinchamos sobre el icono de realizar un dispositivo “Make device” de los “Comandos de edición” Comandos de Edición

Make device Aparece un menú contextual y escribimos el nombre del componente “MOTOR-TRI_ROBOTICA” y un parámetro de referencia “M”.

IES Joan Miró

Página 42

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Pulsamos “Next” aparece otra ventana donde podemos asignarle el encapsulado físico (Si esta creado lo asignamos, se puede no asignar y pasar a la siguiente ventana contextual). Pulsamos añadir encapsulado Add/Edit .

Añadir Encapsulado

Aparece un menú contextual donde pulsamos añadir el encapsulado

Añadir Encapsulado

IES Joan Miró

Página 43

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Aparece otro menú contextual que abre el ARES y elegimos el encapsulado adecuado.

Elegimos el encapsulado adecuado MOTOR-TRI_ROBOTICA Ponemos la palabra clave MOTOR y aparecen diferentes motores

Vista del encapsulado

Aparece otro menú contextual en el que podemos añadir pines y poner este encapsulado como principal.

Encapsulado por defecto

Añadir Pines

Usar Bibliotecas de ARES

IES Joan Miró

Página 44

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Si pulsamos asignación de huella “Assign Package(s)” esta queda asignada al símbolo de ISIS

Se abre otro menú contextual donde se puede introducir el modelo de componte simulado

IES Joan Miró

Página 45

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Se abre otro menú contextual donde se puede introducir un documento donde se especifique sus características “Data Sheet”

Introducción del Documento

Se abre otro menú contextual donde se le asigna categoría, Biblioteca.

Categoría

Biblioteca

IES Joan Miró

Página 46

Curso de Robótica y otras aplicaciones en el Aula de Tecnología e) Deshacer el símbolo y almacenarlo. Seleccionamos el símbolo con el botón derecho del ratón (se pone en rojo), pinchamos sobre el icono de deshacer un dispositivo “Decompose” de los “Comandos de edición” Comandos de Edición

Deshacer el símbolo

Decompose

Variamos el simbolo, lo seleccionamos con el botón derecho del ratón y la volvemos almacenarlo pulsando Make Device

2.- Principios de funcionamiento de un Microcontrolador PIC. Antes de definir un sistema digital basado en microcontroladores habría que definir un sistema basado en microprocesadores. Un microprocesador es básicamente un chip que contiene la CPU (Central Proccesing Unit) que se encarga de controlar todo un sistema. Un sistema digital basado en un microcontrolador es un sistema abierto ya que su configuración difiere según a la aplicación a la que se destine. Se pueden acoplar los módulos necesarios para configurarlo con las características que se desee. Para ello se saca al exterior las líneas de sus buses de datos, direcciones y control de modo que permita su conexión con la memoria y los módulos de entrada/ salida. Finalmente resulta un sistema implementado por varios circuitos integrados dentro de una misma placa de un circuito impreso.

IES Joan Miró

Página 47

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Un microcontrolador es un sistema cerrado, lo que quiere decir que en un solo circuito integrado, se diseña un sistema digital programable completo. Este dispositivo, se destina a gobernar una sola tarea que no se puede modificar. Disponen de los bloques esenciales como CPU, memorias de datos y de programa, reloj, periféricos de entrada/salida, etc. Existen multitud de fabricantes de microcontroladores Intel, Motorola, Microchip, etc. Los microcontroladores PIC de la casa Microchip se caracterizan por ser baratos, por proporcionar un entorno de desarrollo integrado gratuito MPLAB . Este entorno permite editar un el archivo fuente del proyecto, ensamblarlo, simularlo en un Ordenador Personal y comprobar la evolución de las variables en la memoria RAM, registros, etc. Los microcontroladores PIC se caracterizan por lo siguiente: 

Tienen una arquitectura Hardvard utiliza dos tipos de memorias (Datos y Programa) con buses independientes.

CPU Buses

Memoria de Programa y de Datos

Memoria de Programa Buses (EEPROM)

Arquitectura Von Neumann 

Memoria de Datos (RAM)

CPU Buses

Arquitectura Hardvard

Utilizan un procesamiento segmentado o Pipeline que permiten realizar dos procesos simultáneamente a la vez (lectura y ejecución de instrucciones).

PROGRAMA 1. BSF STATUS,RP0 2. CLRF TRISB 3. MOVLW 0XFF

1º Ciclo

2º Ciclo

Búsqueda 1

Ejecuta 1 Búsqueda 2

3º Ciclo

4º Ciclo

5º Ciclo

Ejecuta 2 Búsqueda 3

4. MOVWF TRISA

Ejecuta 3 Búsqueda 4

Ejecuta 4



Tiene un reducido grupo de instrucciones (RISC Reduced Instruction Set Computer). Son instrucciones simples que se ejecutan en un solo ciclo máquina (4 ciclos de reloj). El microcontrolador PIC16F876A tiene 35 instrucciones.



Tiene una estructura Ortogonal es decir que una instrucción puede utilizar cualquier elemento de la arquitectura como fuente o destino de datos.

IES Joan Miró

Página 48

Curso de Robótica y otras aplicaciones en el Aula de Tecnología El microcontrolador PIC 16F876A es un CHIP de 28 patillas, que se caracteriza por lo siguiente:           

Tiene 35 Instrucciones Tiene una Memoria de Programa de 8192 palabras “FLASH” 368 byte de Memoria de Datos “RAM” 256 byte de EEPROM 22 Patillas de entradas/salidas. Sistema de Adquisición de datos (5 Entradas Analógicas) 2 módulos de CCP y PWM. (Comparación y captura de datos y generadores de señal por Modulación de Anchura de Pulsos). Un módulo de comunicación serie SPI (Serial Peripheral Interface) I2C (Inter-Integrated Circuit). Un transmisor-receptor asíncrono serie universal USART. 3 Timer (Temporizadores/Contadores). 2 Comparadores de señales analógicas.

2.1.- Diagrama en bloques.

IES Joan Miró

Página 49

Curso de Robótica y otras aplicaciones en el Aula de Tecnología 2.2.- Mapa de memoria. 2.2.1.- Memoria de Programa. Es una memoria tipo FLASH, los programas son almacenados en este tipo de memoria, cuando se desconecta la alimentación la información almacenada no se pierde.(La memoria flash es una forma desarrollada de la memoria EEPROM que permite que múltiples posiciones de memoria sean escritas o borradas en una misma operación de programación mediante impulsos eléctricos, frente a las anteriores que sólo permite escribir o borrar una única celda cada vez. Por ello, flash permite funcionar a velocidades muy superiores cuando los sistemas emplean lectura y escritura en diferentes puntos de esta memoria al mismo tiempo.), está compuesta por:

   



8192 palabras de 14bit. (Cada instrucción ocupa solo una palabra). Una pila de 8 niveles. Un solo vector de Interrupción. Vector de Reset (Dirección 0000h) 4 zonas de memoria.

2.2.2.- Memoria de Datos. Es una memoria de tipo RAM (Memoria de Acceso Aleatorio), se pierde la información cuando se desconecta la alimentación Está compuesta por 4 bancos de trabajo. Contiene registros (Tipo Byte) de 2 tipos: 

Registros de funciones especiales SFR que sirven para comunicarnos con el hardware interno del PIC.



Registro de Propósito General que nos sirven para almacenar nuestras variables de nuestro programas.

IES Joan Miró

Página 50

Curso de Robótica y otras aplicaciones en el Aula de Tecnología 3.- Iniciación a la programación en C en uC PIC. 3.1.- Compilador CCS. 3.1.1.- Introducción. Un compilador convierte el lenguaje de alto nivel a instrucciones en código máquina. El compilador CCS C es un compilador cruzado “cross-compiler realizado para un determinado grupo de microcontroladores PIC (Se desarrolla un lenguaje de alto nivel “C” partiendo de instrucciones de bajo nivel “Ensamblador” de los microcontroladores PIC). El Compilador C de CCS ha sido desarrollado específicamente para PIC. Dispone de una amplia librería de funciones predefinidas, comandos de preprocesado y ejemplos. Además, suministra los controladores (driver) para diversos dispositivos como LCD, convertidores AD, relojes de tiempo real, EEPROM serie, etc. Las características generales de este compilador se pueden encontrar en la dirección www.ccsinfo.com. Los programas son editados y compilados a instrucciones máquina en el entorno de trabajo del PC. Estos programas pueden ser depurados con diferentes sistemas de desarrollo MPLAB , Proteus, etc. El código máquina puede ser cargado desde el PC al microcontrolador PIC mediante cualquier programador (ICD2, Bootloader, etc.). El Lenguaje C de “CCS C” es estándar que incluye las directivas (#include, etc.), suministra unas directivas especificas para PIC (#DEVICE,ETC.); además incluye funciones específicas (bit-self(), etc.) . (Mirar el manual de CCS C). Se suministra con editor que permite controlar la sintaxis del programa.

3.1.2.- Estructura de un programa. Para escribir un programa en C con el CCS C se deben tener en cuenta los elementos básicos de su estructura. 

Directivas de Preprocesado: Controlan la conversión del programa al código máquina por parte del compilador.



Declaración de las Funciones: Indicamos que tipo de función es.



Programas o Funciones: Conjunto de Instrucciones. Pueden existir varios. Tiene que existir uno como principal llamado void main().



Instruciones: Indican cómo debe comportarse el uC PIC.



Comentarios: Permiten describir lo que significa cada línea del programa

IES Joan Miró

Página 51

Curso de Robótica y otras aplicaciones en el Aula de Tecnología /* El Puerto C puede tomar valores comprendidos entre 0 y 255 Si el Puerto C es 0 realizar la función de mostrar por el Display de 7 segmentos los números del 0 al 9 con una cadencia de 1 segundo. Después de este proceso apagar el Display. Si el Puerto C es 1 realizar la función de simulación de las luces del coche fantástico. Nombre después de este proceso apagar los Led. Si el Puerto C es distinto de 0 y 1 realizar una función de la raíz cuadrada del dato leído y devolverlo en una variable llamada resultado y mostrarlo en el Puerto B */

del Programa

/* ***************************** Directivas de Preprocesado************************************************* */ // (Controlan la conversión del programa a código maquina por parte del compilador) #include

// Incluye el fichero 16F877A al programa tiene que estar en la misma // carpeta del programa. Define funciones, patillas y registros.

#fuses XT,NOWDT #use delay( clock = 4000000 )

// Define la palabra de configuración del microcontrolador PIC // Trabaja con un reloj tipo XT y no utiliza perro guardián Wathdog // Define la frecuencia del reloj de 4 MHz

#include #include #include

// Librerías de funciones matemáticas. // Librerías de simulación Luces del Coche Fantástico. // Librerías de simulación representación de los números en el Display 7Seg.

#BYTE TRISC = 0x87 #BYTE portC = 0x07 #BYTE TRISB = 0x86 #BYTE portB = 0x06 #BYTE TRISD= 0x85 #BYTE portD = 0x05

// TRISC en 87h. // PORTC en 07h. // TRISB en 86h. // PORTB en 06h. // TRISA en 85h. // PORTA en 05h.

#BIT rc0 = 0x07.0 #BIT rc1 = 0x07.1

// RC0 en 0x07 patilla 0. // RC1 en 0x07 patilla 1.

Directivas de Preprocesado

/* ************************************** Declaración de funciones ****************************************** */ void VariasCosas (int8); int8 Raiz (int8);

// Generación de la señal cuadrada. // Realiza la raíz cuadrada.

Declaración de Funciones

// ***************************** Función principal o programa principal ******************************************* void main()

Indica programa principal

{ int8 muestra1;

// Variable muestra1 definida como un entero de 8 bit

TRISB = 0B00000000; TRISC= 0B11111111; TRISD = 0B00000000;

// Defines Puerto B como SALIDA de datos. // Defines Puerto C como ENTRADA de datos. // Defines Puerto D como SALIDA de datos.

portB = 0B00000000; portD = 0B00000000;

// Reseteamos el Puerto B. // Reseteamos el Puerto D.

while (1)

// Ejecuta indefinidamente lo que está entre corchetes.

Programa Principal

{ muestra1 = portC; VariasCosas(muestra1);

// Leemos el Puerto C. // Ejecuta la función VariasCosas definida por la variable muestra1.

} }

IES Joan Miró

Página 52

Curso de Robótica y otras aplicaciones en el Aula de Tecnología

//******************************** Función VariasCosas ****************************************************** void VariasCosas (int8 muestra2) { switch (muestra2)

// Preguntamos por la variable muestra2 si es 0 ejecuta el case 0, si es 3 el case 3, // si es distinto de 0 y 3 ejecuta Raíz

{ case 0: LucesFantastico(); break; case 1: NumerosDisplay(); break;

// Llamamos a la función LucesFantastico

// Llamamos a la función NumerosDisplay

Función VariasCosas

default: { portB = Raiz(muestra2); delay_ms(50);

// Ejecuta la función Raíz definida por la variable muestra2. // Temporizamos 50 mS.

} } } //******************************* Función Raíz *************************************************************** int8 Raiz (int8 muestra3) { int8 resultado; resultado = SQRT (muestra3); return(resultado);

Función Raíz

}

3.1.3.- Constantes. Son números, caracteres, etc Las constantes se pueden especificar en decimal, octal, hexadecimal o en binario, etc

IES Joan Miró

123

Decimal

0123

Octal

0b01011011

Binario

‘X’

Caracter

Página 53

Curso de Robótica y otras aplicaciones en el Aula de Tecnología 3.1.4.- Tipo de variables. Los programas tienen variables y se ubican en la memoria RAM. Se deben declarar obligatoriamente antes de usarlas. Para ello se debe de indicar el nombre y el tipo de dato que manejará. Se define de la siguiente forma: Tipo Nombre de la Variable = Valor Inicial Tipo de datos: Tipo

Tamaño

Rango

Descripción

Int1 Short Int Int8 Int16 Long Int32

1 bit

0a1

Entero de 1 bit

8 bit

0 a 255

Entero de 8 bit

16 bit

0 a 65535

Entero de 16 bit

32 bit

0 a 4.294.967.295

Entero de 32 bit

Float

32 bit

±3,4E ±38 (7 dígitos)

Coma flotante

Char

8 bit

0 a 255

Carácter

Signed Int8

8 bit

-128 a 127

Entero con signo

Signed Int16

16 bit

-32.768 a 32.767

Entero largo con signo

Signed Int32

32 bit

-231 a +(231-1)

Entero de 32 bit con signo

Ejemplo: Int8 dato=34; // Es una variable de tipo entero de 8 bit (Valores comprendidos entre 0y 255) que se la inicializa con 34. Las variables pueden ser locales es decir solo son validas dentro de la función o globales que son validas para todo el programa.

IES Joan Miró

Página 54

Curso de Robótica y otras aplicaciones en el Aula de Tecnología 3.1.5.- Operadores. a) Asignación. Transfieren datos de una expresión, una constante o una variable, a una variable. Operador = += -= *= /= %= = 4

&=

c&=4

|=

c|=4

^=

c^=4

Significado Asignación simple. El contenido de c se introduce en a Incrementa c en 4 unidades. Decrementa c en 4 unidades. Modifica c multiplicándolo por 4. Ahora c contendrá el cociente de dividir c entre 4. Ahora c contendrá el resto de dividir c entre 4. Ahora c contendrá el resultado de desplazar 4 bits a la izquierda a la propia variable c. Ahora c contendrá el resultado de desplazar 4 bits a la derecha a la propia variable c. Se hace la operación AND entre los bits de c y los del valor 4. El resultado se almacena en c. Se hace la operación OR entre los bits de c y los del valor 4. El resultado se almacena en c. Se hace la operación XOR entre los bits de c y los del valor 4. El resultado se almacena en c.

b) Aritméticos. Sirven para operar con datos numéricos. Operador + * / % -++ sizeof

Significado Suma Resta Multiplicación División Módulo, resto de una división entera Incremento Decremento Determina el tamaño “en byte”, de un operando

c) Relacionales. Sirven para comparar números o caracteres.

Operador < > >= = 2) Tenemos dos expresiones lógicas unidas por un operador lógico, lo que forma otra expresión lógica más compleja. Si cumple la expresión será cierta Operador ! && ||

Significado Negación (No) Conjunción (Y) Disyunción (O)

e) De Bits. Realiza operaciones lógicas a nivel de bits independientes, son válidos con datos de los tipos char, int, long. Operador ~ & ^ | >>

Significado Dirección Indirección Puntero a estructura

3.1.6.- Funciones.     

Son bloques de sentencias. Al igual que las variables, las funciones deben definirse y declararse antes de utilizarlas. Una función puede ser llamada desde una sentencia de otra función. Una función puede devolver un valor a la sentencia que la ha llamado. Una función puede recibir parámetros o argumentos.

IES Joan Miró

Página 56

Curso de Robótica y otras aplicaciones en el Aula de Tecnología  El Puerto C puede tomar valores comprendidos entre 0 y 255 /* Si el Puerto C es 0 realizar la función de mostrar por el Display de 7 segmentos los números del 0 al 9 con una cadencia de 1 segundo. Después de este proceso apagar el Display. Si el Puerto C es 1 realizar la función de simulación de las luces del coche fantástico. después de este proceso apagar los Led. Si el Puerto C si es distinto de 0 y 1 realizar una función de la raíz cuadrada del dato leído y devolverlo en una variable llamada resultado y mostrarlo en el Puerto B */ /* ***************************** Directivas de Preprocesado************************************************* */ // (Controlan la conversión del programa a código maquina por parte del compilador) #include

// Incluye el fichero 16F877A al programa tiene que estar en la misma // carpeta del programa. Define funciones, patillas y registros.

#fuses XT,NOWDT #use delay( clock = 4000000 )

// Define la palabra de configuración del microcontrolador PIC // Trabaja con un reloj tipo XT y no utiliza perro guardián Wathdog // Define la frecuencia del reloj de 4 MHz

#include #include #include

// Librerías de funciones matemáticas. // Librerías de simulación Luces del Coche Fantástico. // Librerías de simulación representación de los números en el Display 7Seg.

#BYTE TRISC = 0x87 #BYTE portC = 0x07 #BYTE TRISB = 0x86 #BYTE portB = 0x06 #BYTE TRISD = 0x88 #BYTE portD = 0x08

// TRISC en 87h. // PORTC en 07h. // TRISB en 86h. // PORTB en 06h. // TRISA en 88h. // PORTA en 08h.

Definición de la Función “VariasCosas”

Definición de la Función “Raiz” Devuelve un valor entero de 8 bit “ int8” Recibe una variable entera de 8 bit “ int8”

#BIT rc0 = 0x07.0 // RC0 en 0x07 patilla 0. /* ************************************** Declaración de funciones ****************************************** */ void VariasCosas (int8); int8 Raiz (int8);

// Generación de la señal cuadrada. // Realiza la raíz cuadrada.

Declaración de Funciones

// ***************************** Función principal o programa principal ******************************************* void main()

Función Principal { int8 muestra1;

// Variable muestra1 definida como un entero de 8 bit

TRISB = 0B00000000; TRISC = 0B11111111; TRISD = 0B00000000;

// Defines Puerto B como SALIDA de datos. // Defines Puerto C como ENTRADA de datos. // Defines Puerto D como SALIDA de datos.

portB = 0B00000000; portD = 0B00000000;

// Reseteamos el Puerto B. // Reseteamos el Puerto D.

while (1)

// Ejecuta indefinidamente lo que está entre corchetes.

{ muestra1 = portC; VariasCosas(muestra1);

// Leemos el Puerto C. // Ejecuta la función VariasCosas definida por la variable muestra1.

} }

IES Joan Miró

LLamada de la Función “VariasCosas” lleva implícita la variable “muestra1”

Página 57

Curso de Robótica y otras aplicaciones en el Aula de Tecnología //******************************** Funcion VariasCosas ******************************************************

Función “VariasCosas” lleva implícita la variable “muestra2” muestra2 muestra1

void VariasCosas (int8 muestra2) { switch (muestra2)

// Preguntamos por la variable muestra2 si es 0 ejecuta el case 0, si es 3 el case 3, // si es distinto de 0 y 3 ejecuta Raíz

{ case 0: LucesFantastico(); break;

Llamada a la Función “Luces Fantastico” // Llamamos a la función LucesFantastico

Llamada a la Función “NumerosDisplay” case 1: NumerosDisplay(); break;

// Llamamos a la función NumerosDisplay

implícita la variable “muestra2”

devuelve un valor de 8bit portB resultado

default: {

Llamada de una sentencia a otra función

Llamada a la Función “Raiz” y lleva

portB = Raiz(muestra2); delay_ms(50);

// Ejecuta la función Raíz definida por la variable muestra. // Temporizamos 50 mS.

}

}

LLamada de la Función “delay_ms” lleva implícita el parametro “50”

}

//******************************* Funcion Raiz *************************************************************** int8 Raiz (int8 muestra3)

Función “Raiz” lleva implícita la variable “muestra3” Muestra3 muestra2

{ int8 resultado; resultado = SQRT (muestra3); return(resultado); }

Llamada de una sentencia a otra función

IES Joan Miró

Llamada a la Función “SQRT” y lleva implícita la variable “muestra3”devuelve un valor de 8bit a resultado

Función “Raiz” devuelve el valor de la variable “resultado”

Página 58

Curso de Robótica y otras aplicaciones en el Aula de Tecnología 3.2.- Manejo de las Declaraciones de Control. Son sentencias líneas de código usadas para controlar el proceso de ejecución del programa. Antes de ver las sentencias básicas de un programa vamos a explicar que se entiende por flujo de programa. Se entiende por flujo de un programa el modo en que se avanza de una instrucción a la siguiente dentro de ese programa. También podríamos decir que es la forma en que fluyen las instrucciones por el microcontrolador. Existen tres estructuras de control del flujo:

Instrucción 1

Instrucción 2

Instrucción 3

Instrucción 4

Instrucción 1

Instrucción 1

no Condición

Instrucción 3

si Opción 1

Instrucción 2

Opción 2

si Condición

no Estructura Secuencial

Estructura de selección Instrucción 4

Estructura de repetición 

Estructura secuencial: la siguiente instrucción que se ejecuta es la que está justo a continuación en el listado del código fuente del programa, y que estará en la siguiente posición de memoria cuando se compile



Estructura de selección: dependiendo del resultado de la evaluación de una condición, seguidamente se ejecutará una instrucción u otra. De este modo el flujo de instrucciones se divide en dos o más caminos, aunque si la condición decide avanzar por un camino se abandonarán los otros (no se puede avanzar por más de un camino a la vez).



Estructura de iteración o repetición: la siguiente instrucción que se ejecuta se encuentra antes que la que se acaba de ejecutar, pues ya se ha pasado por ella anteriormente. Diremos que se ha formado un lazo o bucle en el flujo del programa. Normalmente hay que evitar los bucles infinitos, dando la posibilidad de que en algún momento (mediante una condición) se dejen de repetir las mismas instrucciones.

IES Joan Miró

Página 59

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Para entender mejor las declaraciones de control, los ejemplos se van a desarrollar en un entrenador realizado en ISIS.

3.2.1.- If-Else. La sentencia if-else nos ayuda a tomar decisiones. Se define de la siguiente manera:

if (expresión) {

si

Instrucción_1;

no Condición

Instrucción_n; }

Instrucción_1

Instrucción _a

Instrucción _n;

Instrucción _z;

else { Instrucción_a; Inciónstruc_z; }

IES Joan Miró

Página 60

Curso de Robótica y otras aplicaciones en el Aula de Tecnología

Programa_1: Leer la Patilla RC0 = 1  (RB0=0 y RB1=1),

RC0 = 0  (RB0=1 y RB1=0)

Diagrama de Flujo:

RC0 = 1  (RB0=0 y RB1=1) RC0 = 0  (RB0=1 y RB1=0)

// Configuración TRISB 0B00000000 TRISC 0B11111111

// Defines Puerto B como SALIDA de datos. // Defines Puerto C como ENTRADA de datos.

// Reseteamos el Puerto B. portB  0B00000000

si

no ¿rc0=1?

rb0  0 // Apagar D9 rb1  1 // Encender D10

IES Joan Miró

rb0  1 // Encender D9 rb1 0 // Apagar D10

Página 61

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Programa_1.c: ( Mirar el punto 1.1.3.- Depuración de programas.) /*

Leer la Patilla RC0 si es 1 (RB0=0 y RB1=1) y si es 0 (RB0=1 y RB1=0)(Utilizando directamente la RAM)

*/

// ********************************* Directivas de Preprocesado************************************ // (Controlan la conversión del programa a código máquina por parte del compilador) #include

#BYTE TRISB = 0x86 #BYTE portB = 0x06

// Incluye el fichero 16F877 al programa tiene que estar en la misma // carpeta del programa define funciones, patillas y registros. // Define la palabra de configuración del microcontrolador PIC // Trabaja con un reloj tipo XT y no utiliza perro guardián Wathdog // Define la frecuencia del reloj de 4 MHz y el tipo de reloj que vamos a // utilizar en las funciones de retardo delay // TRISB en 86h. // PORTB en 06h.

#BYTE TRISC = 0x87 #BYTE portC = 0x07

// TRISC en 87h. // PORTC en 07h.

#BIT rb0 = 0x06.0 #BIT rb1 = 0x06.1 #BIT rc0 = 0x07.0

// RB0 en 0x06 patilla 0. // RB1 en 0x06 patilla 1. // RC0 en 0x07 patilla 0.

#fuses XT,NOWDT #use delay( clock = 4000000 )

// **************************** Función principal o programa principal ******************************* // Se define con un void main, void main() { TRISB = 0B00000000; TRISC = 0B11111111;

// Defines Puerto B como SALIDA de datos. // Defines Puerto C como ENTRADA de datos.

portB = 0B00000000;

// Reseteamos el Puerto B.

while (1)

// Ejecuta indefinidamente lo que está entre corchetes.

{ if (rc0 == 1 )

// Preguntamos si RC0=1 // Si RC0=1 ejecuta lo que viene a continuación.

{ rb0 = 0; rb1 = 1; } else {

// Apagar D9 // Encender D10 // Si RC0=0 ejecuta lo que viene a continuación.

rb0 = 1; rb1 = 0;

// Encender D9 // Apagar D10

} } }

IES Joan Miró

Página 62

Curso de Robótica y otras aplicaciones en el Aula de Tecnología 3.2.2.- Switch-Case. La sentencia switch-case nos ayuda a tomar decisiones múltiples. Se define de la siguiente manera:

switch (expresión) {

case constante1 Instrucción_1;

¿Expresión= constante1?

si

Instrucción_1 Instrucción _n

no

si ¿break?

Instrucción_n;

break;

no Instrucción_1

case constante2 Instrucción_1; Instrucción_n;

¿Expresión= Constante2?

si Instrucción _n

si

no

¿break?

break;

no

case constanteN

Instrucción_1 Instrucción_1; Instrucción_n;

break;

¿Expresión= ConstanteN?

no

default:

si Instrucción _n

no

si ¿break?

Instrucción_1; Instrucción_n; }

Instrucción_1 Instrucción _n;

Programa_2: Leer el Puerto C 

Si PC7..PC2= 0, PC1= 0 y PC0= 0 cargar en el Puerto B= 0b00000011, esperar 1sg, Puerto B= 0b00000000, esperar 1sg.



Si PC7..PC2= 0, PC1= 0 y PC0= 1 cargar en el Puerto B= 0b00001100, esperar 1sg, Puerto B= 0b00000000, esperar 1sg.



Si PC7..PC2= 0, PC1= 1 y PC0= 0 cargar en el Puerto B= 0b00110000, esperar 1sg, Puerto B= 0b00000000, esperar 1sg.

IES Joan Miró

Página 63

Curso de Robótica y otras aplicaciones en el Aula de Tecnología 

Si PC7..PC2= 0, PC1= 1 y PC0= 1 cargar en el Puerto B= 0b11000000, esperar 1sg, Puerto B= 0b00000000, esperar 1sg.



Si PC7..PC2 distinto de 0, PC1 = x y PC0 = x cargar en el Puerto B= 0b00000000.

Repetir el proceso cíclicamente. Programa_2.c

Diagrama de Flujo:

Ejemplo de Switch-Case

// Configuración TRISB 0B00000000 TRISC 0B11111111;

// Defines Puerto B como SALIDA de datos. // Defines Puerto C como ENTRADA de datos.

// Reseteamos el Puerto B. portB  0B00000000

si ¿portC= 0?

portB  0B00000011

no

Retardo_1Seg

Retardo_1Seg

portB  0B00000000

si portB  0B00001100

¿portC= 1?

no

Retardo_1Seg

Retardo_1Seg

portB  0B00000000

si portB  0B00110000

¿portC= 2?

no

Retardo_1Seg

Retardo_1Seg

portB  0B00000000

si ¿portC=3?

no

portB  0B00110000

Retardo_1Seg

Retardo_1Seg

portB  0B00000000

portB0B00000000

IES Joan Miró

Página 64

Curso de Robótica y otras aplicaciones en el Aula de Tecnología Programa_2.c: // Leer el Puerto C // Si PC7..PC2= 0, PC1= 0 y PC0= 0 cargar en el Puerto B= 0b00000011, esperar 1sg, Puerto B= 0b00000000, esperar 1sg. // Si PC7..PC2= 0, PC1= 0 y PC0= 1 cargar en el Puerto B= 0b00001100, esperar 1sg, Puerto B= 0b00000000, esperar 1sg. // Si PC7..PC2= 0, PC1= 1 y PC0= 0 cargar en el Puerto B= 0b00110000, esperar 1sg, Puerto B= 0b00000000, esperar 1sg. // Si PC7..PC2= 0, PC1= 1 y PC0= 1 cargar en el Puerto B= 0b11000000, esperar 1sg, Puerto B= 0b00000000, esperar 1sg. // Si PC7..PC2 distinto de 0, PC1 = x y PC0 = x cargar en el Puerto B= 0b00000000. // Repetir el proceso cíclicamente.

// ************************************ Directivas de Preprocesado ********************************* // (Controlan la conversión del programa a código máquina por parte del compilador) #include

// Incluye el filchero 16F877 al programa tiene que estar en la misma // carpeta del programa define funciones, patillas y registros.

#fuses XT,NOWDT

// Define la palabra de configuarción del microcontrolador PIC // Trabaja con un reloj tipo XT y no utiliza perro guardian Wathdog#use

delay( clock = 4000000 ) #BYTE TRISC = 0x87 #BYTE PORTC = 0x07 #BYTE TRISB = 0x86 #BYTE PORTB = 0x06

// Define la frecuencia del reloj de 4 MHz // TRISC en 87h. // PORTC en 07h. // TRISB en 86h. // PORTB en 06h.

// **************************** Función principal o programa principal ******************************* void main() { TRISB = 0B00000000; TRISC = 0B11111111; PORTB = 0B00000000;

// Defines Puerto B como SALIDA de datos. // Defines Puerto C como ENTRADA de datos. // Reseteamos el Puerto B.

while (1) {

// Ejecuta indefinidamente lo que está entre corchetes. switch (PORTC) { case 0: PORTB = 0B00000011; delay_ms(1000); PORTB = 0B00000000; delay_ms(1000); break; case 1: PORTB = 0B00001100; delay_ms(1000); PORTB = 0B00000000; delay_ms(1000); break; case 2: PORTB = 0B00110000; delay_ms(1000); PORTB = 0B00000000; delay_ms(1000); break;

IES Joan Miró

Página 65

Curso de Robótica y otras aplicaciones en el Aula de Tecnología case 3: PORTB = 0B11000000; delay_ms(1000); PORTB = 0B00000000; delay_ms(1000); break; default: PORTB = 0B00000000; } } }

3.2.3.- For. Se usa para repetir sentencias. En las expresiones del FOR la inicialización es una variable a la cual se le asigna un valor inicial. La condición de finalización sirve para evaluar la variable de control antes de ejecutar la sentencia. Si es cierta se ejecuta las sentencias que estén entre corchetes. La expresión de Incremento ó decremento modifica la variable de control después de ejecutar el bucle. Se define de la siguiente manera: for (inicialización; condición de finalización; incremento) { Instrucción_1; Instrucción_n; }

// Inicialización de la variable

n1

// Condición de finalización

no

¿n
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF