Curso de Robotica y Otras Aplicaciones en El Aula de Tecnologia
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 filesNew. 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
portB0B00000000
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
n1
// Condición de finalización
no
¿n
View more...
Comments