SlideShare una empresa de Scribd logo
1 de 259
Descargar para leer sin conexión
Copyright 2010 Christian Bodington
Todos los derechos reservados. Esta publicación no puede ser reproducida,
ni en todo ni en partes, ni registrada en o transmitida por un sistema de
recuperación de información, en ninguna forma ni por ningún medio, sea
mecánico, fotoquímico, electrónico, magnético, electroóptico, por fotocopia
o cualquier otro, sin permiso previo por escrito del autor.
Ilustrado y Editado por: Christian Bodington Esteva
Diseño de la portada / Arte por: Christian Bodington Esteva
WWW.CONEXIONELECTRONICA.COM
i
CONTENIDO
Prologo.
Capitulo I.
1.1.- Herramientas de diseño.
1.2.- Entorno de Desarrollo Integrado de mikroBasic.
1.3.- Estructura de un programa.
1.4.- Crear un nuevo proyecto en mikroBasic.
1.5.- Conociendo el entorno de desarrollo integrado.
1.6.- Componentes y operadores en mikroBasic.
1.6.1.- Subrutinas.
1.6.2.- Variables.
1.6.3.- Arrays.
1.6.4.- Constantes.
1.6.5.- Alias.
1.6.6.- Operadores Aritméticos.
1.6.7.- Operadores Bit a Bit.
1.6.8.- Operadores de Comparación.
Capitulo II.
2.1.- Arquitectura Básica del microcontrolador PIC16F877.
2.2.- El oscilador externo.
2.3.- Circuito de Reset.
2.4.- Consideraciones técnicas de diseño.
2.4.1.- Estado lógico de un pin I/O.
2.4.2.- Lectura de un estado lógico en un pin I/O.
2.4.3.- El opto-acoplador como dispositivo de enlace.
2.4.4.- Fuente de poder 5Vdc – 3.3Vdc.
2.5.- Configuración de puertos de entrada y salida en un microcontrolador PIC.
2.6.- Primeros ejemplos de programación en mikroBasic.
2.6.1.- Ejemplo #1. Control de Leds.
2.6.2.- Ejemplo #2. Control de Leds con pulsadores.
2.6.3.- Ejemplo #3. Librería Button.
ii
Capitulo III. Pantallas LCD y GLCD.
3.1.- Pantallas LCD, estudio de la librería LCD de mikroBasic.
3.1.1.- Identificación de los pines de una pantalla LCD.
3.1.2.- Conexión y configuración de una pantalla LCD.
3.1.3.- Rutina Lcd_Init().
3.1.4.- Rutina Lcd_Cmd().
3.1.5.- Rutina Lcd_Out().
3.1.5.1.- Ejemplo #4. Imprimir mensaje en pantalla LCD.
3.1.5.2.- Ejemplo #5. Uso de comandos en pantalla LCD.
3.1.5.3.- Ejemplo #5.1. Uso de comandos en pantalla LCD.
3.1.6.- Rutina Lcd_Out_Cp().
3.1.6.1.- Ejemplo #6. Uso de la rutina Lcd_Out_Cp().
3.1.7.- Rutina Lcd_Chr().
3.1.8.- Rutina Lcd_Chr_Cp().
3.1.8.1.- Ejemplo #7. Uso de rutinas Lcd_Chr() y Lcd_Chr_Cp().
3.2.- Parámetros de rutinas cargados en variables.
3.2.1.- Ejemplo #8. Uso de variables como parámetros.
3.2.2.- Ejemplo #9. Imprime el contenido de dos variables tipo String.
3.3.- Imprimir el contenido de una variable en una pantalla LCD.
3.3.1.- Ejemplo #10. Imprimir el contenido de una variable.
3.3.2.- Ejemplo #11. Imprime el resultado de una operación,
suma y resta de un número cargado en una variable
a través de pulsadores.
3.3.3.- Ejemplo #12. Crear un menú de opciones en la pantalla.
3.4.- Pantalla Gráfica o GLCD (Graphic Liquid Crystal Display).
3.4.1.- Conexión y configuración de una pantalla GLCD.
3.5.- Librería GLCD.
3.5.1.- Rutina Glcd_Init().
3.5.2.- Ejemplo #13. Uso de la rutina Glcd_Init().
3.5.3.- Módulo de Fuentes en mikroBasic.
iii
3.5.3.1.- Ejemplo #14. Cómo incluir un módulo de fuentes.
3.5.4.- Rutina Glcd_Fill().
3.5.5.- Rutina Glcd_Set_Font().
3.5.6.- Rutina Glcd_Write_Text().
3.5.6.1.- Ejemplo #15. Imprimir el contenido de una
variable tipo Word.
3.5.7.- Rutina Glcd_Dot(x, y, color).
3.5.7.1.- Ejemplo #16. Encender o apagar un pixel específico.
3.5.7.2.- Ejemplo #17. Cambio de color o color inverso en la pantalla.
3.5.7.3.- Ejemplo #18. Cambio de estado de un pixel.
3.5.8.- Rutina Glcd_Line(x1, y1, x2, y2, color).
3.5.8.1.- Ejemplo #19. Dibuja línea entre coordenadas específicas.
3.5.8.2.- Ejemplo #20. Dibuja línea entre coordenadas, color inverso.
3.5.9.- Rutina Glcd_V_Line(y1, y2, x, color).
3.5.9.1.- Ejemplo #21. Dibuja línea vertical entre
coordenadas específicas.
3.5.10.- Rutina Glcd_H_Line(x1, x2, y, color).
3.5.10.1.- Ejemplo #22. Dibuja línea horizontal entre coordenadas.
3.5.11.- Rutina Glcd_Rectangle(x1, y1, x2, y2, color).
3.5.11.1.- Ejemplo #23. Dibuja un cuadrado o rectángulo.
3.5.11.2.- Ejemplo #24. Dibuja una serie de rectángulos consecutivos.
3.5.12.- Rutina Glcd_Box(x1, y1, x2, y2, color).
3.5.12.1.- Ejemplo #25. Dibuja un cuadrado o rectángulo sólido.
3.5.12.2.- Ejemplo #26. Dibuja un cuadrado o rectángulo sólido,
color inverso.
3.5.13.- Glcd_Circle(x, y, radio, color).
3.5.13.1.- Ejemplo #27. Dibuja un círculo en la pantalla.
3.5.13.2.- Ejemplo #28. Dibuja un círculo, color inverso.
3.5.13.3.- Ejemplo #29. Dibuja círculos consecutivos.
iv
Capítulo IV. Librería Trigon – Funciones Trigonométricas.
4.1.- Funciones Trigonométricas. Sin(x), Sinh(x), Cos(x), Cosh(x), Tan(x), Tanh(x)
Asin(x), Acos(x), Atan(x), Atan2(x, y), Log(x), Log10(x), Sqrt(x), Exp(x),
Pow(x, y), fabs(x).
4.1.1.- Ejemplo #30. Cálculo del seno de un valor x.
4.1.2.- Ejemplo #31. Cálculo del coseno de un valor x.
4.1.3.- Ejemplo #32. Cálculo de la tangente de un valor x.
4.1.4.- Ejemplo #33. Calculadora.
Capítulo V. Librería Sound.
5.1.- Rutinas de la librería de sonido de mikroBasic. Cálculos de frecuencias de la
escala musical.
5.1.1.- Ejemplo #34. Reproduce las notas de la escala musical en la octava A4,
y muestra las frecuencias a través de la pantalla LCD.
5.1.2.- Ejemplo #35. Elaboración de un piano de una octava musical.
Capítulo VI. Teclado Matricial y Teclado PS/2.
6.1.- Teclado Matricial.
6.2.- Librería KeyPad.
6.2.1.- Rutina KeyPad_Init().
6.2.2.- Rutina KeyPad_Key_Press().
6.2.2.1.- Ejemplo #36. Lectura de un teclado matricial.
6.2.2.2.- Ejemplo #37. Como enmascarar el resultado de la lectura
del teclado matricial.
6.3.- Teclado PS/2.
6.4.- Librería PS/2.
6.4.1.- Rutina Ps2_Config().
6.4.2.- Rutina Ps2_Key_Read().
6.4.2.1.- Ejemplo #38. Lectura de un teclado PS/2.
6.4.2.2.- Ejemplo #39. Lectura de teclas de funciones especiales.
6.4.2.3.- Ejemplo #40. Mostrar símbolo ASCII y valor correspondiente
a una tecla presionada.
v
Capítulo VII. Memoria de Datos EEPROM.
7.1.- Memoria de datos EEPROM.
7.2.- Librería EEPROM.
7.1.1.- Rutina EEPROM_Read().
7.2.2.- Rutina EEPROM_Write().
7.2.2.1.- Ejemplo #41. Sistema de control de acceso con clave de 6
dígitos almacenada en la memoria EEPROM.
7.2.2.2.- Ejemplo #42. Sistema de control de acceso mejorado. Se
permite el cambio de clave desde el teclado.
Capítulo VIII. Conversor A/D.
8.1.- El conversor A/D.
8.1.1.- El registro ADCON0.
8.1.2.- El registro ADCON1.
8.1.3.- Ejemplo #43. Conversión A/D de una señal analógica.
8.1.4.- Ejemplo #44. Conversión A/D con voltaje de referencia.
8.1.5.- Ejemplo #45. Conversión A/D, datos adicionales en la pantalla.
8.2.- El Acelerómetro.
8.2.1.- Ejemplo #46. Acelerómetro 3D, conversión A/D de datos en los
ejes X, Y, Z.
8.2.2.- Cálculo del voltaje de entrada del conversor A/D.
8.2.3.- Cálculo de la aceleración en base al voltaje calculado en cada eje.
8.2.4.- Ejemplo #47. Visualizar voltaje y aceleración calculada en la GLCD.
8.3.- Termocupla.
8.3.1.- AD594/AD595, cálculo de la linealidad.
8.3.2.- Ejemplo #48. Termómetro digital con termocupla tipo J.
Capítulo IX. Comunicación Serial Asíncrona RS232.
9.1.- Comunicación Serial Asíncrona RS232.
9.2.- Librería UART.
9.2.1.- Rutina UART1_Init().
9.2.2.- Rutina UART1_Data_Ready().
vi
9.2.3.- Rutina UART1_Read().
9.2.4.- Ejemplo #49. Recepción de datos vía RS232.
9.2.5.- Ejemplo #50. Almacenar y visualizar una cadena de caracteres.
9.2.6.- Rutina UART1_Write().
9.2.7.- Ejemplo #51. Transmisión y recepción de datos vía RS232.
9.3.- ¿Cómo extraer información específica de una cadena de datos?.
9.3.1.- Ejemplo #52. Extraer información de una cadena de datos.
9.4.- Módulo de comunicaciones BlueTooth.
9.4.1.- Widcomm BlueTooth Software 5.0.1.3900.
9.4.2.- Comunicación Serial inalámbrica BlueTooth.
9.5.- Módulo GPS (OEM), comunicación serial RS232.
9.5.1.- Protocolo NMEA.
9.5.2.- Ejemplo #53. Extrae coordenadas geográficas y número de
satélites utilizador por el módulo GPS.
9.6.- Programación en Visual Basic 6.0 para ejemplos de comunicación serial
RS232.
9.6.1.- Ejemplo #54. Captura de datos enviados desde un módulo VB.
9.6.2.- Ejemplo #55. Captura de datos enviados desde un microcontrolador
a una hoja de cálculo de Microsoft Excel.
Capítulo X. Multi Media Card (MMC) y Secure Card (SD) Memory.
10.1.- Librería MMC/SD.
10.1.1.- Rutina Mmc_Init().
10.1.2.- Rutina Mmc_Read_Cid().
10.1.3.- Rutina Mmc_Read_Csd().
10.1.4.- Rutina Mmc_Write_Sector().
10.1.5.- Rutina Mmc_Read_Sector().
10.2.- Registro CID.
10.2.1.- Ejemplo #56. Lectura del registro CID en una memoria SD.
10.3.- Registro CSD Versión 2.0.
10.3.1.- Ejemplo #57. Lectura del registro CSD en una memoria SD.
vii
10.4.- WinHex.
10.4.1.- Ejemplo #58. Almacenamiento de datos en sectores específicos
de la memoria SD.
10.4.2.- Ejemplo #59. Lectura de datos de un sector específico.
10.5.- Sistema de archivos FAT.
10.5.1.- Rutina Mmc_Fat_Init().
10.5.2.- Rutina Mmc_Fat_QuickFormat().
10.5.3.- Ejemplo #60. Cómo dar formato a una tarjeta de memoria SD
desde el microcontrolador PIC.
10.5.4.- ¿Cómo crear un archivo en una tarjeta de memoria SD?.
10.5.5.- Rutina Mmc_Fat_Assign().
10.5.6.- Ejemplo #61. Crear un archivo .txt con atributo de sólo lectura.
10.5.7.- Ejemplo #62. Crear un archivo .txt con atributo de sólo lectura y
archivo oculto.
10.5.8.- Ejemplo #63. Crear un subdirectorio o carpeta.
10.5.9.- Ejemplo #64. Atributo “Archivo”.
10.6.- Ingresar datos en un archivo almacenado en la memoria SD.
10.6.1.- Ejemplo #65. Almacena cadena de caracteres enviada desde la
terminal de comunicaciones de mikroBasic vía RS232.
10.7.- Asignar fecha y hora a un archivo.
10.7.1.- Ejemplo #66. Asigna fecha y hora a un archivo.
10.8.- Verificar si un archivo de nombre específico existe.
10.8.1.- Ejemplo #67. Verifica si existe un archivo en la memoria SD.
10.9.- Insertar datos en un archivo existente.
10.9.1.- Ejemplo #68. Insertar cadena de datos en un archivo existente.
viii
Capítulo XI. Servomotores.
11.1.- ¿Qué es un Servomotor?.
11.1.1.- Ejemplo #69. Control de un servomotor.
11.1.2.- Ejemplo #70. Posiciones pre-definidas.
Capítulo XII. PWM.
12.1.- PWM.
12.2.- Librería PWM.
12.2.1.- Rutina PWM1_Init().
12.2.2.- Rutina PWM1_Set_Duty().
12.2.3.- Rutina PWM1_Start().
12.2.4.- Rutina PWM1_Stop().
12.2.5.- PWM2.
12.2.6.- Ejemplo #71. Genera señal PWM controlada.
12.2.7.- Ejemplo #72. Control de un Motor DC.
Apéndice A. Tabla ASCII.
Apéndice B. Prácticas en formato digital.
Bibliografía.
Prólogo
La segunda edición del libro “Basic para Microcontroladores PIC” esta basado en el estudio
del compilador mikroBasic Pro, de la empresa MikroElektronika. El contenido de esta obra
facilita un verdadero inicio rápido en la programación de microcontroladores PIC gracias a
una completa librería diseñada para el control de una gran variedad de periféricos,
facilitando el desarrollo de proyectos electrónicos a través de 72 ejemplos prácticos,
analizados y comentados detalladamente en base a los microcontroladores PIC16F877,
PIC18F442, PIC18F452 y PIC18F458.
La mayoría de los proyectos han sido desarrollados con la ayuda del entrenador de
microcontroladores “EasyPic5” de mikroElektronika, además de una serie de componentes
adicionales de fácil adquisición y bajo costo.
Al igual que en la primera edición, la metodología empleada ha sido orientada para que el
lector pueda expandir sus conocimientos para generar nuevas ideas en la implimentación de
este compilador sobre esta tecnología ya anteriormente estudiada. Esta obra es la primera
parte de un extenso estudio de mikroBasic, adaptado a nuestro idioma y pensado para
aquellas personas con conocimientos básicos en la programación de estos componentes.
Los puntos de estudios más importantes han sido el control de puertos, pantallas LCD y
GLCD, sonido, funciones trigonométricas, teclado matricial y PS/2, memoria de datos
EEPROM, conversor A/D, control de dispositivos como potenciómetros, acelerómetro 3D,
termocupla, comunicación serial RS-232, BlueTooth, módulos GPS, programación en Visual
Basic para control de puertos, multimedia card (MMC y SD), almacenamiento masivo de
datos, creación de archivos en formato FAT desde el microcontrolador PIC, servomotores y
PWM.
MikroBasic hace posible el desarrollo de nuevas ideas en muy poco tiempo, haciendo del
estudio de los microcontroladores un tema sencillo y accesible.
Christian Bodington Esteva
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
2
Capitulo I
1.1.- Herramientas de Diseño
En la elaboración de proyectos electrónicos con microcontroladores PIC, resulta muy
importante considerar una serie de herramientas que vamos a describir a continuación y las
cuales pueden ser proporcionadas en su gran mayoría por la empresa Mikroelektronika
(www.mikroe.com). Esta empresa se ha dado a la tarea de diseñar tanto el software de
programación para microcontroladores PIC, como el hardware necesario para poder
aprender todo lo relacionado al tema que a continuación estaremos abordando a través de
muchos ejemplos prácticos los cuales tienen una gran variedad de periféricos disponibles,
tales como pantallas LCD, GLCD, teclados matriciales, teclados PS/2, dispositivos de
comunicación serial, entre otros.
Software: para la programación en Lenguaje Basic, contamos con el Ambiente Integrado de
Desarrollo MikroBasic de MikroElektronika. Con esta herramienta estaremos realizando la
programación en cada uno de los proyectos propuestos a partir del capítulo II.
Figura 1.1 (Fuente: http://www.mikroe.com)
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
3
Programador de Microcontroladores PIC de MikroElektronika: es un programador de
la familia Flash de Microchip, de conexión universal USB, el cual puede ser acoplado
a una placa de circuito impreso la cual contiene todas las bases disponibles del tipo
DIP como lo demuestra la figura 1.2. También es posible hacer arreglos en nuestros
circuitos para dejar un puerto de conexión para el programador, y así poder realizar
cambios en nuestros programas sin retirar el microcontrolador de nuestros diseños.
Esta opción, denominada ICSP (In-Circuit Serial Programming), simplifica el trabajo a
la hora de reprogramar nuestros diseños.
Figura 1.2 (Fuente: http://www.mikroe.com)
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
4
Placa entrenadora de Mikroelektronika: una herramienta diseñada para trabajar en
conjunto con los compiladores de mikroElektronika, proporcionan diferentes módulos
interconectados entre ellos, facilitando la elaboración de prácticas con
microcontroladores. Estos entrenadores de microcontroladores además incorporan su
propio programador de microcontroladores PIC de conexión USB 2.0. El entrenador
recomendado en esta edición es el EasyPIC5.
Figura 1.3 (Fuente: http://www.mikroe.com/en/tools/easypic5)
Herramientas de corte, extractor de circuitos integrados, cable rígido para conexiones
en la placa de prototipos.
Figura 1.4
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
5
Osciloscopio: este instrumento se requiere para el desarrollo de algunas prácticas en
las cuales se hace necesario medir las señales generadas desde el microcontrolador.
Figura 1.5
Componentes electrónicos: microcontroladores PIC en los modelos definidos en cada
ejemplo práctico, resistencias, diodos, servomotores, condensadores, cristales y otros
componentes de fácil adquisición. Cada proyecto cuenta con una tabla en la cual se
describen los componentes electrónicos que deberán ser utilizados en el cada
montaje.
Figura 1.6
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
6
1.2.- Entorno de Desarrollo Integrado de mikroBasic.
MikroBasic cuenta con su propia interfaz de programación la cual podemos descargar de la
pagina oficial http://www.mikroe.com en su versión de demostración y con sus respectivas
limitaciones. Para obtener una versión completa de este compilador, será necesario efectuar
la compra on-line, la cual puede ser tangible o no tangible, es decir, para descargar on-line
una vez aprobada la compra, o para recibir en nuestros hogares en físico.
El link para la descarga es el siguiente:
http://www.mikroe.com/en/download/
Figura 1.7
El archivo descargado del link anteriormente mencionado luce como se muestra a
continuación:
Figura 1.8
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
7
Haciendo doble clic sobre el mismo, iniciamos el proceso de instalación del programa.
Figura 1.9
Figura 1.10
En la figura anterior podemos ver la ventana de bienvenida, y al hacer clic en siguiente, la
ventana del contrato de licencia para el usuario.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
8
Figura 1.11
Para poder continuar con la instalación, seleccionamos la opción de aceptación de los
términos explicados en el acuerdo de licencia, y seguidamente hacemos clic en “Next”.
A continuación veremos los componentes del programa disponibles para la instalación:
El compilador.
Los archivos de ayuda del compilador.
Ejemplos de programas desarrollados para los módulos del circuito entrenador
de Mikroelektronika.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
9
Figura 1.12
Al hacer clic en el botón “Next”, veremos la ruta de instalación por defecto del compilador en
nuestro PC.
Figura 1.13
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
10
Podemos dejar la ruta sugerida o podemos cambiarla según convenga. Al haber
seleccionado anteriormente todos los componentes en la instalación, podemos observar que
el espacio requerido se acerca a los 75 MB.
Ahora para iniciar la instalación, hacemos clic en el botón “Install”, acción con la cual
veremos el progreso de la instalación en nuestro disco, como lo demuestran las siguientes
imágenes:
Figura 1.14
Figura 1.15
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
11
Figura 1.16
Figura 1.17
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
12
Al hacer clic en el botón “Finish”, el programa de instalación nos preguntará si deseamos
instalar el soporte ICD (In-Circuit Debugger) de mikroBasic:
Figura 1.18
Figura 1.19
Al hacer clic en el botón “Si” veremos la ventana de bienvenida a la guía de instalación, y
seguidamente nos encontraremos con la ventana del acuerdo de licencia de programa.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
13
Figura 1.20
Seleccionamos la opción para la aceptación de la licencia y hacemos clic en el botón “Next”.
Un componente adicional a seleccionar es el software para el programador de
microcontroladores de mikroelektronika. Si ya poseemos el hardware correspondiente a este
software, seleccionamos la casilla para la instalación del software “PicFlash”.
Este programador viene integrado en las tarjetas entrenadoras, e incluso se vende por
separado en su versión USB.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
14
Figura 1.21
Haciendo clic en el botón “Next”, estaremos viendo la ruta de instalación por defecto o ruta
sugerida por el programa de instalación. Esta ruta se puede mantener igual o ser cambiada
según convenga al usuario.
Una vez seleccionada la ruta, hacemos clic en el botón “Install” y esperamos a que termine
el proceso de instalación como se muestra en las siguientes imágenes:
Figura 1.22
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
15
Figura 1.23
El siguiente paso será la instalación para el soporte Lv18PICFLASH:
Figura 1.24
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
16
Figura 1.25
Figura 1.26
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
17
Figura 1.27
Figura 1.28
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
18
Figura 1.29
También será necesaria la instalación de los drivers para el programador de
microcontroladores de mikroelektronika:
Figura 1.30
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
19
Figura 1.31
Terminada la instalación de drivers, la instalación de mikroBasic nos pregunta si deseamos
ejecutar el software inmediatamente. Al hacer clic en el botón “Si” podremos ver que la
interfaz de programación se abre y queda lista para iniciar a programar nuestros proyectos.
Inicialmente se podrá observar que la misma abre automáticamente un ejemplo de
programación en lenguaje Basic, “Led_Blinking.pbas”.
Figura 1.32
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
20
Figura 1.33
Figura 1.34
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
21
1.3.- Estructura de un programa: Para que nuestros programas tengan una apariencia
ordenada y se facilite la comprensión del mismo ante otros programadores que deseen
realizar mejoras a éste, es necesario establecer una estructura que nos permita identificar
fácilmente cada una de las partes que lo componen.
Figura 1.35
En la figura 1.35 se puede observar la estructura básica de un programa hecho en
mikroBasic, y en la cual hemos identificado las cuatro secciones que consideramos más
importantes para lograr un programa bien estructurado.
Sección A: Corresponde al encabezado del programa, en el cual siempre es conveniente
incorporar información básica del mismo, como el nombre, la identificación de autor,
Copyright, fecha de elaboración o fecha de los últimos cambios realizados, versión del
programa que se está realizando, e incluso una breve descripción acerca del objetivo del
programa y su aplicación en un determinado circuito electrónico.
Sección B: Esta sección empieza en la columna cero del editor de texto de mikroBasic, y en
ella se pueden declarar variables, sub-funciones, configuraciones de dispositivos periféricos
y etiquetas de cada una de las subrutinas que serán programadas.
Las etiquetas identifican puntos específicos o subrutinas dentro de un programa. Son
definidas por el programador y deben tener al final de cada una de ellas el símbolo de “dos
puntos”, que definen el final de la misma.
A
B C D
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
22
Sección C: Estará destinada para las instrucciones de programa y la misma está separada
de la columna cero del editor de texto por una tabulación, es decir, cuando el cursor se
encuentra en la columna cero, presionamos una vez la tecla “TAB”, y de esta manera
establecemos un espacio mínimo, siempre igual o superior entre la sección B y C.
Sección D: Esta destinada para realizar comentarios acerca de la función que estará
cumpliendo una instrucción específica en nuestro programa. Cada comentario debe
empezar siempre con una comilla simple como se muestra a continuación:
' Define el Oscilador para un Cristal
' de 4 Mhz.
Cuando un comentario es demasiado extenso, podemos continuar el mismo en la siguiente
línea, siempre que la frase comience con su respectiva comilla.
Los comentarios ayudan al diseñador a identificar cada línea de programa o cada una de las
funciones de cada subrutina, garantizando así una buena documentación en cada uno de
los programas que realizamos.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
23
1.4.- Crear un nuevo proyecto en mikroBasic:
Saber como crear un proyecto en mikroBasic es un paso sencillo pero muy importante, ya
que de ello depende que nuestros programas sean compilados correctamente.
Veamos a continuación los pasos a seguir:
Desplegamos el menú “Project” y seguidamente seleccionamos la opción “New
Project”. Enseguida veremos la ventana de bienvenida.
Figura 1.36
En el paso 1, seleccionamos la opción “Next” para pasar a la siguiente ventana en la
cual elegiremos el modelo de microcontrolador que deseamos utilizar en nuestro
proyecto.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
24
Figura 1.37
En el paso 2 debemos seleccionar el valor exacto del cristal que estaremos utilizando
como oscilador externo de nuestro microcontrolador PIC.
Figura 1.38
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
25
En el paso 3, debemos seleccionar la ruta sobre la cual deseamos grabar el proyecto,
al igual que el nombre del proyecto. Para esto, simplemente seleccionamos la carpeta
señalada en la figura 1.39, a través de la cual podremos acceder a cualquiera de las
unidades de almacenamiento en nuestro PC.
Figura 1.39
Figura 1.40
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
26
Figura 1.41
En el paso 4 es posible agregar a nuestros proyectos archivos que contengan código
creado con anterioridad, los cuales pudieran contener subrutinas generalizadas para
el control de periféricos comunes como pantallas LCD o teclados. En caso de no
disponer de ningún archivo adicional para el proyecto, simplemente continuamos
seleccionando la opción “Next”.
Figura 1.42
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
27
En el paso 5 tenemos la opción de incluir todas las librerías disponibles para el
microcontrolador anteriormente seleccionado en nuestro proyecto. También tenemos
la opción de no incluir ninguna de ellas. Esto se debe a que mikroBasic cuenta con
una amplia selección de librerías para el control de dispositivos periféricos o procesos
de cálculo o conversión de datos que nos permitirán hacer de la programación algo
fácil y rápida a la hora de diseñar un programa, pero no necesariamente
necesitaremos de todas las librerías en un solo proyecto. Si elegimos la opción
“Include All” podremos estar seguros de que cada librería empleada en nuestro
programa funcionará correctamente. Si elegimos la opción “Include None (Advance)”
tendremos que realizar la selección de las librerías que deseamos utilizar desde el
administrador de librerías de mikroBasic, el cual veremos mas adelante.
Figura 1.43
El paso 6 en la creación de un nuevo proyecto nos dice que hemos finalizado la
configuración del mismo. MikroBasic esta ahora listo para empezar a programar
nuestro primer proyecto, tal y como se puede observar en la figura 1.44.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
28
Figura 1.44
Figura 1.45
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
29
1.5.- Conociendo el entorno de desarrollo integrado.
MikroBasic cuenta con un entorno de desarrollo integrado bastante completo y apropiado.
En él podremos encontrar una serie de opciones y herramientas, de las cuales hemos
resaltado las que consideramos más importantes a la hora de elaborar un programa.
Figura 1.46
En la sección A, podemos encontrar las opciones del menú principal, además de todos los
accesos directos a cada funcion del software a través de pequeños botones ordenados y de
fácil acceso.
La sección B es el editor en el cual se escribirán los programas de cada proyecto bajo las
recomendaciones realizadas en punto 1.3 de este capítulo.
A
B
C
D
E
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
30
En la sección C se puede observar el administrador de librerías, el cual deberá ser tomado
en cuenta siempre que nuestros proyectos incluyan el uso de cualquiera de las librerías
disponibles en mikroBasic.
En la sección D se encuentra en explorador de código el cual resulta my útil cuando
realizamos programas muy extensos. En él se muestra cada elemento declarado en un
programa. Podremos acceder directamente a uno de estos elementos haciendo doble clic en
ellos.
La sección E muestra dos pestañas importantes. La primera pestaña se llama “Messages” o
“Mensajes”, contiene un área en la cual se mostrarán los resultados del procedimiento de
compilación de un programa. Si se genera un error de compilación, éste será mostrado en
esta ventana mostrando el tipo de error y su ubicación en la ventana de edición. La segunda
pestaña se llama “Quick Converter” y contiene una herramienta de conversión de unidades
en diferentes formatos.
Veamos a continuación la descripción de cada menú en la sección A de la imagen 1.46.
Menú “File”:
Figura 1.47
New Unit: Abre una nueva ventana de edición de programas para mikroBasic. En
esta ventana escribiremos el código de programa de nuestros proyectos.
Open: A través de esta opción podremos abrir cualquier archivo asociado a
nuestros proyectos de programación.
Recent Files: Al seleccionar esta opción, podremos ver una lista de nombres de los
archivos mas recientes en los cuales hemos estado trabajando.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
31
Save: Salva o guarda los cambios realizados en la ventana de programación.
Save As: Salva o guarda los cambios realizados en la ventana de programación
con un nombre o ruta diferente.
Close: Cierra la ventana de código activa.
Print Preview: Una vista previa de la ventana de código activa antes de la
impresión.
Print: Imprime la ventana de código Activa.
Exit: Cierra el entorno de programación de mikroBasic.
Menú “Edit”:
Figura 1.48
Undo: Deshace el último cambio en el editor.
Redo: Rehace el último cambio en el editor.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
32
Cut: Corta el texto seleccionado y lo coloca en el portapapeles.
Copy: Copia el texto seleccionado y lo coloca en el portapapeles.
Paste: Pega el contenido del portapapeles en el editor.
Delete: Borra el texto seleccionado.
Select All: Selecciona todo el texto en la ventana activa del editor.
Find: Despliega la ventana de búsqueda del editor de texto.
Find Next: Busca la siguiente coincidencia de texto en la ventana activa del
editor.
Find Previous: Busca la coincidencia anterior en la ventana activa del editor.
Replace: Reemplaza el texto especificado por el usuario en la ventana activa del
editor.
Find In Files: Busca un texto en la ventana o ventanas activas, e incluso de
alguna carpeta especificada por el usuario.
Goto Line: Va a la línea deseada en la ventana activa del editor.
Sub-Menú “Advanced”:
Figura 1.49
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
33
Comment: Convierte líneas de código de programa previamente seleccionadas en
comentarios. Si no hemos seleccionado ninguna línea de código, simplemente
aparece una comilla simple, asignando el resto de la línea como un espacio
disponible para realizar comentarios.
Uncomment: Remueve la propiedad de comentario de una o varias líneas
seleccionadas.
Indent: Aplica una tabulación o sangría al texto seleccionado.
Outdent: Elimina una tabulación o sangría al texto seleccionado.
Lowercase: Cambia todo el texto seleccionado a minúsculas.
Uppercase: Cambia todo el texto seleccionado a mayúsculas.
Titlecase: Cambia a mayúscula la primera letra del texto seleccionado.
Menú “View”:
Figura 1.50
Sub-Menú “Toolbars”: A través de este sub-menú podemos seleccionar cuales
herramientas estarán visibles o disponibles en la sección “A” del entorno de desarrollo
integrado.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
34
Figura 1.51
Sub-menú “Debug Windows”: A través de este sub-menú podemos seleccionar las
ventanas disponibles en el depurador de mikroBasic.
Figura 1.52
Routine List o Lista de Rutinas: Muestra la ventana en la cual podremos ver
una lista de todas las rutinas que hemos creado en un programa. Al hacer doble clic
sobre el nombre de la rutina, el editor posiciona el cursor al inicio de ésta.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
35
Figura 1.53
Project Settings: Despliega la ventana de configuración del proyecto, en la cual
podemos seleccionar el modelo de microcontrolador PIC que deseamos utilizar en
nuestro proyecto, la frecuencia o valor del cristal del oscilador externo, y por último las
opciones disponibles para la compilación y ventana de depuración de mikroBasic.
Figura 1.54
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
36
Code Explorer o Explorador de Código: Despliega la ventana del explorador de
código de mikroBasic.
Figura 1.55
Project Manager o Administrador de Proyectos: A través de esta ventana es
posible acceder a todo el contenido del proyecto.
Figura 1.56
Esta ventana posee además botones de acceso rápido a algunas funciones importantes:
o Salvar un grupo de proyectos: En mikroBasic es posible tener más de
un proyecto abierto en entorno de desarrollo integrado. Este botón nos
permitirá almacenar este grupo de proyectos bajo un único nombre. En la
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
37
siguiente figura se muestra un ejemplo de un grupo de proyectos disponibles
en la ventana de administración de proyectos.
Figura 1.57
Abrir un grupo de proyectos: A través de esta opción podremos abrir un
grupo de proyectos previamente creado.
Cerrar un Proyecto.
Cerrar un grupo de proyectos.
Agregar un proyecto al grupo de proyectos actual.
Eliminar un proyecto del grupo de proyectos actual.
Agregar un archivo al proyecto activo.
Eliminar un archivo del proyecto activo.
Compilar un proyecto.
Inicia el software de programación de microcontroladores PIC de
mikroElektronika.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
38
Library Manager o Administrador de Librerías: El administrador de librerías de
mikroBasic contiene todas las librerías disponibles para un microcontrolador
previamente seleccionado.
Figura 1.58
Actualiza el administrador de librerías.
Compila todas las librerías disponibles.
Incluye todas las librerías en un proyecto.
No incluye ninguna de las librerías en el proyecto.
Restaura el estado de las librerías justo antes de la última grabación del
proyecto.
Bookmarks o Marcadores: Esta opción despliega una ventana en la cual podremos
agregar accesos directos a puntos específicos en un programa. Al hacer doble clic en
alguno de estos accesos directos, el cursor se ubicará automáticamente en la línea o
dirección especificada.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
39
Figura 1.59
Quick Converter o Conversor rápido de datos: Despliega la ventana de conversión
de datos de mikroBasic.
Messages o Mensajes: Despliega la ventana de mensajes de error del compilador.
Macro Editor o Editor de Macros: Despliega una ventana en la cual podremos
grabar una secuencia de acciones sobre el entorno de desarrollo integrado, es decir,
podríamos grabar una secuencia de ordenes que nos permita por ejemplo abrir el
terminal de comunicaciones de mikroBasic y hacer que se conecte bajo ciertos
parámetros específicos con tan solo activar su Macro correspondiente.
Figura 1.60
Inicia el proceso de grabación en la secuencia de pulsaciones de teclas
sobre el entorno de desarrollo integrado de mikroBasic.
Detiene el proceso de grabación de la secuencia de pulsaciones de teclas.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
40
Permite ejecutar una Macro previamente grabada.
Crea un nuevo Macro.
Borra la Macro seleccionada.
Windows o Ventanas: A través de esta opción podremos ver un listado de todas las
ventanas desplegables en el entorno de desarrollo integrado de mikroBasic.
Menú “Project”:
Figura 1.61
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
41
Build: Compila el proyecto activo en el entorno de desarrollo de integrado.
Build All Projects: Compila todos los proyectos abiertos.
Build + Program: Compila y programa el proyecto activo.
View Assembly: Muestra el código generado en lenguaje ensamblador.
View Statistics: Muestra las estadísticas del proyecto activo.
View Listing: Muestra el listado de asignación de memoria del PIC: direcciones
de instrucciones, registros, las rutinas y las etiquetas.
Edit Search Paths: Edita rutas de búsqueda.
Clean Project Folder: Esta opción limpia o borra de la carpeta de proyecto los
archivos generados cuando se realiza la compilación del mismo.
Add File To Project: Permite agregar cualquier tipo de archivo relacionado a un
proyecto en desarrollo.
Remove File From Project: Borra un archivo específico de un proyecto.
Import Project: Permite importar proyectos de versiones anteriores de
mikroBasic.
New Project: Abre el asistente para la creación de nuevos proyectos.
Open Project: Abre un proyecto existente.
Save Project: Salva un proyecto activo en el entorno de desarrollo integrado.
Edit Project: Despliega una ventana a través de la cual podemos configurar los
fusibles de programación del microcontrolador.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
42
Figura 1.62
Open Project Group: Abrir un grupo de proyectos: A través de esta opción
podremos abrir un grupo de proyectos previamente creado.
Close Project Group: Cerrar un grupo de proyectos.
Save Project As: Permite salvar un proyecto con un nombre diferente.
Recent Projects: Muestra un listado de los proyectos abiertos últimamente.
Close Project: Cierra un proyecto activo.
Menú “Run”: Contiene todos los comandos relacionados con el depurador de mikroBasic.
Figura 1.63
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
43
Menú “Tools”: Contiene todas las herramientas disponibles en mikroBasic.
Figura 1.64
Menú “Help”: A través de este menú podremos acceder a toda la ayuda disponible acerca
del compilador, accesos directos al foro de discusión, página Web oficial de
mikroElektronika, formulario de registro del compilador e información de registro actual.
Figura 1.65
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
44
Nota Importante: En la versión DEMO del compilador mikroBasic, el archivo de salida .HEX
generado cuando compilamos un programa esta limitado a 2K bytes.
Es muy importante que adquiera la licencia correspondiente para la versión completa del
compilador, para poder llevar a cabo todos los ejemplos propuestos en esta edición.
La licencia es suministrada en línea por la empresa “MikroElektronika” y el proceso de
registro es sumamente sencillo. Tener la licencia del compilador nos garantiza además el
acceso al soporte técnico de la empresa y el acceso a las continuas actualizaciones que se
realizan para mejorar el producto.
Figura 1.66
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
45
1.6.- Componentes y operadores en mikroBasic.
1.6.1.- Subrutinas: Una subrutina se presenta como un algoritmo separado del algoritmo
principal, y estará destinado a resolver una tarea específica. Las subrutinas pueden ser
referidas cada vez que sea necesario, llamando a la etiqueta que corresponde a ésta, la cual
debe ir siempre al inicio de la misma.
Led1:
For Z = 0 To 9
LED = Encendido
Delay_ms(1000)
LED = Apagado
Delay_ms(1000)
Next Z
GoTo Inicio
End.
MikroBasic cuenta con una serie de herramientas de programación entre las cuales
podemos mencionar las etiquetas, variables, identificadores, constantes, comentarios y
símbolos entre otras.
Algunas de estas herramientas son de uso obligatorio a la hora de realizar un programa, y
otras que no son de uso obligatorio, nos facilitarán el trabajo considerablemente.
1.6.2.- Variables: En las variables podemos almacenar datos temporalmente, los cuales
podrán ser consultados o modificados cada vez que sea necesario. Normalmente la
definición de variables se hace al inicio de un programa y para ello se utiliza el formato:
DIM “variable” As “tipo de variable”
Tipo de Variable Tamaño Rango
bit 1–bit 0 or 1
sbit 1–bit 0 or 1
byte, char 8–bit 0 .. 255
short 8–bit -127 .. 128
word 16–bit 0 .. 65535
integer 16–bit -32768 .. 32767
longword 32–bit 0 .. 4294967295
longint 32–bit -2147483648 .. 2147483647
float 32–bit ±1.17549435082 * 10-38
.. ±6.80564774407 * 1038
Figura 1.67
El nombre de la variable es elegido por el programador y el tipo de variable se define según
el tipo de dato que se desea almacenar temporalmente.
Subrutina
Etiqueta
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
46
1.6.3.- Arrays: Las variables Arrays tienen un determinado número de “elementos”, definido
según el tamaño de la variable. Las variables Arrays tipo Bit, pueden almacenar 256
elementos; las variables Arrays tipo Byte pueden almacenar hasta 96 elementos y las
variables Arrays tipo Word hasta 48 elementos, los cuales se pueden accesar en cualquiera
de los tres casos a través de un índice. Este índice se específica entre corchetes como se
muestra en los siguientes ejemplos:
Para declarar una variable tipo Array utilizamos la siguiente sintaxis:
Dim Variable As Byte[7]
El primer elemento de esta variable es Dato[0] y el último elemento es Dato[7], lo cual
significa que hemos declarado una variable array de 8 elementos. En este caso podemos
almacenar un byte en cada elemento, siempre que especifiquemos el índice.
Ejemplo: Almacenar en cada elemento de la variable “Dato” los valores 200, 15, 56, 75, 80,
20, 33, 45.
Dato[0] = 200
Dato[1] = 15
Dato[2] = 56
Dato[3] = 75
Dato[4] = 80
Dato[5] = 20
Dato[6] = 33
Dato[7] = 45
En algunos casos se debe verificar la hoja de datos del microcontrolador, ya que la cantidad
de elementos que se pueden almacenar en variables Arrays tipo Byte o Word puede variar
según el modelo del mismo.
1.6.4.- Constantes: Ayudan a identificar un valor constante en nuestro programa, facilitando
aún más la comprensión del mismo a la hora de verificar su funcionamiento. Las constantes
deben ser siempre declaradas al inicio de un programa, junto con las variables (área de
declaración).
La sintaxis para declarar una constante es la siguiente:
Const “nombre de la constante” As “tipo” = “Valor”
Ejemplo:
Const PI As Float = 3.1416
Const Meses As Byte[12] = (31,28,31,30,31,30,31,31,30,31,30,31)
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
47
1.6.5.- Alias: Proveen un nombre único y específico a elementos o variables dentro de
nuestro programa. Para definir un símbolo, utilizamos la palabra “Symbol”, seguida del alias
del elemento, el símbolo de igualdad “=”, y por último el elemento en cuestión:
Symbol {alias} = {elemento}
Por ejemplo, si deseamos controlar un motor DC a través de uno de los pines del puerto A
de un microcontrolador, resultaría mucho mas sencillo referirse a este pin como “Motor”, en
vez de referirse a él como “PortA.0”.
Entonces,
Symbol Motor = PORTA.0
Veamos otros ejemplos:
Symbol Relay = PORTB.0
Symbol Sensor = PORTA.0
Symbol LED = PORTA.1
Symbol RC0 = PORTC.0
1.6.6.- Operadores Aritméticos: Entre los operadores aritméticos más utilizados tenemos
los que se muestran en la siguiente tabla:
Operadores Operación Operandos Resultado
+ Suma
byte, short, word, integer,
longint, longword, float
byte, short, word, integer,
longint, longword, float
- Resta
byte, short, word, integer,
longint, longword, float
byte, short, word, integer,
longint, longword, float
* multiplicación
byte, short, word, integer,
longint, longword, float
word, integer, longint,
longword, float
/ División, en punto flotante.
byte, short, word, integer,
longint, longword, float
float
div
División, redondea hacia el
entero mas cercano.
byte, short, word, integer,
longint, longword
byte, short, word, integer,
longint, longword
mod
módulo, devuelve el resto de
la división entera (no se
puede utilizar con punto
flotante)
byte, short, word, integer,
longint, longword
byte, short, word, integer,
longint, longword
Figura 1.68
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
48
1.6.7.- Operadores Bit a Bit: En la siguiente tabla veremos los operadores binarios
proporcionados para el lenguaje Basic:
Operador Operación
and AND Lógico
or OR Lógico
xor OR Exclusiva (XOR)
not NOT Lógico
Figura 1.69
Con estos operadores resulta muy sencillo realizar operaciones binarias, como lo demuestra
el siguiente ejemplo:
Si aplicamos una AND lógica, donde deseamos filtrar los siete bits más significativos del
valor almacenado en la siguiente variable:
Var1 = %00101001
Entonces,
Var1 = Var1 and %00000001
El resultado de esta operación es Var1 = %00000001
1.6.8.- Operadores de Comparación: Los operadores de comparación normalmente son
utilizados con la instrucción If…Them… para realizar comparaciones entre variables o datos
extraídos de alguna operación aritmética.
Operador Operación
= Igual
<> Diferente
> Mayor que
< Menor que
>= Mayor o Igual que
<= Menor o Igual que
Figura 1.70
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
49
Capitulo II
2.1.- Arquitectura básica del microcontrolador PIC16F877.
Para iniciar con el estudio de la programación en mikroBasic, nos plantearemos tres
objetivos que consideramos importantes para entrar en materia:
Familiarizarse con la arquitectura básica de los microcontroladores que estaremos
empleando a lo largo de esta edición.
Familiarizarse con la estructura de programa de mikroBasic, muy importante a la hora
de realizar un programa ordenado y libre de errores, por muy pequeño que este sea.
El estudio de las primeras prácticas, cortas y de fácil comprensión con el fin de
adquirir confianza en el uso de instrucciones y librerías de mikroBasic.
Arquitectura Básica del microcontrolador PIC16F877:
Uno de los microcontroladores seleccionados para el estudio de la programación de
microcontroladores en lenguaje Basic ha sido el PIC16F877. Veamos a continuación
algunas de sus características técnicas más importantes:
CPU: Risc (Reduced Instruction Set Computer).
Frecuencia Máxima: 20 Mhz.
Memoria RAM: 368 x 8 Bytes de memoria de Datos.
EEPROM: 256 x 8 Bytes de memoria EEPROM de datos.
Memoria de programa Flash: 8KB x 14 Bits.
Protección de código programable.
Voltaje de Operación: 2.0 voltios a 5.5 voltios.
Bajo consumo de potencia: < 0.6 mA typical @ 3V, 4 Mhz /
kHz.
5 puertos digitales programables como entrada/salida: A, B, C, D, E.
1 conversor A/D de 8 canales x 10 Bits.
Puerto Serial Síncrono (SSP) con SPI e I2C.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
50
Puerto Serial Universal (USART/SCI).
2 Módulos CCP (Capture, Compare, PWM)
3 Timers: Timer0 8 Bits contador/temporizador y pre-escalador de 8 Bits; Timer1 16
Bits contador/temporizador y pre-escalador; Timer2 8 Bits contador/temporizador con
registro de 8 Bits, pre-escalador y Post-Escalador.
Figura 2.1
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
51
Descripción de los pines del microcontrolador PIC16F877:
PIN Identificación Descripción del Pin
1 MCLR/Vpp Reset y entrada de voltaje de programación.
2 RA0/AN0 Pin de Entrada/Salida (I/O) del puerto A
3 RA1/AN1 Pin de Entrada/Salida (I/O) del puerto A
4 RA2/AN2/Vref- Pin de Entrada/Salida (I/O) del puerto A
5 RA3/AN3/Vref+ Pin de Entrada/Salida (I/O) del puerto A
6 RA4/TOCKI Pin de Entrada/Salida (I/O) del puerto A
7 RA5/AN4/SS Pin de Entrada/Salida (I/O) del puerto A
8 RE0/RD/AN5 Pin de Entrada/Salida (I/O) del puerto E
9 RE1/WR/AN6 Pin de Entrada/Salida (I/O) del puerto E
10 RE2/CS/AN7 Pin de Entrada/Salida (I/O) del puerto E
11 VDD Pin de Alimentación de 5Vdc
12 VSS Pin de Alimentación a Tierra (GND)
13 OCS2/CLKOUT Salida del oscilador a cristal.
14 OSC1/CLKIN Entrada del oscilador a cristal o fuente externa de reloj.
15 RC0/T1OSO/T1CKI Pin de Entrada/Salida (I/O) del puerto C
16 RC1/T1OSI/CCP2 Pin de Entrada/Salida (I/O) del puerto C
17 RC2/CCP1 Pin de Entrada/Salida (I/O) del puerto C
18 RC3/SCK/SCL Pin de Entrada/Salida (I/O) del puerto C
19 RD0/PSP0 Pin de Entrada/Salida (I/O) del puerto D
20 RD1/PSP1 Pin de Entrada/Salida (I/O) del puerto D
21 RD2/PSP2 Pin de Entrada/Salida (I/O) del puerto D
22 RD3/PSP3 Pin de Entrada/Salida (I/O) del puerto D
23 RC4/SDI/SDA Pin de Entrada/Salida (I/O) del puerto C
24 RC5/SDO Pin de Entrada/Salida (I/O) del puerto C
25 RC6/TX/CK Pin de Entrada/Salida (I/O) del puerto C
26 RC7/RX/DT Pin de Entrada/Salida (I/O) del puerto C
27 RD4/PSP4 Pin de Entrada/Salida (I/O) del puerto D
28 RD5/PSP5 Pin de Entrada/Salida (I/O) del puerto D
29 RD6/PSP6 Pin de Entrada/Salida (I/O) del puerto D
30 RD7/PSP7 Pin de Entrada/Salida (I/O) del puerto D
31 VSS Pin de Alimentación a Tierra (GND)
32 VDD Pin de Alimentación de 5Vdc
33 RB0/INT Pin de Entrada/Salida (I/O) del puerto B
34 RB1 Pin de Entrada/Salida (I/O) del puerto B
35 RB2 Pin de Entrada/Salida (I/O) del puerto B
36 RB3/PGM Pin de Entrada/Salida (I/O) del puerto B
37 RB4 Pin de Entrada/Salida (I/O) del puerto B
38 RB5 Pin de Entrada/Salida (I/O) del puerto B
39 RB6/PGC Pin de Entrada/Salida (I/O) del puerto B
40 RB7/PGD Pin de Entrada/Salida (I/O) del puerto B
Figura 2.2
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
52
2.2.- El Oscilador externo.
Figura 2.3
Es un circuito indispensable para el funcionamiento del microcontrolador y el cual además,
define la velocidad a la cual va a trabajar. Para hacer funcionar nuestro diseño podemos
elegir entre las siguientes cuatro opciones:
Oscilador LP: Oscilador de bajo consumo (Low Power).
Oscilador XT: Cristal / Resonador.
Oscilador HS: Oscilador de alta velocidad (High Speed).
Oscilador RC: Resistencia / Condensador.
En los modos de oscilador LP, XT y HS el cristal debe ser conectado a los pines 13 y 14,
Osc2/CLKin y Osc1/CLKout respectivamente, como se muestra en la figura 2.4.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
53
Los valores de los condensadores cerámicos vienen dados según la tabla que se muestra a
continuación:
Modo Frecuencia Osc1/CLKin Osc2/CLKout
LP
32 kHz
200 kHz
68 - 100 pF
15 - 33 pF
68 - 100 pF
15 - 33 pF
XT
2 MHz
4 MHz
15 - 33 pF
15 - 33 pF
15 - 33 pF
15 - 33 pF
HS
4 MHz
10 MHz
15 - 33 pF
15 - 33 pF
15 - 33 pF
15 - 33 pF
Figura 2.4
Por ejemplo, para un oscilador tipo XT, podemos utilizar un cristal de cuarzo como el de la
figura 2.5.
Figura 2.5
Al conectar el microcontrolador a la fuente de alimentación de 5 Vdc y medir la señal de
salida del oscilador XT con un osciloscopio, en el pin 14 (Osc2/CLKout) del
microcontrolador, podremos ver la onda generada bajo los siguientes parámetros de
medición seleccionados en el equipo:
Voltios/Div: 200mV
Time/Div: 100ns
Figura 2.6
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
54
La lectura de la frecuencia y período en este caso sería la siguiente:
Frecuencia: 3,972 Mhz
Período: 251,71 ns
Cristal de cuarzo TTL: Este tipo de cristal consta de cuatro pines, de los cuales solo tres
están implementados de la siguiente manera:
Figura 2.7
Pin 1: NC (Este pin no se encuentra conectado internamente)
Pin 7: GND
Pin 8: Salida TTL
Pin 14: +5Vdc
En su salida se obtiene un tren de pulsos como se puede observar en la figura 2.8, bajo los
siguientes parámetros de medición seleccionados en un osciloscopio:
Voltios/Div: 2V
Time/Div: 100ns
Figura 2.8
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
55
La lectura de la frecuencia y período en este caso sería la siguiente:
Frecuencia: 3,999 Mhz
Período: 250,013 ns
El oscilador externo en modo RC resulta ser el más sencillo de todos y por ende el más
económico. Su configuración lo hace menos preciso debido a que existe una tolerancia de
error en sus componentes, sin olvidar también que la temperatura puede afectar la
operación de este tipo de oscilador.
Los valores recomendados para este oscilador son los siguientes:
5 Kohm
C1 > 20 pF
Figura 2.9
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
56
2.3.- Circuito de Reset: El Pin denominado MCLR (Master Clear), siempre debe ser tomado
en cuenta cuando se diseña un circuito con microcontroladores PIC. A través de este Pin se
podrá reiniciar el dispositivo, si a éste se le aplica un nivel lógico bajo (0V), por lo tanto
resulta importante destacar que para que un programa cargado en un microcontrolador se
mantenga en ejecución, el Pin MCLR debe estar siempre en un nivel lógico alto (5V).
Si deseamos tener control externo del reset de un microcontrolador PIC, debemos
considerar el circuito de la figura 2.10:
Figura 2.10
Este circuito permite reiniciar el microcontrolador cada vez que el pulsador de “Reset” es
presionado.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
57
2.4.- Consideraciones técnicas de diseño.
A continuación veremos algunos circuitos básicos que deben ser tomados en cuenta para el
desarrollo de prácticas con microcontroladores PIC. Estos circuitos son muy útiles cuando
deseamos visualizar el resultado de una acción programada en el microcontrolador.
2.4.1.- Estado Lógico de un pin I/O.
Una manera muy sencilla de ver el estado lógico de un pin configurado como salida en
cualquiera de los puertos de microcontrolador es a través del uso de Leds, como se observa
en los circuitos de la figura 3.11.
En el circuito, el Led “D1” se iluminará solo cuando el estado lógico del pin de salida del
puerto (RB1) sea igual a “1”, es decir, 5 voltios.
El Led “D2” se iluminará solo cuando el estado lógico de la salida del puerto (RB0) sea igual
a “0”, es decir, 0 voltios.
Figura 2.11
Esto significa que si deseamos realizar un programa en mikroBasic encargado de cambiar el
estado lógico de un pin específico, en cualquiera de los puertos de un microcontrolador, una
forma “básica” de visualizar este cambio es a través del uso de Leds.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
58
2.4.2.- Lectura de un estado lógico en un pin I/O:
El microcontrolador también nos permite capturar datos o señales externas para luego ser
procesadas y convertidas en respuestas que pueden definir una acción específica en
nuestros circuitos de prueba. Un ejemplo común podría ser el uso de un pulsador para hacer
destellar un led cada vez que éste sea presionado.
Si deseamos introducir un nivel lógico bajo (0V), o alto (5V), a una de las entradas de un
microcontrolador a través de un pulsador, podríamos considerar los circuitos de la figura
2.12, los cuales nos proporcionan dos formas diferentes de hacerlo:
Figura 2.12
El primer circuito en la figura 2.12 mantiene un nivel lógico alto (5V) mientras el pulsador
permanece abierto. Al presionar el pulsador, el nivel lógico en el pin I/O del puerto pasa a
ser bajo (0V).
El segundo circuito de la figura 2.12 mantiene un nivel lógico bajo (0V) mientras el pulsador
permanece abierto. Al presionar el pulsador, el nivel lógico en el pin I/O del puerto pasa a
ser alto (5V).
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
59
2.4.3.- El Opto-acoplador como dispositivo de enlace:
El opto-acoplador es un componente muy útil cuando se requiere acoplar circuitos
electrónicos digitales con etapas de manejo de potencia o con otros circuitos.
Este componente en una de sus versiones, se compone básicamente de un diodo LED el
cual se encarga de iluminar un fototransistor, para que éste conduzca corriente a través del
colector.
Figura 2.13
En la configuración de la figura 2.13, cuando en el pin I/O aplicamos un 1 lógico (5V), el LED
del opto-acoplador enciende y el fototransistor conduce la corriente a tierra; por lo tanto, en
la salida tendremos un 0 lógico (0V).
Si apagamos el LED, el transistor no conduce, de tal manera que en la salida tendremos un
1 lógico (5V).
En la configuración de la figura 2.14, cuando en el pin I/O aplicamos un 1 lógico (5V), el LED
del opto-acoplador enciende y el fototransistor conduce para poner en la salida un 1 lógico
(5V). Mientras haya un 0 lógico en la entrada, el fototransistor permanecerá abierto entre el
emisor y colector, dando como resultado un 0 lógico (0V) en la salida.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
60
Figura 2.14
Una configuración muy común para el control de dispositivos de potencia como motores
eléctricos, luces incandescentes, solenoides, etc., se puede ver en la figura 2.15, la cual se
basa en cualquiera de los dos circuitos antes mencionados (figura 2.13 y figura2.14), en la
cual se ha incluido un relé a través del cual circulará la corriente necesaria entre sus
contactos, para hacer funcionar cualquiera de estos dispositivos de potencia.
Figura 2.15
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
61
2.4.4.- Fuente de poder, 5Vdc / 3.3Vdc:
En caso de no disponer de una fuente de poder regulada, proponemos la construcción de un
diseño sencillo que podemos implementar en todos los proyectos propuestos. En la figura
2.16 se puede observar el diseño de una fuente regulada con salidas de voltaje de +5 Vdc y
+3.3 Vdc:
Figura 2.16
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
62
2.5.- Configuración de Puertos como Entrada o Salida en un microcontrolador PIC.
Como los pines de los puertos pueden ser configurados como “entradas” o como “salidas”,
es importante tomar en cuenta los registros de configuración de puertos, los cuales para el
caso específico del PIC16F877 son cinco:
TrisA (registro de configuración I/O del puerto A), es un registro de 8 bits, encargado de
determinar cual de los pines del puerto “A” será “entrada” o “salida”. Los tres Bits más
significativos de este registro no se encuentran implementados para este modelo de
microcontrolador, como se puede observar en el diagrama de pines del dispositivo (figura
2.17). En este caso, el puerto “A” solo cuenta con 5 pines I/O (RA0, RA1, RA2, RA3 y RA4).
Para determinar si uno de los pines de un puerto será “entrada” o “salida”, es importante
conocer la siguiente regla, la cual aplica para todos los modelos de microcontroladores PIC
en los cuales estaremos trabajando:
Si configuramos un Bit de un registro TRIS con un “1”, el pin del puerto
correspondiente a este Bit se comportará como una “entrada”.
Si configuramos un Bit de un registro TRIS con un “0”, el pin del puerto
correspondiente a este Bit se comportará como una “salida”.
Esto significa que si deseáramos configurar el Pin RA0 del puerto “A” como una “salida”,
tendremos entonces que poner un “0” en el Bit 0 del registro “TRISA”
Un ejemplo de configuración de los pines I/O del puerto A es el siguiente:
1 1 1 1 0
RA4 RA3 RA2 RA1 RA0
Registro TrisA
Figura 2.17
Al ver la figura 2.17, se puede observar que el pin RA0 ha sido configurado como salida y el
resto de los pines como entrada.
En mikroBasic, expresar este paso en forma de código es muy sencillo:
TrisA = %11110 (“%” para expresar la configuración en Binario), ó:
TrisA = $1E (”$” para expresar la configuración en Hexadecimal)
Bit menos
significativo
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
63
Esto significa que el puerto A se comportará de la siguiente forma:
RA0 = salida.
RA1 a RA4 = entradas.
TrisB, es un registro de 8 bits en el cual se configuran los pines del puerto B, ya sea como
entrada o como salida, por ejemplo:
1 1 1 1 1 1 1 0
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
Registro TrisB
Figura 2.18
1 = Entrada (Al configurar un bit del registro TrisB en “1”, éste se comporta como entrada).
0 = Salida (Al configurar un bit del registro TrisB en “0”, éste se comporta como salida).
Para el caso particular del puerto B, se puede observar que el pin RB0 ha sido configurado
como salida en este ejemplo, y el resto de los pines como entrada.
“Consideramos importante configurar los pines que no estarán en uso como entrada, ya que
de esta forma podemos evitar daños en el hardware interno del microcontrolador en caso de
una conexión errónea al experimentar con éste en un tablero de pruebas.”
La configuración en mikroBasic en forma de código de programa en este caso sería:
TrisB = %11111110 (si se desea hacer la notación en binario), ó:
TrisB = $FE (si se desea hacer la notación en hexadecimal)
En este caso podemos determinar que el puerto “B” se comportará de la siguiente forma:
RB0 = Salida.
RB1 a RB7 = Entradas.
El mismo caso aplica para los registros de configuración de los puertos C, D y E. Sus
registros de configuración TRISC, TRISD y TRISE deberán ser siempre configurados para
determinar su función dentro de un proyecto electrónico.
Bit menos
significativo
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
64
2.6.- Primeros ejemplos de programación en mikroBasic:
2.6.1.- Ejemplo de programación #1: Un ejemplo sencillo para determinar que hemos
iniciado de forma correcta todo lo referente a la configuración de un nuevo proyecto en
mikroBasic, es intentar realizar el encendido de uno o dos Leds a través de uno de los
puertos disponibles en el microcontrolador. Normalmente los pasos que vamos a realizar
para lograr este objetivo son los pasos básicos para realizar el resto de nuestros proyectos.
Estos pasos serán descritos a continuación y el programa para el encendido de dos Leds
estará basado en el diagrama esquemático de la figura 2.19.
Figura 2.19
Dos puntos importantes a considerar sobre este diagrama esquemático son:
El Led “D1” tiene su “ánodo” conectado al pin RB1 del puerto “B”, por lo tanto el Led
sólo encenderá cuando RB1 = 1.
El Led “D2” tiene su “cátodo” conectado al pin RB0 del puerto “B”, por lo tanto el Led
sólo encenderá cuando RB0 = 0
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
65
Empecemos con la creación de un nuevo proyecto, siguiendo los pasos comentados en la
sección “Crear un nuevo proyecto en mikroBasic”.
Una vez creado el proyecto podremos ver en el entorno de desarrollo integrado de
mikroBasic la siguiente ventana de programación:
Figura 2.20
Nótese que en la ventana de programación mikroBasic ha generado automáticamente una
pequeña estructura de programa que nos servirá de guía para comenzar a programar. En
este caso, lo primero que vamos a agregar será la línea de configuración del puerto “B”, ya
que en él hemos conectado los Leds que deseamos encender. Para determinar la palabra
de configuración del registro TRISB, veamos la siguiente figura:
1 1 1 1 1 1 0 0
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
Registro TrisB
Figura 2.21
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
66
TRISB = %11111100
Agregamos esta línea en la estructura del programa:
program Ejemplo1
' Area de declaración.
main: ' Programa Principal
TRISB = %11111100 ' Configuración del Puerto "B"
End.
Este paso se verá de la siguiente manera en la pantalla de nuestro PC:
Figura 2.22
El siguiente paso será hacer que los Leds enciendan. Para esto es posible especificar el
estado de un pin determinado del puerto “B” de la siguiente forma:
Para referirnos al Pin RB0: PortB.0 = (estado deseado del pin).
Para referirnos al Pin RB1: PortB.1 = (estado deseado del pin).
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
67
Veamos:
program Ejemplo1
' Area de declaración.
main: ' Programa Principal
TRISB = %11111100 ' Configuración del Puerto "B"
PORTB.0 = 1 ' El Led D2 enciende con un "0".
PORTB.1 = 1 ' El Led D1 enciende con un "1".
End.
Figura 2.23
Por último y para verificar que todo funciona según lo esperado, compilamos el programa a
través del acceso directo “Build” en la barra de herramientas:
Build
Si el programa no tiene errores, podremos ver en la ventana de errores que el resultado de
compilar el programa ha sido satisfactorio:
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
68
Figura 2.24
Este resultado significa que el compilador ha creado además el archivo de extensión .hex el
cual utilizaremos para grabar el microcontrolador y de esta forma poder verificar el correcto
funcionamiento del programa sobre el circuito.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
69
2.6.2.- Ejemplo de programación #2: En este ejemplo hemos cambiado el conexionado de
los Leds y hemos incluido dos pulsadores. P1 está conectado entre Vcc y una resistencia
“Pull Down” al igual que P2. El estado de los pulsadores será medido a través de los pines
RD0 y RD1 del puerto “D”.
Esto significa que debemos configurar los pines RD0 y RD1 como entradas a través de
registro TRISD, para poder tomar lectura del estado en el cual se encuentran, de tal forma
que podamos tomar una decisión y generar una salida en los pines RB0 y RB1.
Es importante observar que cuando los dos pulsadores se encuentran normalmente
abiertos, el estado de los pines es el siguiente:
RD0 = 0
RD1 = 0
Al presionar cada pulsador, el estado en estos pines cambia:
RD0 = 1
RD1 = 1
Figura 2.25
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
70
El objetivo del programa que haremos a continuación será encender los Leds de forma
individual asignando a cada uno de ellos un pulsador. Al encender uno de estos Leds, éste
deberá permanecer encendido durante 2 segundos.
El Led D1, enciende cuando presionamos el pulsador P1.
El Led D2, enciende cuando presionamos el pulsador P2.
Analicemos el siguiente programa leyendo detenidamente cada línea de código y sus
respectivos comentarios:
program Ejemplo2
' Area de declaración.
main: ' Programa Principal.
TRISB = %11111100 ' Configuración del Puerto "B"
TRISD = %11111111 ' Configuración del Puerto "D"
PORTB.0 = 0 ' Inicializamos el pin RB0, para asegurar que el
' el Led D1 esté apagado.
PORTB.1 = 0 ' Inicializamos el pin RB1, para asegurar que el
' el Led D2 esté apagado.
Pulsadores:
If PortD.0 = 1 Then ' Verificamos el estado del pulsador "P1".
GoSub Led1 ' Si P1 es presionado, llama a la subrutina "Led1".
End If
If PortD.1 = 1 Then ' Verificamos el estado del pulsador "P2".
GoSub Led2 ' Si P1 es presionado, llama a la subrutina "Led2".
End If
GoTo Pulsadores ' Salta a la etiqueta "Pulsadores" para iniciar el
' proceso de verificación de los pulsadores.
Led1:
PORTB.0 = 1 ' Enciende el Led D1, conectado en RB0
delay_ms(2000) ' Hace una pausa de 2 segundos o 2000 milisegundos.
PORTB.0 = 0 ' Apaga el Led D1.
Return ' Retorno del llamado Gosub.
Led2:
PORTB.1 = 1 ' Enciende el Led D2, conectado en RB1
delay_ms(2000) ' Hace una pausa de 2 segundos o 2000 milisegundos.
PORTB.1 = 0 ' Apaga el Led D2.
Return ' Retorno del llamado Gosub.
End.
Para comprobar su correcto funcionamiento, compilamos el programa y grabamos el
microcontrolador PIC. Observe siempre la ventana de errores de mikroBasic; esta ventana
provee buena información en caso de errores de sintaxis en el cuerpo del programa.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
71
Si todo ha funcionado correctamente, pasaremos ahora a mejorar la estructura del programa
haciendo uso de “Alias”, a través de los cuales daremos nombres a los pines de los puertos
que estamos utilizando en el circuito. Es decir, en vez de dirigirnos a ellos como PortB.0,
PortB.1, PortD.0 y PortD.1, sustituiremos estos por los siguientes Alias:
El pin RB0 ó PortB.0 lo llamaremos “D1”
El pin RB1 ó PortB.1 lo llamaremos “D2”
El pin RD0 ó PortD.0 lo llamaremos “P1”
El pin RD1 ó PortD.1 lo llamaremos “P2”
Verifique estos cambios en el siguiente código de programa:
program Ejemplo2
' Area de declaración.
Symbol D1 = PORTB.0 ' Alias del Pin RB0
Symbol D2 = PORTB.1 ' Alias del Pin RB1
Symbol P1 = PortD.0 ' Alias del Pin RD0
Symbol P2 = PortD.1 ' Alias del Pin RD1
main: ' Programa Principal.
TRISB = %11111100 ' Configuración del Puerto "B"
TRISD = %11111111 ' Configuración del Puerto "D"
D1 = 0 ' Inicializamos el pin RB0, para asegurar que el
' el Led D1 esté apagado.
D2 = 0 ' Inicializamos el pin RB1, para asegurar que el
' el Led D2 esté apagado.
Pulsadores:
If P1 = 1 Then ' Verificamos el estado del pulsador "P1".
GoSub Led1 ' Si P1 es presionado, llama a la subrutina "Led1".
End If
If P2 = 1 Then ' Verificamos el estado del pulsador "P2".
GoSub Led2 ' Si P1 es presionado, llama a la subrutina "Led2".
End If
GoTo Pulsadores ' Salta a la etiqueta "Pulsadores" para iniciar el
' proceso de verificación de los pulsadores.
Led1:
D1 = 1 ' Enciende el Led D1, conectado en RB0
delay_ms(2000) ' Hace una pausa de 2 segundos o 2000 milisegundos.
D1 = 0 ' Apaga el Led D1.
Return ' Retorno del llamado Gosub.
Led2:
D2 = 1 ' Enciende el Led D2, conectado en RB1
delay_ms(2000) ' Hace una pausa de 2 segundos o 2000 milisegundos.
D2 = 0 ' Apaga el Led D2.
Return ' Retorno del llamado Gosub.
End.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
72
2.6.3.- Ejemplo de programación #3: En este ejemplo haremos uso de la librería “Button”
de mikroBasic.
“Button” permite eliminar rebotes en pulsadores o interruptores, evitando así errores de
lectura que pueden generar mal funcionamiento de nuestros diseños.
La sintaxis de esta rutina es la siguiente:
Button(Puerto, Pin, Tiempo, Estado Activo)
Puerto: En este campo debemos especificar en cual de los puertos estaremos
conectando el pulsador o interruptor.
Pin: Este campo representa un pin específico del puerto que estaremos utilizando
para tomar lectura de un pulsador o interruptor.
Tiempo: Este campo es un período de anti-rebote en milisegundos. Este valor puede
variar entre 1 y 255. Cada unidad de tiempo mide aproximadamente 0.98
milisegundos, por lo tanto, si usamos el valor máximo para el período de anti-rebote,
es decir “255”, el tiempo de anti-rebote será de 250 milisegundos.
Estado Activo: Este parámetro puede ser cero (0) ó uno (1). A través de este campo
podemos definir si el pulsador o interruptor estará activo con un 0 lógico o con un 1
lógico.
Esta rutina también devuelve un resultado (255), si el pulsador o interruptor han estado en
un estado activo durante el tiempo especificado. En caso contrario, devuelve un cero (0).
Veamos un ejemplo práctico, basado en el ejemplo de programación #2.
program Ejemplo3
' Area de declaración.
Symbol D1 = PORTB.0 ' Alias del Pin RB0
Symbol D2 = PORTB.1 ' Alias del Pin RB1
Dim Estado As Byte
main: ' Programa Principal.
TRISB = %11111100 ' Configuración del Puerto "B"
TRISD = %11111111 ' Configuración del Puerto "D"
D1 = 0 ' Inicializamos el pin RB0, para asegurar que el
' el Led D1 esté apagado.
D2 = 0 ' Inicializamos el pin RB1, para asegurar que el
' el Led D2 esté apagado.
Pulsadores:
Estado = Button(PortD, 0, 255, 1) ' Verificamos si P1 fue presionado, estado activo = 1.
If Estado = 255 Then ' Verificamos el resultado de la rutina “Button”.
GoSub Led1 ' Si P1 es presionado, llama a la subrutina "Led1".
End If
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
73
Estado = Button(PortD, 1, 255, 1) ' Verificamos si P2 fue presionado, estado activo = 1.
If Estado = 255 Then ' Verificamos el resultado de la rutina “Button”.
GoSub Led2 ' Si P1 es presionado, llama a la subrutina "Led2".
End If
GoTo Pulsadores ' Salta a la etiqueta "Pulsadores" para iniciar el
' proceso de verificación de los pulsadores.
Led1:
D1 = 1 ' Enciende el Led D1, conectado en RB0
delay_ms(1000) ' Hace una pausa de 1 segundo o 1000 milisegundos.
D1 = 0 ' Apaga el Led D1.
Return ' Retorno del llamado Gosub.
Led2:
D2 = 1 ' Enciende el Led D2, conectado en RB1
delay_ms(1000) ' Hace una pausa de 1 segundo o 1000 milisegundos.
D2 = 0 ' Apaga el Led D2.
Return ' Retorno del llamado Gosub.
End.
Observando los cambios realizados en el programa, tenemos que:
Hemos eliminado los “Alias” de los pulsadores.
Declaramos la variable “Estado” tipo Byte, para almacenar el estado de la rutina
“Button”. Si un pulsador permanece activo durante el tiempo de anti-rebote
especificado, la rutina “Button” nos devolverá el valor “255” el cual es almacenado en
la variable “Estado”.
Evaluamos el contenido de la variable “Estado” y seguidamente tomamos una
decisión con respecto al puerto de salida.
Para comprender mejor el funcionamiento de esta rutina, analizaremos la señal generada
por el pulsador y la salida generada por el microcontrolador para encender o apagar los
Leds.
En la siguiente imagen, hemos representado el estado del pulsador P1 en el canal “Rojo” del
osciloscopio, y el Led D1 en el canal “Verde” del osciloscopio.
Cuando activamos momentáneamente el pulsador P1, pero no lo mantenemos activo el
tiempo suficiente para cumplir con el período de tiempo de anti-rebote, ocurre que el valor
devuelto por la rutina “Button” es igual a cero (0). En este caso, podremos observar que en
la salida correspondiente al Led D1 no hay actividad alguna, como lo demuestra la figura
2.26.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
74
Figura 2.26
Si mantenemos el pulsador P1 activo el tiempo suficiente para vencer el tiempo de anti-
rebote, la rutina “Button” devuelve el valor “255”. Entonces podremos generar la salida
deseada en el pin del puerto correspondiente al Led D1 (Canal Verde):
Figura 2.27
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
75
El canal verde de la figura 2.27 muestra un pulso de 1 segundo de duración, generado
desde la subrutina “Led1” del programa.
Si medimos con el osciloscopio el tiempo de anti-rebote, podremos observar que es igual o
aproximado a 250 milisegundos:
Figura 2.28
Este tiempo es medido desde que inicia el pulso en el canal rojo del osciloscopio, hasta el
inicio del pulso del canal verde. En este ejemplo, el tiempo medido en el osciloscopio ha
dado como resultado un tiempo de antirrobote igual a 250 milisegundos.
También es posible utilizar la rutina Button de la siguiente manera:
program Ejemplo_3_1
' Area de declaración.
Symbol D1 = PORTB.0 ' Alias del Pin RB0
Symbol D2 = PORTB.1 ' Alias del Pin RB1
main: ' Programa Principal.
TRISB = %11111100 ' Configuración del Puerto "B"
TRISD = %11111111 ' Configuración del Puerto "D"
D1 = 0 ' Inicializamos el pin RB0, para asegurar que el
' el Led D1 esté apagado.
D2 = 0 ' Inicializamos el pin RB1, para asegurar que el
' el Led D2 esté apagado.
Pulsadores:
If Button(PortD, 0, 255, 1) Then ' Verificamos si P1 fue presionado, estado activo = 1.
Tiempo Anti-rebote
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
76
GoSub Led1 ' Si P1 es presionado, llama a la subrutina "Led1".
End If
If Button(PortD, 1, 255, 1) Then ' Verificamos si P2 fue presionado, estado activo = 1.
GoSub Led2 ' Si P1 es presionado, llama a la subrutina "Led2".
End If
GoTo Pulsadores ' Salta a la etiqueta "Pulsadores" para iniciar el
' proceso de verificación de los pulsadores.
Led1:
D1 = 1 ' Enciende el Led D1, conectado en RB0
delay_ms(1000) ' Hace una pausa de 1 segundo o 1000 milisegundos.
D1 = 0 ' Apaga el Led D1.
Return ' Retorno del llamado Gosub.
Led2:
D2 = 1 ' Enciende el Led D2, conectado en RB1
delay_ms(1000) ' Hace una pausa de 1 segundo o 1000 milisegundos.
D2 = 0 ' Apaga el Led D2.
Return ' Retorno del llamado Gosub.
End.
Observe que hemos eliminado la variable “Estado” en el programa y hemos simplificado la
subrutina “Pulsadores”.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
77
Capitulo III. Pantallas LCD y GLCD
A continuación estudiaremos las librerías encargadas del control de pantallas LCD y GLCD
de mikroBasic PRO a través de ejemplos claros y de fácil entendimiento.
Pantalla LCD Alfanumérica Pantalla Gráfica GLCD
3.1.- Pantallas LCD, estudio de la librería LCD de mikroBasic.
El primer paso siempre será tener un diagrama de pines de la pantalla LCD y a su vez definir
de una vez el conexionado con los puertos del microcontrolador, incluso antes de realizar
cualquier programación. Al hacer esto, entonces tendremos una base sobre la cual trabajar
el programa, en el cual debemos definir los pines de conexión de la misma, de manera que
el microcontrolador sepa donde dirigir la información y las instrucciones que controlarán
estos módulos.
3.1.1.- Identificación de los pines de una pantalla LCD: Veamos a continuación la
descripción de cada uno de los pines de una pantalla LCD:
Figura 3.1. Pinout de un módulo LCD con
conexión a Vcc, Gnd y Control de contraste.
Pin 1, 2 y 3: como se puede observar en la figura 6.4, en la mayoría de las pantallas LCD, el
Pin No. 1 y 2 corresponden a la alimentación de la pantalla, GND y Vcc, donde el voltaje
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
78
máximo comúnmente soportado es de 5 Vdc. El Pin No.3 corresponde al control de
contraste de la pantalla.
Pin 4: "RS" (trabaja paralelamente al Bus de datos del modulo LCD, Pines 7 al 14, es decir,
cuando RS es cero, el dato presente en el bus corresponde a un registro de control o
instrucción, pero cuando RS es uno, el dato presente en el bus corresponde a un registro de
datos o caracter alfanumérico.
Pin 5: "R/W" (Read/Write), este pin es utilizado para leer un dato desde la pantalla LCD o
para escribir un dato en la pantalla LCD. Si R/W = 0, esta condición indica que podemos
escribir un dato en la pantalla. Si R/W = 1, esta condición nos permite leer un dato desde la
pantalla LCD.
Pin 6: "E" (Enable), este es el pin de habilitación, es decir, si E = 0 el módulo LCD se
encuentra inhabilitado para recibir datos, pero si E = 1, el módulo LCD se encuentra
habilitado para trabajar, de tal manera que podemos escribir o leer desde el modulo LCD.
Pin 7 al14: "Bus de Datos”, el Pin 7 hasta el Pin 14 representan 8 líneas que se utilizan para
colocar el dato que representa una instrucción para el modulo LCD o un carácter
alfanumérico.
Pin 15-16: "BackLight", en muchos modelos de LCD, los pines 15 y 16 son respectivamente
el “Ánodo” y el “Cátodo”, aunque se pueden encontrar en el mercado modelos de pantallas
LCD donde esta condición es configurable desde la parte posterior del circuito impreso a
través de “Jumpers”, o conexiones donde podemos invertir los Pines, de manera tal que el
Pin 15 sea el “Cátodo” y el Pin 16 el “Ánodo”, como se muestra en la figura 3.2.
Figura 3.2
3.1.2.- Conexión y configuración de una pantalla LCD: Una pantalla LCD puede ser
conectada a un microcontrolador utilizando los ocho bits del bus de datos (D0 a D7) o
solamente los cuatro bits mas significativos del bus de datos (D4 a D7). Al emplear los ocho
bits, estos deberán estar conectados en un solo puerto y nunca en puertos diferentes. Si
deseamos trabajar solo con los cuatro bits más significativos del bus, estos deberán ser
conectados en los cuatro bits menos significativos de un puerto o en los cuatro bits más
significativos del puerto seleccionado.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
79
Los pines E (Pin 6) y RS (Pin 4) pueden estar conectados en cualquier puerto del
microcontrolador. Por último, el Pin R/W deberá estar conectado a tierra (GND) para indicar
a la pantalla LCD que estaremos escribiendo en ella.
Un dato interesante resulta ser el hecho de que las pantallas LCD pueden ser controladas
utilizando dos configuraciones distintas para el bus de datos:
La primera configuración es a 4 bits de datos, lo cual reduce a la mitad la cantidad de
pines a ser utilizados en un puerto de un microcontrolador PIC. MikroBasic cuenta con
una librería para el control de pantallas LCD a 4 bits, denominada “LCD Library”.
La segunda configuración posible es a 8 bits de datos, lo cual requiere que conectemos
todos los pines del bus (D0 hasta D7 en la pantalla LCD), en uno de los puertos
disponibles de un microcontrolador PIC. Esta configuración será descartada en esta
ocasión, ya que la idea es optimizar los recursos disponibles en nuestro hardware
utilizando la menor cantidad de puertos en nuestros circuitos.
Comenzaremos a realizar las prácticas basadas en la configuración de 4 bits, como se
sugiere en el siguiente diagrama esquemático. Diagrama de conexión entre un módulo LCD
y un PIC16F877 en configuración de 4 bits:
Figura 3.3
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
80
El primer punto importante será aprender a inicializar una pantalla LCD con mikroBasic. El
primer paso que debemos realizar será especificar en el programa de que manera han sido
conectados los pines de control y datos de la pantalla LCD en el puerto elegido del
microcontrolador.
Basados en el diagrama esquemático de la figura 3.3, la configuración de pines se realiza de
la siguiente manera:
' Configuración de los pines de la LCD
Dim LCD_RS As sbit At RB4_bit
LCD_EN As sbit At RB5_bit
LCD_D4 As sbit At RB0_bit
LCD_D5 As sbit At RB1_bit
LCD_D6 As sbit At RB2_bit
LCD_D7 As sbit At RB3_bit
LCD_RS_Direction As sbit At TRISB4_bit
LCD_EN_Direction As sbit At TRISB5_bit
LCD_D4_Direction As sbit At TRISB0_bit
LCD_D5_Direction As sbit At TRISB1_bit
LCD_D6_Direction As sbit At TRISB2_bit
LCD_D7_Direction As sbit At TRISB3_bit
' Fin de la configuración de conexiones
La configuración anterior puede ser interpretada de la siguiente manera:
Pin de Control en la LCD: RS PortB.4
Pin de Control en la LCD: E PortB.5
Pin de datos en la LCD: D4 PortB.0
Pin de datos en la LCD: D5 PortB.1
Pin de datos en la LCD: D6 PortB.2
Pin de datos en la LCD: D7 PortB.3
3.1.3.- LCD_Init()
Esta rutina es necesaria para inicializar un módulo LCD. Normalmente se ubica al inicio del
programa, después de la etiqueta de inicio y no en la zona de declaración de variables o
configuración de pines de la pantalla.
Ejemplo:
main: ' Programa Principal
LCD_Init()
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
81
3.1.4.- Lcd_Cmd(comando)
Esta rutina es importante para el control de una pantalla LCD, la cual puede facilitar la
programación de ciertas funciones importantes.
En el campo “comando” de la rutina, podemos especificar algunas funciones las cuales se
describen en la siguiente tabla:
Comando LCD Propósito
_Lcd_First_Row Mueve el cursor a la primera columna
_Lcd_Second_Row Mueve el cursor a la segunda columna
_Lcd_Third_Row Mueve el cursor a la tercera columna
_Lcd_Fourth_Row Mueve el cursor a la cuarta columna
_Lcd_Clear Limpia la pantalla LCD
_Lcd_Return_Home Cursor a la posición de inicio
_Lcd_Cursor_Off Apaga el cursor en la pantalla LCD
_Lcd_Underline_On Cursor “Underline” encendido
_Lcd_Blink_Cursor_On Activa la intermitencia en el cursor
_Lcd_Move_Cursor_Left Mueve el cursor a la izquierda sin alterar el contenido de la RAM
_Lcd_Move_Cursor_Right Mueve el cursor a la derecha sin alterar el contenido de la RAM
_Lcd_Turn_On Activa o enciende la pantalla LCD
_Lcd_Turn_Off Desactiva o apaga la pantalla LCD
_Lcd_Shift_Left Desplazamiento a la izquierda sin alterar el contenido de la RAM
_Lcd_Shift_Right Desplazamiento a la derecha sin alterar el contenido de la RAM
Figura 3.4
Tal y como esta especificado en la tabla anterior, es posible realizar fácilmente acciones
como mover el cursor o limpiar la pantalla entre otras como se demuestra en el próximo
ejercicio, pero antes veamos otras rutinas importantes.
3.1.5.- Lcd_Out(Fila, Columna, Texto)
La rutina Lcd_Out() nos permite escribir en una posición específica de la pantalla LCD, su
estructura es muy sencilla y se ve como sigue a continuación:
Ejemplo:
Lcd_Out(1, 4, “mikroBasic”)
Este ejemplo se interpreta de la siguiente forma: Escribir la palabra “mikroBasic” (sin incluir
las comillas) en la línea 1 de la pantalla, empezando en la columna 4.
Si deseamos escribir en la segunda línea de la pantalla, pero a partir de la primera columna,
entonces el cambio en la rutina sería el siguiente:
Lcd_Out(2, 1, “mikroBasic”)
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
82
3.1.5.1.- Ejemplo de programación #4: Veamos a continuación un ejemplo de
programación, basados en el diagrama esquemático 3.3, y utilizando las rutinas hasta ahora
comentadas:
program Proyecto_LCD_1
' Sección de Declaración
' Configuración de los pines de la LCD
Dim LCD_RS As sbit At RB4_bit
LCD_EN As sbit At RB5_bit
LCD_D4 As sbit At RB0_bit
LCD_D5 As sbit At RB1_bit
LCD_D6 As sbit At RB2_bit
LCD_D7 As sbit At RB3_bit
LCD_RS_Direction As sbit At TRISB4_bit
LCD_EN_Direction As sbit At TRISB5_bit
LCD_D4_Direction As sbit At TRISB0_bit
LCD_D5_Direction As sbit At TRISB1_bit
LCD_D6_Direction As sbit At TRISB2_bit
LCD_D7_Direction As sbit At TRISB3_bit
' Fin de la configuración de conexiones
main: ' Programa Principal
LCD_Init()
LCD_Cmd(_LCD_CLEAR) ' Limpia la pantalla LCD
LCD_Cmd(_LCD_CURSOR_OFF) ' Apaga el cursor en la pantalla
Delay_ms(1000) ' Retardo de 1 segundo
LCD_Out(1,4,"mikroBasic") ' Imprime en la linea 1 y columna 4
End.
El resultado de este ejemplo se puede observar en la figura 3.5.
Figura 3.5
Antes de compilar y analizar el programa, es importante verificar si la librería LCD ha sido
incluida al crear el proyecto. Esto lo sabremos fácilmente desplegando la pestaña del
administrador de librerías, en la cual deberán estar seleccionadas las librerías
correspondientes a este ejercicio:
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
83
Figura 3.6
Observe que cuando la librería correspondiente no ha sido incluida, las rutinas de nuestros
programas son subrayadas por una línea roja ondulada indicando que no han sido
reconocidas las rutinas en el programa.
_______________________________________________________________________________________
Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva
84
La siguiente imagen demuestra como se debe ver nuestro programa para que no se generen
errores al compilar:
Figura 3.7
Si observamos cada línea de programación, y analizamos cada una de ellas, tenemos que:
El primer paso ha sido configurar los pines de control y datos de la pantalla LCD en el
formato anteriormente especificado con respecto al puerto elegido en el
microcontrolador.
Inicializamos la pantalla LCD a través de la rutina LCD_Init().
Limpiamos la pantalla LCD con el comando correspondiente, según la tabla de la
figura 3.4.
Apagamos el cursor en la pantalla.
Hacemos una pausa de 1000 milisegundos o 1 segundo.
Escribimos la palabra “mikroBasic” en la línea 1, columna 4 de la pantalla LCD.
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC
Microcontroladores: mikroBasic para microcontroladores PIC

Más contenido relacionado

La actualidad más candente

Exposicion fototransistor
Exposicion fototransistorExposicion fototransistor
Exposicion fototransistorjoselin33
 
PLC: Sistemas programables avanzados PLC paraninfo por José Antonio Mercado F...
PLC: Sistemas programables avanzados PLC paraninfo por José Antonio Mercado F...PLC: Sistemas programables avanzados PLC paraninfo por José Antonio Mercado F...
PLC: Sistemas programables avanzados PLC paraninfo por José Antonio Mercado F...SANTIAGO PABLO ALBERTO
 
Electrónica digital: Electrónica digital microprogramable por Fernando Blanco...
Electrónica digital: Electrónica digital microprogramable por Fernando Blanco...Electrónica digital: Electrónica digital microprogramable por Fernando Blanco...
Electrónica digital: Electrónica digital microprogramable por Fernando Blanco...SANTIAGO PABLO ALBERTO
 
Controladores Logicos Programables
Controladores Logicos ProgramablesControladores Logicos Programables
Controladores Logicos ProgramablesDavid Levy
 
Electricidad basica sena ctcm
Electricidad basica sena ctcmElectricidad basica sena ctcm
Electricidad basica sena ctcmAndres Arbelaez
 
Arranque de Motores con PLC
Arranque de Motores con PLCArranque de Motores con PLC
Arranque de Motores con PLCUtp arequipa
 
Automatismos industriales ( PDFDrive ) (1).pdf
Automatismos industriales ( PDFDrive ) (1).pdfAutomatismos industriales ( PDFDrive ) (1).pdf
Automatismos industriales ( PDFDrive ) (1).pdfFernandoAlvarado400164
 
PLC y Electroneumática: Automatismos eléctricos e industriales por José Luis ...
PLC y Electroneumática: Automatismos eléctricos e industriales por José Luis ...PLC y Electroneumática: Automatismos eléctricos e industriales por José Luis ...
PLC y Electroneumática: Automatismos eléctricos e industriales por José Luis ...SANTIAGO PABLO ALBERTO
 
PLC y Electroneumática: Controles y automatismos eléctricos
PLC y Electroneumática: Controles y automatismos eléctricosPLC y Electroneumática: Controles y automatismos eléctricos
PLC y Electroneumática: Controles y automatismos eléctricosSANTIAGO PABLO ALBERTO
 
SISTEMAS DE ENERGÍA FOTOVOLTAICA
SISTEMAS DE ENERGÍA FOTOVOLTAICASISTEMAS DE ENERGÍA FOTOVOLTAICA
SISTEMAS DE ENERGÍA FOTOVOLTAICAANTONIO
 
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez SANTIAGO PABLO ALBERTO
 
PLC y Electroneumática: Instalaciones eléctricas de interior, automatismo y c...
PLC y Electroneumática: Instalaciones eléctricas de interior, automatismo y c...PLC y Electroneumática: Instalaciones eléctricas de interior, automatismo y c...
PLC y Electroneumática: Instalaciones eléctricas de interior, automatismo y c...SANTIAGO PABLO ALBERTO
 
Sistema de normalización europeo y americano
Sistema de normalización europeo y americanoSistema de normalización europeo y americano
Sistema de normalización europeo y americanoDaniel Mendoza
 
Electroneumática: Diseño de circuitos secuenciales neumático y electroneumático
Electroneumática: Diseño de circuitos secuenciales neumático y electroneumáticoElectroneumática: Diseño de circuitos secuenciales neumático y electroneumático
Electroneumática: Diseño de circuitos secuenciales neumático y electroneumáticoSANTIAGO PABLO ALBERTO
 
Electroneumática y Neumática: ejercicios básicos en fluidsim
Electroneumática y Neumática: ejercicios básicos en fluidsimElectroneumática y Neumática: ejercicios básicos en fluidsim
Electroneumática y Neumática: ejercicios básicos en fluidsimSANTIAGO PABLO ALBERTO
 
Variadores de frecuencia_
Variadores de frecuencia_Variadores de frecuencia_
Variadores de frecuencia_Mauricio Jeria
 

La actualidad más candente (20)

Exposicion fototransistor
Exposicion fototransistorExposicion fototransistor
Exposicion fototransistor
 
PLC: Sistemas programables avanzados PLC paraninfo por José Antonio Mercado F...
PLC: Sistemas programables avanzados PLC paraninfo por José Antonio Mercado F...PLC: Sistemas programables avanzados PLC paraninfo por José Antonio Mercado F...
PLC: Sistemas programables avanzados PLC paraninfo por José Antonio Mercado F...
 
Electrónica digital: Electrónica digital microprogramable por Fernando Blanco...
Electrónica digital: Electrónica digital microprogramable por Fernando Blanco...Electrónica digital: Electrónica digital microprogramable por Fernando Blanco...
Electrónica digital: Electrónica digital microprogramable por Fernando Blanco...
 
Control por contactos
Control por contactosControl por contactos
Control por contactos
 
Controladores Logicos Programables
Controladores Logicos ProgramablesControladores Logicos Programables
Controladores Logicos Programables
 
Electricidad basica sena ctcm
Electricidad basica sena ctcmElectricidad basica sena ctcm
Electricidad basica sena ctcm
 
Arranque de Motores con PLC
Arranque de Motores con PLCArranque de Motores con PLC
Arranque de Motores con PLC
 
Automatismos industriales ( PDFDrive ) (1).pdf
Automatismos industriales ( PDFDrive ) (1).pdfAutomatismos industriales ( PDFDrive ) (1).pdf
Automatismos industriales ( PDFDrive ) (1).pdf
 
PLC y Electroneumática: Automatismos eléctricos e industriales por José Luis ...
PLC y Electroneumática: Automatismos eléctricos e industriales por José Luis ...PLC y Electroneumática: Automatismos eléctricos e industriales por José Luis ...
PLC y Electroneumática: Automatismos eléctricos e industriales por José Luis ...
 
PLC y Electroneumática: Controles y automatismos eléctricos
PLC y Electroneumática: Controles y automatismos eléctricosPLC y Electroneumática: Controles y automatismos eléctricos
PLC y Electroneumática: Controles y automatismos eléctricos
 
SISTEMAS DE ENERGÍA FOTOVOLTAICA
SISTEMAS DE ENERGÍA FOTOVOLTAICASISTEMAS DE ENERGÍA FOTOVOLTAICA
SISTEMAS DE ENERGÍA FOTOVOLTAICA
 
Iniciación a Arduino
Iniciación a ArduinoIniciación a Arduino
Iniciación a Arduino
 
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
 
PLC y Electroneumática: Instalaciones eléctricas de interior, automatismo y c...
PLC y Electroneumática: Instalaciones eléctricas de interior, automatismo y c...PLC y Electroneumática: Instalaciones eléctricas de interior, automatismo y c...
PLC y Electroneumática: Instalaciones eléctricas de interior, automatismo y c...
 
Sistema de normalización europeo y americano
Sistema de normalización europeo y americanoSistema de normalización europeo y americano
Sistema de normalización europeo y americano
 
Rele
ReleRele
Rele
 
Tema10completo 180418025134
Tema10completo 180418025134Tema10completo 180418025134
Tema10completo 180418025134
 
Electroneumática: Diseño de circuitos secuenciales neumático y electroneumático
Electroneumática: Diseño de circuitos secuenciales neumático y electroneumáticoElectroneumática: Diseño de circuitos secuenciales neumático y electroneumático
Electroneumática: Diseño de circuitos secuenciales neumático y electroneumático
 
Electroneumática y Neumática: ejercicios básicos en fluidsim
Electroneumática y Neumática: ejercicios básicos en fluidsimElectroneumática y Neumática: ejercicios básicos en fluidsim
Electroneumática y Neumática: ejercicios básicos en fluidsim
 
Variadores de frecuencia_
Variadores de frecuencia_Variadores de frecuencia_
Variadores de frecuencia_
 

Similar a Microcontroladores: mikroBasic para microcontroladores PIC

MANUAL DEL USUARIO PLC _ CLIC 02
MANUAL DEL USUARIO PLC _ CLIC 02MANUAL DEL USUARIO PLC _ CLIC 02
MANUAL DEL USUARIO PLC _ CLIC 02Esteban Conte
 
Matriz de LEDs + Interfaz Grafica con GTK en Linux
Matriz de LEDs + Interfaz Grafica con GTK en LinuxMatriz de LEDs + Interfaz Grafica con GTK en Linux
Matriz de LEDs + Interfaz Grafica con GTK en LinuxSNPP
 
Pfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionalesPfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionalesguofee
 
Pfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionalesPfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionalesguofee
 
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN D RESUELTA 1er PARCIAL (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN D RESUELTA 1er PARCIAL (2019 2do ...⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN D RESUELTA 1er PARCIAL (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN D RESUELTA 1er PARCIAL (2019 2do ...Victor Asanza
 
Itcr el 3310 i semestre 2008 soluciones
Itcr el 3310  i semestre 2008 solucionesItcr el 3310  i semestre 2008 soluciones
Itcr el 3310 i semestre 2008 solucionesКатя Флорес
 
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN A RESUELTA 1er PARCIAL (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN A RESUELTA 1er PARCIAL (2019 2do ...⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN A RESUELTA 1er PARCIAL (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN A RESUELTA 1er PARCIAL (2019 2do ...Victor Asanza
 
Trabajo coloaborativo unad 2 fase2_
Trabajo coloaborativo unad 2 fase2_Trabajo coloaborativo unad 2 fase2_
Trabajo coloaborativo unad 2 fase2_Keny Hans
 
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886Victor Asanza
 
151953932 laboratorio-de-codificador-y-decodificador
151953932 laboratorio-de-codificador-y-decodificador151953932 laboratorio-de-codificador-y-decodificador
151953932 laboratorio-de-codificador-y-decodificadorEver Omar Nolasco
 
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, EXAMEN B RESUELTA 2do PARCIAL (2019 1er T...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, EXAMEN B RESUELTA 2do PARCIAL (2019 1er T...⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, EXAMEN B RESUELTA 2do PARCIAL (2019 1er T...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, EXAMEN B RESUELTA 2do PARCIAL (2019 1er T...Victor Asanza
 
Pantallas planas ultias geneacion
Pantallas planas ultias geneacionPantallas planas ultias geneacion
Pantallas planas ultias geneacionwilmer67
 
Informe grupo cronos
Informe grupo cronosInforme grupo cronos
Informe grupo cronosraulernesto28
 
3.6 texto lcd
3.6 texto lcd3.6 texto lcd
3.6 texto lcdSNPP
 
UNIDAD II CONTROL Y MANEJO DE PERIFÉRICOS(TECLADO 4X4 ,LCD GRficas 128x64) 20...
UNIDAD II CONTROL Y MANEJO DE PERIFÉRICOS(TECLADO 4X4 ,LCD GRficas 128x64) 20...UNIDAD II CONTROL Y MANEJO DE PERIFÉRICOS(TECLADO 4X4 ,LCD GRficas 128x64) 20...
UNIDAD II CONTROL Y MANEJO DE PERIFÉRICOS(TECLADO 4X4 ,LCD GRficas 128x64) 20...SistemadeEstudiosMed
 
Estimacion de la orientacion de un cuerpo rigido: Estudio experimental compar...
Estimacion de la orientacion de un cuerpo rigido: Estudio experimental compar...Estimacion de la orientacion de un cuerpo rigido: Estudio experimental compar...
Estimacion de la orientacion de un cuerpo rigido: Estudio experimental compar...Edwin Rosario Gabriel
 
R1 e _copy_
R1 e _copy_R1 e _copy_
R1 e _copy_Natt-N
 

Similar a Microcontroladores: mikroBasic para microcontroladores PIC (20)

MANUAL DEL USUARIO PLC _ CLIC 02
MANUAL DEL USUARIO PLC _ CLIC 02MANUAL DEL USUARIO PLC _ CLIC 02
MANUAL DEL USUARIO PLC _ CLIC 02
 
Matriz de LEDs + Interfaz Grafica con GTK en Linux
Matriz de LEDs + Interfaz Grafica con GTK en LinuxMatriz de LEDs + Interfaz Grafica con GTK en Linux
Matriz de LEDs + Interfaz Grafica con GTK en Linux
 
Pfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionalesPfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionales
 
Pfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionalesPfc prototipo electrónico para la valoración de amplificadores operacionales
Pfc prototipo electrónico para la valoración de amplificadores operacionales
 
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN D RESUELTA 1er PARCIAL (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN D RESUELTA 1er PARCIAL (2019 2do ...⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN D RESUELTA 1er PARCIAL (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN D RESUELTA 1er PARCIAL (2019 2do ...
 
Itcr el 3310 i semestre 2008 soluciones
Itcr el 3310  i semestre 2008 solucionesItcr el 3310  i semestre 2008 soluciones
Itcr el 3310 i semestre 2008 soluciones
 
TFM_german_bravo_lopez
TFM_german_bravo_lopezTFM_german_bravo_lopez
TFM_german_bravo_lopez
 
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN A RESUELTA 1er PARCIAL (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN A RESUELTA 1er PARCIAL (2019 2do ...⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN A RESUELTA 1er PARCIAL (2019 2do ...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN A RESUELTA 1er PARCIAL (2019 2do ...
 
Trabajo coloaborativo unad 2 fase2_
Trabajo coloaborativo unad 2 fase2_Trabajo coloaborativo unad 2 fase2_
Trabajo coloaborativo unad 2 fase2_
 
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
 
151953932 laboratorio-de-codificador-y-decodificador
151953932 laboratorio-de-codificador-y-decodificador151953932 laboratorio-de-codificador-y-decodificador
151953932 laboratorio-de-codificador-y-decodificador
 
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, EXAMEN B RESUELTA 2do PARCIAL (2019 1er T...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, EXAMEN B RESUELTA 2do PARCIAL (2019 1er T...⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, EXAMEN B RESUELTA 2do PARCIAL (2019 1er T...
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, EXAMEN B RESUELTA 2do PARCIAL (2019 1er T...
 
Pantallas planas ultias geneacion
Pantallas planas ultias geneacionPantallas planas ultias geneacion
Pantallas planas ultias geneacion
 
Informe grupo cronos
Informe grupo cronosInforme grupo cronos
Informe grupo cronos
 
3.6 texto lcd
3.6 texto lcd3.6 texto lcd
3.6 texto lcd
 
Reloj digital
Reloj digitalReloj digital
Reloj digital
 
UNIDAD II CONTROL Y MANEJO DE PERIFÉRICOS(TECLADO 4X4 ,LCD GRficas 128x64) 20...
UNIDAD II CONTROL Y MANEJO DE PERIFÉRICOS(TECLADO 4X4 ,LCD GRficas 128x64) 20...UNIDAD II CONTROL Y MANEJO DE PERIFÉRICOS(TECLADO 4X4 ,LCD GRficas 128x64) 20...
UNIDAD II CONTROL Y MANEJO DE PERIFÉRICOS(TECLADO 4X4 ,LCD GRficas 128x64) 20...
 
Estimacion de la orientacion de un cuerpo rigido: Estudio experimental compar...
Estimacion de la orientacion de un cuerpo rigido: Estudio experimental compar...Estimacion de la orientacion de un cuerpo rigido: Estudio experimental compar...
Estimacion de la orientacion de un cuerpo rigido: Estudio experimental compar...
 
R1 e _copy_
R1 e _copy_R1 e _copy_
R1 e _copy_
 
El microcontrolador PIC16F877
El microcontrolador PIC16F877El microcontrolador PIC16F877
El microcontrolador PIC16F877
 

Más de SANTIAGO PABLO ALBERTO

Manual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzadaManual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzadaSANTIAGO PABLO ALBERTO
 
Programación de microcontroladores PIC en C con Fabio Pereira
Programación de microcontroladores PIC en  C con Fabio PereiraProgramación de microcontroladores PIC en  C con Fabio Pereira
Programación de microcontroladores PIC en C con Fabio PereiraSANTIAGO PABLO ALBERTO
 
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...SANTIAGO PABLO ALBERTO
 
Programación de autómatas PLC OMRON CJ/CP1
Programación de  autómatas PLC OMRON CJ/CP1Programación de  autómatas PLC OMRON CJ/CP1
Programación de autómatas PLC OMRON CJ/CP1SANTIAGO PABLO ALBERTO
 
Manual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMARTManual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMARTSANTIAGO PABLO ALBERTO
 
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...SANTIAGO PABLO ALBERTO
 
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...SANTIAGO PABLO ALBERTO
 
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...SANTIAGO PABLO ALBERTO
 
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...SANTIAGO PABLO ALBERTO
 
Arduino: Codifique un semáforo en el circuito de bloques de código de Tinkercad
Arduino: Codifique un semáforo en el circuito de bloques de código de TinkercadArduino: Codifique un semáforo en el circuito de bloques de código de Tinkercad
Arduino: Codifique un semáforo en el circuito de bloques de código de TinkercadSANTIAGO PABLO ALBERTO
 
Electrónica: Instrumentación electrónica moderna y técnicas de medicion por W...
Electrónica: Instrumentación electrónica moderna y técnicas de medicion por W...Electrónica: Instrumentación electrónica moderna y técnicas de medicion por W...
Electrónica: Instrumentación electrónica moderna y técnicas de medicion por W...SANTIAGO PABLO ALBERTO
 

Más de SANTIAGO PABLO ALBERTO (20)

secuencia electroneumática parte 1
secuencia electroneumática parte 1secuencia electroneumática parte 1
secuencia electroneumática parte 1
 
secuencia electroneumática parte 2
secuencia electroneumática parte 2secuencia electroneumática parte 2
secuencia electroneumática parte 2
 
Manual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzadaManual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzada
 
Programación de microcontroladores PIC en C con Fabio Pereira
Programación de microcontroladores PIC en  C con Fabio PereiraProgramación de microcontroladores PIC en  C con Fabio Pereira
Programación de microcontroladores PIC en C con Fabio Pereira
 
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
 
Arduino: Arduino de cero a experto
Arduino: Arduino de cero a expertoArduino: Arduino de cero a experto
Arduino: Arduino de cero a experto
 
Fisica I
Fisica IFisica I
Fisica I
 
Quimica.pdf
Quimica.pdfQuimica.pdf
Quimica.pdf
 
Manual básico PLC OMRON
Manual básico PLC OMRON Manual básico PLC OMRON
Manual básico PLC OMRON
 
Programación de autómatas PLC OMRON CJ/CP1
Programación de  autómatas PLC OMRON CJ/CP1Programación de  autómatas PLC OMRON CJ/CP1
Programación de autómatas PLC OMRON CJ/CP1
 
Manual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMARTManual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMART
 
Catálogo de PLC S7-200 SMART
Catálogo de PLC S7-200 SMART Catálogo de PLC S7-200 SMART
Catálogo de PLC S7-200 SMART
 
PLC: Automatismos industriales
PLC: Automatismos industrialesPLC: Automatismos industriales
PLC: Automatismos industriales
 
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
 
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
 
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
 
PLC: Motor Dahlander
PLC: Motor DahlanderPLC: Motor Dahlander
PLC: Motor Dahlander
 
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
 
Arduino: Codifique un semáforo en el circuito de bloques de código de Tinkercad
Arduino: Codifique un semáforo en el circuito de bloques de código de TinkercadArduino: Codifique un semáforo en el circuito de bloques de código de Tinkercad
Arduino: Codifique un semáforo en el circuito de bloques de código de Tinkercad
 
Electrónica: Instrumentación electrónica moderna y técnicas de medicion por W...
Electrónica: Instrumentación electrónica moderna y técnicas de medicion por W...Electrónica: Instrumentación electrónica moderna y técnicas de medicion por W...
Electrónica: Instrumentación electrónica moderna y técnicas de medicion por W...
 

Último

Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdfevin1703e
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IILauraFernandaValdovi
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 
Diapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestaDiapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestajeffsalazarpuente
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptxguillermosantana15
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSaulSantiago25
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfrolandolazartep
 
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVEl proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVSebastianPaez47
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxEverardoRuiz8
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxClaudiaPerez86192
 
TALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación públicaTALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación públicaSantiagoSanchez353883
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...SuannNeyraChongShing
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxSergioGJimenezMorean
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfMirthaFernandez12
 

Último (20)

Residente de obra y sus funciones que realiza .pdf
Residente de obra y sus funciones que realiza  .pdfResidente de obra y sus funciones que realiza  .pdf
Residente de obra y sus funciones que realiza .pdf
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo II
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdf
 
Diapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestaDiapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuesta
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
Seleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusiblesSeleccion de Fusibles en media tension fusibles
Seleccion de Fusibles en media tension fusibles
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdf
 
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kVEl proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
El proyecto “ITC SE Lambayeque Norte 220 kV con seccionamiento de la LT 220 kV
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptx
 
Comite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptxComite Operativo Ciberseguridad 012020.pptx
Comite Operativo Ciberseguridad 012020.pptx
 
TALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación públicaTALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación pública
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
Polimeros.LAS REACCIONES DE POLIMERIZACION QUE ES COMO EN QUIMICA LLAMAMOS A ...
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptxPPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
PPT SERVIDOR ESCUELA PERU EDUCA LINUX v7.pptx
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
 

Microcontroladores: mikroBasic para microcontroladores PIC

  • 1.
  • 2. Copyright 2010 Christian Bodington Todos los derechos reservados. Esta publicación no puede ser reproducida, ni en todo ni en partes, ni registrada en o transmitida por un sistema de recuperación de información, en ninguna forma ni por ningún medio, sea mecánico, fotoquímico, electrónico, magnético, electroóptico, por fotocopia o cualquier otro, sin permiso previo por escrito del autor. Ilustrado y Editado por: Christian Bodington Esteva Diseño de la portada / Arte por: Christian Bodington Esteva WWW.CONEXIONELECTRONICA.COM
  • 3. i CONTENIDO Prologo. Capitulo I. 1.1.- Herramientas de diseño. 1.2.- Entorno de Desarrollo Integrado de mikroBasic. 1.3.- Estructura de un programa. 1.4.- Crear un nuevo proyecto en mikroBasic. 1.5.- Conociendo el entorno de desarrollo integrado. 1.6.- Componentes y operadores en mikroBasic. 1.6.1.- Subrutinas. 1.6.2.- Variables. 1.6.3.- Arrays. 1.6.4.- Constantes. 1.6.5.- Alias. 1.6.6.- Operadores Aritméticos. 1.6.7.- Operadores Bit a Bit. 1.6.8.- Operadores de Comparación. Capitulo II. 2.1.- Arquitectura Básica del microcontrolador PIC16F877. 2.2.- El oscilador externo. 2.3.- Circuito de Reset. 2.4.- Consideraciones técnicas de diseño. 2.4.1.- Estado lógico de un pin I/O. 2.4.2.- Lectura de un estado lógico en un pin I/O. 2.4.3.- El opto-acoplador como dispositivo de enlace. 2.4.4.- Fuente de poder 5Vdc – 3.3Vdc. 2.5.- Configuración de puertos de entrada y salida en un microcontrolador PIC. 2.6.- Primeros ejemplos de programación en mikroBasic. 2.6.1.- Ejemplo #1. Control de Leds. 2.6.2.- Ejemplo #2. Control de Leds con pulsadores. 2.6.3.- Ejemplo #3. Librería Button.
  • 4. ii Capitulo III. Pantallas LCD y GLCD. 3.1.- Pantallas LCD, estudio de la librería LCD de mikroBasic. 3.1.1.- Identificación de los pines de una pantalla LCD. 3.1.2.- Conexión y configuración de una pantalla LCD. 3.1.3.- Rutina Lcd_Init(). 3.1.4.- Rutina Lcd_Cmd(). 3.1.5.- Rutina Lcd_Out(). 3.1.5.1.- Ejemplo #4. Imprimir mensaje en pantalla LCD. 3.1.5.2.- Ejemplo #5. Uso de comandos en pantalla LCD. 3.1.5.3.- Ejemplo #5.1. Uso de comandos en pantalla LCD. 3.1.6.- Rutina Lcd_Out_Cp(). 3.1.6.1.- Ejemplo #6. Uso de la rutina Lcd_Out_Cp(). 3.1.7.- Rutina Lcd_Chr(). 3.1.8.- Rutina Lcd_Chr_Cp(). 3.1.8.1.- Ejemplo #7. Uso de rutinas Lcd_Chr() y Lcd_Chr_Cp(). 3.2.- Parámetros de rutinas cargados en variables. 3.2.1.- Ejemplo #8. Uso de variables como parámetros. 3.2.2.- Ejemplo #9. Imprime el contenido de dos variables tipo String. 3.3.- Imprimir el contenido de una variable en una pantalla LCD. 3.3.1.- Ejemplo #10. Imprimir el contenido de una variable. 3.3.2.- Ejemplo #11. Imprime el resultado de una operación, suma y resta de un número cargado en una variable a través de pulsadores. 3.3.3.- Ejemplo #12. Crear un menú de opciones en la pantalla. 3.4.- Pantalla Gráfica o GLCD (Graphic Liquid Crystal Display). 3.4.1.- Conexión y configuración de una pantalla GLCD. 3.5.- Librería GLCD. 3.5.1.- Rutina Glcd_Init(). 3.5.2.- Ejemplo #13. Uso de la rutina Glcd_Init(). 3.5.3.- Módulo de Fuentes en mikroBasic.
  • 5. iii 3.5.3.1.- Ejemplo #14. Cómo incluir un módulo de fuentes. 3.5.4.- Rutina Glcd_Fill(). 3.5.5.- Rutina Glcd_Set_Font(). 3.5.6.- Rutina Glcd_Write_Text(). 3.5.6.1.- Ejemplo #15. Imprimir el contenido de una variable tipo Word. 3.5.7.- Rutina Glcd_Dot(x, y, color). 3.5.7.1.- Ejemplo #16. Encender o apagar un pixel específico. 3.5.7.2.- Ejemplo #17. Cambio de color o color inverso en la pantalla. 3.5.7.3.- Ejemplo #18. Cambio de estado de un pixel. 3.5.8.- Rutina Glcd_Line(x1, y1, x2, y2, color). 3.5.8.1.- Ejemplo #19. Dibuja línea entre coordenadas específicas. 3.5.8.2.- Ejemplo #20. Dibuja línea entre coordenadas, color inverso. 3.5.9.- Rutina Glcd_V_Line(y1, y2, x, color). 3.5.9.1.- Ejemplo #21. Dibuja línea vertical entre coordenadas específicas. 3.5.10.- Rutina Glcd_H_Line(x1, x2, y, color). 3.5.10.1.- Ejemplo #22. Dibuja línea horizontal entre coordenadas. 3.5.11.- Rutina Glcd_Rectangle(x1, y1, x2, y2, color). 3.5.11.1.- Ejemplo #23. Dibuja un cuadrado o rectángulo. 3.5.11.2.- Ejemplo #24. Dibuja una serie de rectángulos consecutivos. 3.5.12.- Rutina Glcd_Box(x1, y1, x2, y2, color). 3.5.12.1.- Ejemplo #25. Dibuja un cuadrado o rectángulo sólido. 3.5.12.2.- Ejemplo #26. Dibuja un cuadrado o rectángulo sólido, color inverso. 3.5.13.- Glcd_Circle(x, y, radio, color). 3.5.13.1.- Ejemplo #27. Dibuja un círculo en la pantalla. 3.5.13.2.- Ejemplo #28. Dibuja un círculo, color inverso. 3.5.13.3.- Ejemplo #29. Dibuja círculos consecutivos.
  • 6. iv Capítulo IV. Librería Trigon – Funciones Trigonométricas. 4.1.- Funciones Trigonométricas. Sin(x), Sinh(x), Cos(x), Cosh(x), Tan(x), Tanh(x) Asin(x), Acos(x), Atan(x), Atan2(x, y), Log(x), Log10(x), Sqrt(x), Exp(x), Pow(x, y), fabs(x). 4.1.1.- Ejemplo #30. Cálculo del seno de un valor x. 4.1.2.- Ejemplo #31. Cálculo del coseno de un valor x. 4.1.3.- Ejemplo #32. Cálculo de la tangente de un valor x. 4.1.4.- Ejemplo #33. Calculadora. Capítulo V. Librería Sound. 5.1.- Rutinas de la librería de sonido de mikroBasic. Cálculos de frecuencias de la escala musical. 5.1.1.- Ejemplo #34. Reproduce las notas de la escala musical en la octava A4, y muestra las frecuencias a través de la pantalla LCD. 5.1.2.- Ejemplo #35. Elaboración de un piano de una octava musical. Capítulo VI. Teclado Matricial y Teclado PS/2. 6.1.- Teclado Matricial. 6.2.- Librería KeyPad. 6.2.1.- Rutina KeyPad_Init(). 6.2.2.- Rutina KeyPad_Key_Press(). 6.2.2.1.- Ejemplo #36. Lectura de un teclado matricial. 6.2.2.2.- Ejemplo #37. Como enmascarar el resultado de la lectura del teclado matricial. 6.3.- Teclado PS/2. 6.4.- Librería PS/2. 6.4.1.- Rutina Ps2_Config(). 6.4.2.- Rutina Ps2_Key_Read(). 6.4.2.1.- Ejemplo #38. Lectura de un teclado PS/2. 6.4.2.2.- Ejemplo #39. Lectura de teclas de funciones especiales. 6.4.2.3.- Ejemplo #40. Mostrar símbolo ASCII y valor correspondiente a una tecla presionada.
  • 7. v Capítulo VII. Memoria de Datos EEPROM. 7.1.- Memoria de datos EEPROM. 7.2.- Librería EEPROM. 7.1.1.- Rutina EEPROM_Read(). 7.2.2.- Rutina EEPROM_Write(). 7.2.2.1.- Ejemplo #41. Sistema de control de acceso con clave de 6 dígitos almacenada en la memoria EEPROM. 7.2.2.2.- Ejemplo #42. Sistema de control de acceso mejorado. Se permite el cambio de clave desde el teclado. Capítulo VIII. Conversor A/D. 8.1.- El conversor A/D. 8.1.1.- El registro ADCON0. 8.1.2.- El registro ADCON1. 8.1.3.- Ejemplo #43. Conversión A/D de una señal analógica. 8.1.4.- Ejemplo #44. Conversión A/D con voltaje de referencia. 8.1.5.- Ejemplo #45. Conversión A/D, datos adicionales en la pantalla. 8.2.- El Acelerómetro. 8.2.1.- Ejemplo #46. Acelerómetro 3D, conversión A/D de datos en los ejes X, Y, Z. 8.2.2.- Cálculo del voltaje de entrada del conversor A/D. 8.2.3.- Cálculo de la aceleración en base al voltaje calculado en cada eje. 8.2.4.- Ejemplo #47. Visualizar voltaje y aceleración calculada en la GLCD. 8.3.- Termocupla. 8.3.1.- AD594/AD595, cálculo de la linealidad. 8.3.2.- Ejemplo #48. Termómetro digital con termocupla tipo J. Capítulo IX. Comunicación Serial Asíncrona RS232. 9.1.- Comunicación Serial Asíncrona RS232. 9.2.- Librería UART. 9.2.1.- Rutina UART1_Init(). 9.2.2.- Rutina UART1_Data_Ready().
  • 8. vi 9.2.3.- Rutina UART1_Read(). 9.2.4.- Ejemplo #49. Recepción de datos vía RS232. 9.2.5.- Ejemplo #50. Almacenar y visualizar una cadena de caracteres. 9.2.6.- Rutina UART1_Write(). 9.2.7.- Ejemplo #51. Transmisión y recepción de datos vía RS232. 9.3.- ¿Cómo extraer información específica de una cadena de datos?. 9.3.1.- Ejemplo #52. Extraer información de una cadena de datos. 9.4.- Módulo de comunicaciones BlueTooth. 9.4.1.- Widcomm BlueTooth Software 5.0.1.3900. 9.4.2.- Comunicación Serial inalámbrica BlueTooth. 9.5.- Módulo GPS (OEM), comunicación serial RS232. 9.5.1.- Protocolo NMEA. 9.5.2.- Ejemplo #53. Extrae coordenadas geográficas y número de satélites utilizador por el módulo GPS. 9.6.- Programación en Visual Basic 6.0 para ejemplos de comunicación serial RS232. 9.6.1.- Ejemplo #54. Captura de datos enviados desde un módulo VB. 9.6.2.- Ejemplo #55. Captura de datos enviados desde un microcontrolador a una hoja de cálculo de Microsoft Excel. Capítulo X. Multi Media Card (MMC) y Secure Card (SD) Memory. 10.1.- Librería MMC/SD. 10.1.1.- Rutina Mmc_Init(). 10.1.2.- Rutina Mmc_Read_Cid(). 10.1.3.- Rutina Mmc_Read_Csd(). 10.1.4.- Rutina Mmc_Write_Sector(). 10.1.5.- Rutina Mmc_Read_Sector(). 10.2.- Registro CID. 10.2.1.- Ejemplo #56. Lectura del registro CID en una memoria SD. 10.3.- Registro CSD Versión 2.0. 10.3.1.- Ejemplo #57. Lectura del registro CSD en una memoria SD.
  • 9. vii 10.4.- WinHex. 10.4.1.- Ejemplo #58. Almacenamiento de datos en sectores específicos de la memoria SD. 10.4.2.- Ejemplo #59. Lectura de datos de un sector específico. 10.5.- Sistema de archivos FAT. 10.5.1.- Rutina Mmc_Fat_Init(). 10.5.2.- Rutina Mmc_Fat_QuickFormat(). 10.5.3.- Ejemplo #60. Cómo dar formato a una tarjeta de memoria SD desde el microcontrolador PIC. 10.5.4.- ¿Cómo crear un archivo en una tarjeta de memoria SD?. 10.5.5.- Rutina Mmc_Fat_Assign(). 10.5.6.- Ejemplo #61. Crear un archivo .txt con atributo de sólo lectura. 10.5.7.- Ejemplo #62. Crear un archivo .txt con atributo de sólo lectura y archivo oculto. 10.5.8.- Ejemplo #63. Crear un subdirectorio o carpeta. 10.5.9.- Ejemplo #64. Atributo “Archivo”. 10.6.- Ingresar datos en un archivo almacenado en la memoria SD. 10.6.1.- Ejemplo #65. Almacena cadena de caracteres enviada desde la terminal de comunicaciones de mikroBasic vía RS232. 10.7.- Asignar fecha y hora a un archivo. 10.7.1.- Ejemplo #66. Asigna fecha y hora a un archivo. 10.8.- Verificar si un archivo de nombre específico existe. 10.8.1.- Ejemplo #67. Verifica si existe un archivo en la memoria SD. 10.9.- Insertar datos en un archivo existente. 10.9.1.- Ejemplo #68. Insertar cadena de datos en un archivo existente.
  • 10. viii Capítulo XI. Servomotores. 11.1.- ¿Qué es un Servomotor?. 11.1.1.- Ejemplo #69. Control de un servomotor. 11.1.2.- Ejemplo #70. Posiciones pre-definidas. Capítulo XII. PWM. 12.1.- PWM. 12.2.- Librería PWM. 12.2.1.- Rutina PWM1_Init(). 12.2.2.- Rutina PWM1_Set_Duty(). 12.2.3.- Rutina PWM1_Start(). 12.2.4.- Rutina PWM1_Stop(). 12.2.5.- PWM2. 12.2.6.- Ejemplo #71. Genera señal PWM controlada. 12.2.7.- Ejemplo #72. Control de un Motor DC. Apéndice A. Tabla ASCII. Apéndice B. Prácticas en formato digital. Bibliografía.
  • 11. Prólogo La segunda edición del libro “Basic para Microcontroladores PIC” esta basado en el estudio del compilador mikroBasic Pro, de la empresa MikroElektronika. El contenido de esta obra facilita un verdadero inicio rápido en la programación de microcontroladores PIC gracias a una completa librería diseñada para el control de una gran variedad de periféricos, facilitando el desarrollo de proyectos electrónicos a través de 72 ejemplos prácticos, analizados y comentados detalladamente en base a los microcontroladores PIC16F877, PIC18F442, PIC18F452 y PIC18F458. La mayoría de los proyectos han sido desarrollados con la ayuda del entrenador de microcontroladores “EasyPic5” de mikroElektronika, además de una serie de componentes adicionales de fácil adquisición y bajo costo. Al igual que en la primera edición, la metodología empleada ha sido orientada para que el lector pueda expandir sus conocimientos para generar nuevas ideas en la implimentación de este compilador sobre esta tecnología ya anteriormente estudiada. Esta obra es la primera parte de un extenso estudio de mikroBasic, adaptado a nuestro idioma y pensado para aquellas personas con conocimientos básicos en la programación de estos componentes. Los puntos de estudios más importantes han sido el control de puertos, pantallas LCD y GLCD, sonido, funciones trigonométricas, teclado matricial y PS/2, memoria de datos EEPROM, conversor A/D, control de dispositivos como potenciómetros, acelerómetro 3D, termocupla, comunicación serial RS-232, BlueTooth, módulos GPS, programación en Visual Basic para control de puertos, multimedia card (MMC y SD), almacenamiento masivo de datos, creación de archivos en formato FAT desde el microcontrolador PIC, servomotores y PWM. MikroBasic hace posible el desarrollo de nuevas ideas en muy poco tiempo, haciendo del estudio de los microcontroladores un tema sencillo y accesible. Christian Bodington Esteva
  • 12. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 2 Capitulo I 1.1.- Herramientas de Diseño En la elaboración de proyectos electrónicos con microcontroladores PIC, resulta muy importante considerar una serie de herramientas que vamos a describir a continuación y las cuales pueden ser proporcionadas en su gran mayoría por la empresa Mikroelektronika (www.mikroe.com). Esta empresa se ha dado a la tarea de diseñar tanto el software de programación para microcontroladores PIC, como el hardware necesario para poder aprender todo lo relacionado al tema que a continuación estaremos abordando a través de muchos ejemplos prácticos los cuales tienen una gran variedad de periféricos disponibles, tales como pantallas LCD, GLCD, teclados matriciales, teclados PS/2, dispositivos de comunicación serial, entre otros. Software: para la programación en Lenguaje Basic, contamos con el Ambiente Integrado de Desarrollo MikroBasic de MikroElektronika. Con esta herramienta estaremos realizando la programación en cada uno de los proyectos propuestos a partir del capítulo II. Figura 1.1 (Fuente: http://www.mikroe.com)
  • 13. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 3 Programador de Microcontroladores PIC de MikroElektronika: es un programador de la familia Flash de Microchip, de conexión universal USB, el cual puede ser acoplado a una placa de circuito impreso la cual contiene todas las bases disponibles del tipo DIP como lo demuestra la figura 1.2. También es posible hacer arreglos en nuestros circuitos para dejar un puerto de conexión para el programador, y así poder realizar cambios en nuestros programas sin retirar el microcontrolador de nuestros diseños. Esta opción, denominada ICSP (In-Circuit Serial Programming), simplifica el trabajo a la hora de reprogramar nuestros diseños. Figura 1.2 (Fuente: http://www.mikroe.com)
  • 14. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 4 Placa entrenadora de Mikroelektronika: una herramienta diseñada para trabajar en conjunto con los compiladores de mikroElektronika, proporcionan diferentes módulos interconectados entre ellos, facilitando la elaboración de prácticas con microcontroladores. Estos entrenadores de microcontroladores además incorporan su propio programador de microcontroladores PIC de conexión USB 2.0. El entrenador recomendado en esta edición es el EasyPIC5. Figura 1.3 (Fuente: http://www.mikroe.com/en/tools/easypic5) Herramientas de corte, extractor de circuitos integrados, cable rígido para conexiones en la placa de prototipos. Figura 1.4
  • 15. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 5 Osciloscopio: este instrumento se requiere para el desarrollo de algunas prácticas en las cuales se hace necesario medir las señales generadas desde el microcontrolador. Figura 1.5 Componentes electrónicos: microcontroladores PIC en los modelos definidos en cada ejemplo práctico, resistencias, diodos, servomotores, condensadores, cristales y otros componentes de fácil adquisición. Cada proyecto cuenta con una tabla en la cual se describen los componentes electrónicos que deberán ser utilizados en el cada montaje. Figura 1.6
  • 16. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 6 1.2.- Entorno de Desarrollo Integrado de mikroBasic. MikroBasic cuenta con su propia interfaz de programación la cual podemos descargar de la pagina oficial http://www.mikroe.com en su versión de demostración y con sus respectivas limitaciones. Para obtener una versión completa de este compilador, será necesario efectuar la compra on-line, la cual puede ser tangible o no tangible, es decir, para descargar on-line una vez aprobada la compra, o para recibir en nuestros hogares en físico. El link para la descarga es el siguiente: http://www.mikroe.com/en/download/ Figura 1.7 El archivo descargado del link anteriormente mencionado luce como se muestra a continuación: Figura 1.8
  • 17. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 7 Haciendo doble clic sobre el mismo, iniciamos el proceso de instalación del programa. Figura 1.9 Figura 1.10 En la figura anterior podemos ver la ventana de bienvenida, y al hacer clic en siguiente, la ventana del contrato de licencia para el usuario.
  • 18. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 8 Figura 1.11 Para poder continuar con la instalación, seleccionamos la opción de aceptación de los términos explicados en el acuerdo de licencia, y seguidamente hacemos clic en “Next”. A continuación veremos los componentes del programa disponibles para la instalación: El compilador. Los archivos de ayuda del compilador. Ejemplos de programas desarrollados para los módulos del circuito entrenador de Mikroelektronika.
  • 19. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 9 Figura 1.12 Al hacer clic en el botón “Next”, veremos la ruta de instalación por defecto del compilador en nuestro PC. Figura 1.13
  • 20. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 10 Podemos dejar la ruta sugerida o podemos cambiarla según convenga. Al haber seleccionado anteriormente todos los componentes en la instalación, podemos observar que el espacio requerido se acerca a los 75 MB. Ahora para iniciar la instalación, hacemos clic en el botón “Install”, acción con la cual veremos el progreso de la instalación en nuestro disco, como lo demuestran las siguientes imágenes: Figura 1.14 Figura 1.15
  • 21. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 11 Figura 1.16 Figura 1.17
  • 22. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 12 Al hacer clic en el botón “Finish”, el programa de instalación nos preguntará si deseamos instalar el soporte ICD (In-Circuit Debugger) de mikroBasic: Figura 1.18 Figura 1.19 Al hacer clic en el botón “Si” veremos la ventana de bienvenida a la guía de instalación, y seguidamente nos encontraremos con la ventana del acuerdo de licencia de programa.
  • 23. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 13 Figura 1.20 Seleccionamos la opción para la aceptación de la licencia y hacemos clic en el botón “Next”. Un componente adicional a seleccionar es el software para el programador de microcontroladores de mikroelektronika. Si ya poseemos el hardware correspondiente a este software, seleccionamos la casilla para la instalación del software “PicFlash”. Este programador viene integrado en las tarjetas entrenadoras, e incluso se vende por separado en su versión USB.
  • 24. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 14 Figura 1.21 Haciendo clic en el botón “Next”, estaremos viendo la ruta de instalación por defecto o ruta sugerida por el programa de instalación. Esta ruta se puede mantener igual o ser cambiada según convenga al usuario. Una vez seleccionada la ruta, hacemos clic en el botón “Install” y esperamos a que termine el proceso de instalación como se muestra en las siguientes imágenes: Figura 1.22
  • 25. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 15 Figura 1.23 El siguiente paso será la instalación para el soporte Lv18PICFLASH: Figura 1.24
  • 26. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 16 Figura 1.25 Figura 1.26
  • 27. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 17 Figura 1.27 Figura 1.28
  • 28. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 18 Figura 1.29 También será necesaria la instalación de los drivers para el programador de microcontroladores de mikroelektronika: Figura 1.30
  • 29. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 19 Figura 1.31 Terminada la instalación de drivers, la instalación de mikroBasic nos pregunta si deseamos ejecutar el software inmediatamente. Al hacer clic en el botón “Si” podremos ver que la interfaz de programación se abre y queda lista para iniciar a programar nuestros proyectos. Inicialmente se podrá observar que la misma abre automáticamente un ejemplo de programación en lenguaje Basic, “Led_Blinking.pbas”. Figura 1.32
  • 30. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 20 Figura 1.33 Figura 1.34
  • 31. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 21 1.3.- Estructura de un programa: Para que nuestros programas tengan una apariencia ordenada y se facilite la comprensión del mismo ante otros programadores que deseen realizar mejoras a éste, es necesario establecer una estructura que nos permita identificar fácilmente cada una de las partes que lo componen. Figura 1.35 En la figura 1.35 se puede observar la estructura básica de un programa hecho en mikroBasic, y en la cual hemos identificado las cuatro secciones que consideramos más importantes para lograr un programa bien estructurado. Sección A: Corresponde al encabezado del programa, en el cual siempre es conveniente incorporar información básica del mismo, como el nombre, la identificación de autor, Copyright, fecha de elaboración o fecha de los últimos cambios realizados, versión del programa que se está realizando, e incluso una breve descripción acerca del objetivo del programa y su aplicación en un determinado circuito electrónico. Sección B: Esta sección empieza en la columna cero del editor de texto de mikroBasic, y en ella se pueden declarar variables, sub-funciones, configuraciones de dispositivos periféricos y etiquetas de cada una de las subrutinas que serán programadas. Las etiquetas identifican puntos específicos o subrutinas dentro de un programa. Son definidas por el programador y deben tener al final de cada una de ellas el símbolo de “dos puntos”, que definen el final de la misma. A B C D
  • 32. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 22 Sección C: Estará destinada para las instrucciones de programa y la misma está separada de la columna cero del editor de texto por una tabulación, es decir, cuando el cursor se encuentra en la columna cero, presionamos una vez la tecla “TAB”, y de esta manera establecemos un espacio mínimo, siempre igual o superior entre la sección B y C. Sección D: Esta destinada para realizar comentarios acerca de la función que estará cumpliendo una instrucción específica en nuestro programa. Cada comentario debe empezar siempre con una comilla simple como se muestra a continuación: ' Define el Oscilador para un Cristal ' de 4 Mhz. Cuando un comentario es demasiado extenso, podemos continuar el mismo en la siguiente línea, siempre que la frase comience con su respectiva comilla. Los comentarios ayudan al diseñador a identificar cada línea de programa o cada una de las funciones de cada subrutina, garantizando así una buena documentación en cada uno de los programas que realizamos.
  • 33. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 23 1.4.- Crear un nuevo proyecto en mikroBasic: Saber como crear un proyecto en mikroBasic es un paso sencillo pero muy importante, ya que de ello depende que nuestros programas sean compilados correctamente. Veamos a continuación los pasos a seguir: Desplegamos el menú “Project” y seguidamente seleccionamos la opción “New Project”. Enseguida veremos la ventana de bienvenida. Figura 1.36 En el paso 1, seleccionamos la opción “Next” para pasar a la siguiente ventana en la cual elegiremos el modelo de microcontrolador que deseamos utilizar en nuestro proyecto.
  • 34. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 24 Figura 1.37 En el paso 2 debemos seleccionar el valor exacto del cristal que estaremos utilizando como oscilador externo de nuestro microcontrolador PIC. Figura 1.38
  • 35. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 25 En el paso 3, debemos seleccionar la ruta sobre la cual deseamos grabar el proyecto, al igual que el nombre del proyecto. Para esto, simplemente seleccionamos la carpeta señalada en la figura 1.39, a través de la cual podremos acceder a cualquiera de las unidades de almacenamiento en nuestro PC. Figura 1.39 Figura 1.40
  • 36. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 26 Figura 1.41 En el paso 4 es posible agregar a nuestros proyectos archivos que contengan código creado con anterioridad, los cuales pudieran contener subrutinas generalizadas para el control de periféricos comunes como pantallas LCD o teclados. En caso de no disponer de ningún archivo adicional para el proyecto, simplemente continuamos seleccionando la opción “Next”. Figura 1.42
  • 37. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 27 En el paso 5 tenemos la opción de incluir todas las librerías disponibles para el microcontrolador anteriormente seleccionado en nuestro proyecto. También tenemos la opción de no incluir ninguna de ellas. Esto se debe a que mikroBasic cuenta con una amplia selección de librerías para el control de dispositivos periféricos o procesos de cálculo o conversión de datos que nos permitirán hacer de la programación algo fácil y rápida a la hora de diseñar un programa, pero no necesariamente necesitaremos de todas las librerías en un solo proyecto. Si elegimos la opción “Include All” podremos estar seguros de que cada librería empleada en nuestro programa funcionará correctamente. Si elegimos la opción “Include None (Advance)” tendremos que realizar la selección de las librerías que deseamos utilizar desde el administrador de librerías de mikroBasic, el cual veremos mas adelante. Figura 1.43 El paso 6 en la creación de un nuevo proyecto nos dice que hemos finalizado la configuración del mismo. MikroBasic esta ahora listo para empezar a programar nuestro primer proyecto, tal y como se puede observar en la figura 1.44.
  • 38. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 28 Figura 1.44 Figura 1.45
  • 39. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 29 1.5.- Conociendo el entorno de desarrollo integrado. MikroBasic cuenta con un entorno de desarrollo integrado bastante completo y apropiado. En él podremos encontrar una serie de opciones y herramientas, de las cuales hemos resaltado las que consideramos más importantes a la hora de elaborar un programa. Figura 1.46 En la sección A, podemos encontrar las opciones del menú principal, además de todos los accesos directos a cada funcion del software a través de pequeños botones ordenados y de fácil acceso. La sección B es el editor en el cual se escribirán los programas de cada proyecto bajo las recomendaciones realizadas en punto 1.3 de este capítulo. A B C D E
  • 40. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 30 En la sección C se puede observar el administrador de librerías, el cual deberá ser tomado en cuenta siempre que nuestros proyectos incluyan el uso de cualquiera de las librerías disponibles en mikroBasic. En la sección D se encuentra en explorador de código el cual resulta my útil cuando realizamos programas muy extensos. En él se muestra cada elemento declarado en un programa. Podremos acceder directamente a uno de estos elementos haciendo doble clic en ellos. La sección E muestra dos pestañas importantes. La primera pestaña se llama “Messages” o “Mensajes”, contiene un área en la cual se mostrarán los resultados del procedimiento de compilación de un programa. Si se genera un error de compilación, éste será mostrado en esta ventana mostrando el tipo de error y su ubicación en la ventana de edición. La segunda pestaña se llama “Quick Converter” y contiene una herramienta de conversión de unidades en diferentes formatos. Veamos a continuación la descripción de cada menú en la sección A de la imagen 1.46. Menú “File”: Figura 1.47 New Unit: Abre una nueva ventana de edición de programas para mikroBasic. En esta ventana escribiremos el código de programa de nuestros proyectos. Open: A través de esta opción podremos abrir cualquier archivo asociado a nuestros proyectos de programación. Recent Files: Al seleccionar esta opción, podremos ver una lista de nombres de los archivos mas recientes en los cuales hemos estado trabajando.
  • 41. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 31 Save: Salva o guarda los cambios realizados en la ventana de programación. Save As: Salva o guarda los cambios realizados en la ventana de programación con un nombre o ruta diferente. Close: Cierra la ventana de código activa. Print Preview: Una vista previa de la ventana de código activa antes de la impresión. Print: Imprime la ventana de código Activa. Exit: Cierra el entorno de programación de mikroBasic. Menú “Edit”: Figura 1.48 Undo: Deshace el último cambio en el editor. Redo: Rehace el último cambio en el editor.
  • 42. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 32 Cut: Corta el texto seleccionado y lo coloca en el portapapeles. Copy: Copia el texto seleccionado y lo coloca en el portapapeles. Paste: Pega el contenido del portapapeles en el editor. Delete: Borra el texto seleccionado. Select All: Selecciona todo el texto en la ventana activa del editor. Find: Despliega la ventana de búsqueda del editor de texto. Find Next: Busca la siguiente coincidencia de texto en la ventana activa del editor. Find Previous: Busca la coincidencia anterior en la ventana activa del editor. Replace: Reemplaza el texto especificado por el usuario en la ventana activa del editor. Find In Files: Busca un texto en la ventana o ventanas activas, e incluso de alguna carpeta especificada por el usuario. Goto Line: Va a la línea deseada en la ventana activa del editor. Sub-Menú “Advanced”: Figura 1.49
  • 43. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 33 Comment: Convierte líneas de código de programa previamente seleccionadas en comentarios. Si no hemos seleccionado ninguna línea de código, simplemente aparece una comilla simple, asignando el resto de la línea como un espacio disponible para realizar comentarios. Uncomment: Remueve la propiedad de comentario de una o varias líneas seleccionadas. Indent: Aplica una tabulación o sangría al texto seleccionado. Outdent: Elimina una tabulación o sangría al texto seleccionado. Lowercase: Cambia todo el texto seleccionado a minúsculas. Uppercase: Cambia todo el texto seleccionado a mayúsculas. Titlecase: Cambia a mayúscula la primera letra del texto seleccionado. Menú “View”: Figura 1.50 Sub-Menú “Toolbars”: A través de este sub-menú podemos seleccionar cuales herramientas estarán visibles o disponibles en la sección “A” del entorno de desarrollo integrado.
  • 44. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 34 Figura 1.51 Sub-menú “Debug Windows”: A través de este sub-menú podemos seleccionar las ventanas disponibles en el depurador de mikroBasic. Figura 1.52 Routine List o Lista de Rutinas: Muestra la ventana en la cual podremos ver una lista de todas las rutinas que hemos creado en un programa. Al hacer doble clic sobre el nombre de la rutina, el editor posiciona el cursor al inicio de ésta.
  • 45. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 35 Figura 1.53 Project Settings: Despliega la ventana de configuración del proyecto, en la cual podemos seleccionar el modelo de microcontrolador PIC que deseamos utilizar en nuestro proyecto, la frecuencia o valor del cristal del oscilador externo, y por último las opciones disponibles para la compilación y ventana de depuración de mikroBasic. Figura 1.54
  • 46. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 36 Code Explorer o Explorador de Código: Despliega la ventana del explorador de código de mikroBasic. Figura 1.55 Project Manager o Administrador de Proyectos: A través de esta ventana es posible acceder a todo el contenido del proyecto. Figura 1.56 Esta ventana posee además botones de acceso rápido a algunas funciones importantes: o Salvar un grupo de proyectos: En mikroBasic es posible tener más de un proyecto abierto en entorno de desarrollo integrado. Este botón nos permitirá almacenar este grupo de proyectos bajo un único nombre. En la
  • 47. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 37 siguiente figura se muestra un ejemplo de un grupo de proyectos disponibles en la ventana de administración de proyectos. Figura 1.57 Abrir un grupo de proyectos: A través de esta opción podremos abrir un grupo de proyectos previamente creado. Cerrar un Proyecto. Cerrar un grupo de proyectos. Agregar un proyecto al grupo de proyectos actual. Eliminar un proyecto del grupo de proyectos actual. Agregar un archivo al proyecto activo. Eliminar un archivo del proyecto activo. Compilar un proyecto. Inicia el software de programación de microcontroladores PIC de mikroElektronika.
  • 48. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 38 Library Manager o Administrador de Librerías: El administrador de librerías de mikroBasic contiene todas las librerías disponibles para un microcontrolador previamente seleccionado. Figura 1.58 Actualiza el administrador de librerías. Compila todas las librerías disponibles. Incluye todas las librerías en un proyecto. No incluye ninguna de las librerías en el proyecto. Restaura el estado de las librerías justo antes de la última grabación del proyecto. Bookmarks o Marcadores: Esta opción despliega una ventana en la cual podremos agregar accesos directos a puntos específicos en un programa. Al hacer doble clic en alguno de estos accesos directos, el cursor se ubicará automáticamente en la línea o dirección especificada.
  • 49. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 39 Figura 1.59 Quick Converter o Conversor rápido de datos: Despliega la ventana de conversión de datos de mikroBasic. Messages o Mensajes: Despliega la ventana de mensajes de error del compilador. Macro Editor o Editor de Macros: Despliega una ventana en la cual podremos grabar una secuencia de acciones sobre el entorno de desarrollo integrado, es decir, podríamos grabar una secuencia de ordenes que nos permita por ejemplo abrir el terminal de comunicaciones de mikroBasic y hacer que se conecte bajo ciertos parámetros específicos con tan solo activar su Macro correspondiente. Figura 1.60 Inicia el proceso de grabación en la secuencia de pulsaciones de teclas sobre el entorno de desarrollo integrado de mikroBasic. Detiene el proceso de grabación de la secuencia de pulsaciones de teclas.
  • 50. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 40 Permite ejecutar una Macro previamente grabada. Crea un nuevo Macro. Borra la Macro seleccionada. Windows o Ventanas: A través de esta opción podremos ver un listado de todas las ventanas desplegables en el entorno de desarrollo integrado de mikroBasic. Menú “Project”: Figura 1.61
  • 51. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 41 Build: Compila el proyecto activo en el entorno de desarrollo de integrado. Build All Projects: Compila todos los proyectos abiertos. Build + Program: Compila y programa el proyecto activo. View Assembly: Muestra el código generado en lenguaje ensamblador. View Statistics: Muestra las estadísticas del proyecto activo. View Listing: Muestra el listado de asignación de memoria del PIC: direcciones de instrucciones, registros, las rutinas y las etiquetas. Edit Search Paths: Edita rutas de búsqueda. Clean Project Folder: Esta opción limpia o borra de la carpeta de proyecto los archivos generados cuando se realiza la compilación del mismo. Add File To Project: Permite agregar cualquier tipo de archivo relacionado a un proyecto en desarrollo. Remove File From Project: Borra un archivo específico de un proyecto. Import Project: Permite importar proyectos de versiones anteriores de mikroBasic. New Project: Abre el asistente para la creación de nuevos proyectos. Open Project: Abre un proyecto existente. Save Project: Salva un proyecto activo en el entorno de desarrollo integrado. Edit Project: Despliega una ventana a través de la cual podemos configurar los fusibles de programación del microcontrolador.
  • 52. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 42 Figura 1.62 Open Project Group: Abrir un grupo de proyectos: A través de esta opción podremos abrir un grupo de proyectos previamente creado. Close Project Group: Cerrar un grupo de proyectos. Save Project As: Permite salvar un proyecto con un nombre diferente. Recent Projects: Muestra un listado de los proyectos abiertos últimamente. Close Project: Cierra un proyecto activo. Menú “Run”: Contiene todos los comandos relacionados con el depurador de mikroBasic. Figura 1.63
  • 53. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 43 Menú “Tools”: Contiene todas las herramientas disponibles en mikroBasic. Figura 1.64 Menú “Help”: A través de este menú podremos acceder a toda la ayuda disponible acerca del compilador, accesos directos al foro de discusión, página Web oficial de mikroElektronika, formulario de registro del compilador e información de registro actual. Figura 1.65
  • 54. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 44 Nota Importante: En la versión DEMO del compilador mikroBasic, el archivo de salida .HEX generado cuando compilamos un programa esta limitado a 2K bytes. Es muy importante que adquiera la licencia correspondiente para la versión completa del compilador, para poder llevar a cabo todos los ejemplos propuestos en esta edición. La licencia es suministrada en línea por la empresa “MikroElektronika” y el proceso de registro es sumamente sencillo. Tener la licencia del compilador nos garantiza además el acceso al soporte técnico de la empresa y el acceso a las continuas actualizaciones que se realizan para mejorar el producto. Figura 1.66
  • 55. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 45 1.6.- Componentes y operadores en mikroBasic. 1.6.1.- Subrutinas: Una subrutina se presenta como un algoritmo separado del algoritmo principal, y estará destinado a resolver una tarea específica. Las subrutinas pueden ser referidas cada vez que sea necesario, llamando a la etiqueta que corresponde a ésta, la cual debe ir siempre al inicio de la misma. Led1: For Z = 0 To 9 LED = Encendido Delay_ms(1000) LED = Apagado Delay_ms(1000) Next Z GoTo Inicio End. MikroBasic cuenta con una serie de herramientas de programación entre las cuales podemos mencionar las etiquetas, variables, identificadores, constantes, comentarios y símbolos entre otras. Algunas de estas herramientas son de uso obligatorio a la hora de realizar un programa, y otras que no son de uso obligatorio, nos facilitarán el trabajo considerablemente. 1.6.2.- Variables: En las variables podemos almacenar datos temporalmente, los cuales podrán ser consultados o modificados cada vez que sea necesario. Normalmente la definición de variables se hace al inicio de un programa y para ello se utiliza el formato: DIM “variable” As “tipo de variable” Tipo de Variable Tamaño Rango bit 1–bit 0 or 1 sbit 1–bit 0 or 1 byte, char 8–bit 0 .. 255 short 8–bit -127 .. 128 word 16–bit 0 .. 65535 integer 16–bit -32768 .. 32767 longword 32–bit 0 .. 4294967295 longint 32–bit -2147483648 .. 2147483647 float 32–bit ±1.17549435082 * 10-38 .. ±6.80564774407 * 1038 Figura 1.67 El nombre de la variable es elegido por el programador y el tipo de variable se define según el tipo de dato que se desea almacenar temporalmente. Subrutina Etiqueta
  • 56. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 46 1.6.3.- Arrays: Las variables Arrays tienen un determinado número de “elementos”, definido según el tamaño de la variable. Las variables Arrays tipo Bit, pueden almacenar 256 elementos; las variables Arrays tipo Byte pueden almacenar hasta 96 elementos y las variables Arrays tipo Word hasta 48 elementos, los cuales se pueden accesar en cualquiera de los tres casos a través de un índice. Este índice se específica entre corchetes como se muestra en los siguientes ejemplos: Para declarar una variable tipo Array utilizamos la siguiente sintaxis: Dim Variable As Byte[7] El primer elemento de esta variable es Dato[0] y el último elemento es Dato[7], lo cual significa que hemos declarado una variable array de 8 elementos. En este caso podemos almacenar un byte en cada elemento, siempre que especifiquemos el índice. Ejemplo: Almacenar en cada elemento de la variable “Dato” los valores 200, 15, 56, 75, 80, 20, 33, 45. Dato[0] = 200 Dato[1] = 15 Dato[2] = 56 Dato[3] = 75 Dato[4] = 80 Dato[5] = 20 Dato[6] = 33 Dato[7] = 45 En algunos casos se debe verificar la hoja de datos del microcontrolador, ya que la cantidad de elementos que se pueden almacenar en variables Arrays tipo Byte o Word puede variar según el modelo del mismo. 1.6.4.- Constantes: Ayudan a identificar un valor constante en nuestro programa, facilitando aún más la comprensión del mismo a la hora de verificar su funcionamiento. Las constantes deben ser siempre declaradas al inicio de un programa, junto con las variables (área de declaración). La sintaxis para declarar una constante es la siguiente: Const “nombre de la constante” As “tipo” = “Valor” Ejemplo: Const PI As Float = 3.1416 Const Meses As Byte[12] = (31,28,31,30,31,30,31,31,30,31,30,31)
  • 57. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 47 1.6.5.- Alias: Proveen un nombre único y específico a elementos o variables dentro de nuestro programa. Para definir un símbolo, utilizamos la palabra “Symbol”, seguida del alias del elemento, el símbolo de igualdad “=”, y por último el elemento en cuestión: Symbol {alias} = {elemento} Por ejemplo, si deseamos controlar un motor DC a través de uno de los pines del puerto A de un microcontrolador, resultaría mucho mas sencillo referirse a este pin como “Motor”, en vez de referirse a él como “PortA.0”. Entonces, Symbol Motor = PORTA.0 Veamos otros ejemplos: Symbol Relay = PORTB.0 Symbol Sensor = PORTA.0 Symbol LED = PORTA.1 Symbol RC0 = PORTC.0 1.6.6.- Operadores Aritméticos: Entre los operadores aritméticos más utilizados tenemos los que se muestran en la siguiente tabla: Operadores Operación Operandos Resultado + Suma byte, short, word, integer, longint, longword, float byte, short, word, integer, longint, longword, float - Resta byte, short, word, integer, longint, longword, float byte, short, word, integer, longint, longword, float * multiplicación byte, short, word, integer, longint, longword, float word, integer, longint, longword, float / División, en punto flotante. byte, short, word, integer, longint, longword, float float div División, redondea hacia el entero mas cercano. byte, short, word, integer, longint, longword byte, short, word, integer, longint, longword mod módulo, devuelve el resto de la división entera (no se puede utilizar con punto flotante) byte, short, word, integer, longint, longword byte, short, word, integer, longint, longword Figura 1.68
  • 58. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 48 1.6.7.- Operadores Bit a Bit: En la siguiente tabla veremos los operadores binarios proporcionados para el lenguaje Basic: Operador Operación and AND Lógico or OR Lógico xor OR Exclusiva (XOR) not NOT Lógico Figura 1.69 Con estos operadores resulta muy sencillo realizar operaciones binarias, como lo demuestra el siguiente ejemplo: Si aplicamos una AND lógica, donde deseamos filtrar los siete bits más significativos del valor almacenado en la siguiente variable: Var1 = %00101001 Entonces, Var1 = Var1 and %00000001 El resultado de esta operación es Var1 = %00000001 1.6.8.- Operadores de Comparación: Los operadores de comparación normalmente son utilizados con la instrucción If…Them… para realizar comparaciones entre variables o datos extraídos de alguna operación aritmética. Operador Operación = Igual <> Diferente > Mayor que < Menor que >= Mayor o Igual que <= Menor o Igual que Figura 1.70
  • 59. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 49 Capitulo II 2.1.- Arquitectura básica del microcontrolador PIC16F877. Para iniciar con el estudio de la programación en mikroBasic, nos plantearemos tres objetivos que consideramos importantes para entrar en materia: Familiarizarse con la arquitectura básica de los microcontroladores que estaremos empleando a lo largo de esta edición. Familiarizarse con la estructura de programa de mikroBasic, muy importante a la hora de realizar un programa ordenado y libre de errores, por muy pequeño que este sea. El estudio de las primeras prácticas, cortas y de fácil comprensión con el fin de adquirir confianza en el uso de instrucciones y librerías de mikroBasic. Arquitectura Básica del microcontrolador PIC16F877: Uno de los microcontroladores seleccionados para el estudio de la programación de microcontroladores en lenguaje Basic ha sido el PIC16F877. Veamos a continuación algunas de sus características técnicas más importantes: CPU: Risc (Reduced Instruction Set Computer). Frecuencia Máxima: 20 Mhz. Memoria RAM: 368 x 8 Bytes de memoria de Datos. EEPROM: 256 x 8 Bytes de memoria EEPROM de datos. Memoria de programa Flash: 8KB x 14 Bits. Protección de código programable. Voltaje de Operación: 2.0 voltios a 5.5 voltios. Bajo consumo de potencia: < 0.6 mA typical @ 3V, 4 Mhz / kHz. 5 puertos digitales programables como entrada/salida: A, B, C, D, E. 1 conversor A/D de 8 canales x 10 Bits. Puerto Serial Síncrono (SSP) con SPI e I2C.
  • 60. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 50 Puerto Serial Universal (USART/SCI). 2 Módulos CCP (Capture, Compare, PWM) 3 Timers: Timer0 8 Bits contador/temporizador y pre-escalador de 8 Bits; Timer1 16 Bits contador/temporizador y pre-escalador; Timer2 8 Bits contador/temporizador con registro de 8 Bits, pre-escalador y Post-Escalador. Figura 2.1
  • 61. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 51 Descripción de los pines del microcontrolador PIC16F877: PIN Identificación Descripción del Pin 1 MCLR/Vpp Reset y entrada de voltaje de programación. 2 RA0/AN0 Pin de Entrada/Salida (I/O) del puerto A 3 RA1/AN1 Pin de Entrada/Salida (I/O) del puerto A 4 RA2/AN2/Vref- Pin de Entrada/Salida (I/O) del puerto A 5 RA3/AN3/Vref+ Pin de Entrada/Salida (I/O) del puerto A 6 RA4/TOCKI Pin de Entrada/Salida (I/O) del puerto A 7 RA5/AN4/SS Pin de Entrada/Salida (I/O) del puerto A 8 RE0/RD/AN5 Pin de Entrada/Salida (I/O) del puerto E 9 RE1/WR/AN6 Pin de Entrada/Salida (I/O) del puerto E 10 RE2/CS/AN7 Pin de Entrada/Salida (I/O) del puerto E 11 VDD Pin de Alimentación de 5Vdc 12 VSS Pin de Alimentación a Tierra (GND) 13 OCS2/CLKOUT Salida del oscilador a cristal. 14 OSC1/CLKIN Entrada del oscilador a cristal o fuente externa de reloj. 15 RC0/T1OSO/T1CKI Pin de Entrada/Salida (I/O) del puerto C 16 RC1/T1OSI/CCP2 Pin de Entrada/Salida (I/O) del puerto C 17 RC2/CCP1 Pin de Entrada/Salida (I/O) del puerto C 18 RC3/SCK/SCL Pin de Entrada/Salida (I/O) del puerto C 19 RD0/PSP0 Pin de Entrada/Salida (I/O) del puerto D 20 RD1/PSP1 Pin de Entrada/Salida (I/O) del puerto D 21 RD2/PSP2 Pin de Entrada/Salida (I/O) del puerto D 22 RD3/PSP3 Pin de Entrada/Salida (I/O) del puerto D 23 RC4/SDI/SDA Pin de Entrada/Salida (I/O) del puerto C 24 RC5/SDO Pin de Entrada/Salida (I/O) del puerto C 25 RC6/TX/CK Pin de Entrada/Salida (I/O) del puerto C 26 RC7/RX/DT Pin de Entrada/Salida (I/O) del puerto C 27 RD4/PSP4 Pin de Entrada/Salida (I/O) del puerto D 28 RD5/PSP5 Pin de Entrada/Salida (I/O) del puerto D 29 RD6/PSP6 Pin de Entrada/Salida (I/O) del puerto D 30 RD7/PSP7 Pin de Entrada/Salida (I/O) del puerto D 31 VSS Pin de Alimentación a Tierra (GND) 32 VDD Pin de Alimentación de 5Vdc 33 RB0/INT Pin de Entrada/Salida (I/O) del puerto B 34 RB1 Pin de Entrada/Salida (I/O) del puerto B 35 RB2 Pin de Entrada/Salida (I/O) del puerto B 36 RB3/PGM Pin de Entrada/Salida (I/O) del puerto B 37 RB4 Pin de Entrada/Salida (I/O) del puerto B 38 RB5 Pin de Entrada/Salida (I/O) del puerto B 39 RB6/PGC Pin de Entrada/Salida (I/O) del puerto B 40 RB7/PGD Pin de Entrada/Salida (I/O) del puerto B Figura 2.2
  • 62. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 52 2.2.- El Oscilador externo. Figura 2.3 Es un circuito indispensable para el funcionamiento del microcontrolador y el cual además, define la velocidad a la cual va a trabajar. Para hacer funcionar nuestro diseño podemos elegir entre las siguientes cuatro opciones: Oscilador LP: Oscilador de bajo consumo (Low Power). Oscilador XT: Cristal / Resonador. Oscilador HS: Oscilador de alta velocidad (High Speed). Oscilador RC: Resistencia / Condensador. En los modos de oscilador LP, XT y HS el cristal debe ser conectado a los pines 13 y 14, Osc2/CLKin y Osc1/CLKout respectivamente, como se muestra en la figura 2.4.
  • 63. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 53 Los valores de los condensadores cerámicos vienen dados según la tabla que se muestra a continuación: Modo Frecuencia Osc1/CLKin Osc2/CLKout LP 32 kHz 200 kHz 68 - 100 pF 15 - 33 pF 68 - 100 pF 15 - 33 pF XT 2 MHz 4 MHz 15 - 33 pF 15 - 33 pF 15 - 33 pF 15 - 33 pF HS 4 MHz 10 MHz 15 - 33 pF 15 - 33 pF 15 - 33 pF 15 - 33 pF Figura 2.4 Por ejemplo, para un oscilador tipo XT, podemos utilizar un cristal de cuarzo como el de la figura 2.5. Figura 2.5 Al conectar el microcontrolador a la fuente de alimentación de 5 Vdc y medir la señal de salida del oscilador XT con un osciloscopio, en el pin 14 (Osc2/CLKout) del microcontrolador, podremos ver la onda generada bajo los siguientes parámetros de medición seleccionados en el equipo: Voltios/Div: 200mV Time/Div: 100ns Figura 2.6
  • 64. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 54 La lectura de la frecuencia y período en este caso sería la siguiente: Frecuencia: 3,972 Mhz Período: 251,71 ns Cristal de cuarzo TTL: Este tipo de cristal consta de cuatro pines, de los cuales solo tres están implementados de la siguiente manera: Figura 2.7 Pin 1: NC (Este pin no se encuentra conectado internamente) Pin 7: GND Pin 8: Salida TTL Pin 14: +5Vdc En su salida se obtiene un tren de pulsos como se puede observar en la figura 2.8, bajo los siguientes parámetros de medición seleccionados en un osciloscopio: Voltios/Div: 2V Time/Div: 100ns Figura 2.8
  • 65. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 55 La lectura de la frecuencia y período en este caso sería la siguiente: Frecuencia: 3,999 Mhz Período: 250,013 ns El oscilador externo en modo RC resulta ser el más sencillo de todos y por ende el más económico. Su configuración lo hace menos preciso debido a que existe una tolerancia de error en sus componentes, sin olvidar también que la temperatura puede afectar la operación de este tipo de oscilador. Los valores recomendados para este oscilador son los siguientes: 5 Kohm C1 > 20 pF Figura 2.9
  • 66. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 56 2.3.- Circuito de Reset: El Pin denominado MCLR (Master Clear), siempre debe ser tomado en cuenta cuando se diseña un circuito con microcontroladores PIC. A través de este Pin se podrá reiniciar el dispositivo, si a éste se le aplica un nivel lógico bajo (0V), por lo tanto resulta importante destacar que para que un programa cargado en un microcontrolador se mantenga en ejecución, el Pin MCLR debe estar siempre en un nivel lógico alto (5V). Si deseamos tener control externo del reset de un microcontrolador PIC, debemos considerar el circuito de la figura 2.10: Figura 2.10 Este circuito permite reiniciar el microcontrolador cada vez que el pulsador de “Reset” es presionado.
  • 67. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 57 2.4.- Consideraciones técnicas de diseño. A continuación veremos algunos circuitos básicos que deben ser tomados en cuenta para el desarrollo de prácticas con microcontroladores PIC. Estos circuitos son muy útiles cuando deseamos visualizar el resultado de una acción programada en el microcontrolador. 2.4.1.- Estado Lógico de un pin I/O. Una manera muy sencilla de ver el estado lógico de un pin configurado como salida en cualquiera de los puertos de microcontrolador es a través del uso de Leds, como se observa en los circuitos de la figura 3.11. En el circuito, el Led “D1” se iluminará solo cuando el estado lógico del pin de salida del puerto (RB1) sea igual a “1”, es decir, 5 voltios. El Led “D2” se iluminará solo cuando el estado lógico de la salida del puerto (RB0) sea igual a “0”, es decir, 0 voltios. Figura 2.11 Esto significa que si deseamos realizar un programa en mikroBasic encargado de cambiar el estado lógico de un pin específico, en cualquiera de los puertos de un microcontrolador, una forma “básica” de visualizar este cambio es a través del uso de Leds.
  • 68. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 58 2.4.2.- Lectura de un estado lógico en un pin I/O: El microcontrolador también nos permite capturar datos o señales externas para luego ser procesadas y convertidas en respuestas que pueden definir una acción específica en nuestros circuitos de prueba. Un ejemplo común podría ser el uso de un pulsador para hacer destellar un led cada vez que éste sea presionado. Si deseamos introducir un nivel lógico bajo (0V), o alto (5V), a una de las entradas de un microcontrolador a través de un pulsador, podríamos considerar los circuitos de la figura 2.12, los cuales nos proporcionan dos formas diferentes de hacerlo: Figura 2.12 El primer circuito en la figura 2.12 mantiene un nivel lógico alto (5V) mientras el pulsador permanece abierto. Al presionar el pulsador, el nivel lógico en el pin I/O del puerto pasa a ser bajo (0V). El segundo circuito de la figura 2.12 mantiene un nivel lógico bajo (0V) mientras el pulsador permanece abierto. Al presionar el pulsador, el nivel lógico en el pin I/O del puerto pasa a ser alto (5V).
  • 69. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 59 2.4.3.- El Opto-acoplador como dispositivo de enlace: El opto-acoplador es un componente muy útil cuando se requiere acoplar circuitos electrónicos digitales con etapas de manejo de potencia o con otros circuitos. Este componente en una de sus versiones, se compone básicamente de un diodo LED el cual se encarga de iluminar un fototransistor, para que éste conduzca corriente a través del colector. Figura 2.13 En la configuración de la figura 2.13, cuando en el pin I/O aplicamos un 1 lógico (5V), el LED del opto-acoplador enciende y el fototransistor conduce la corriente a tierra; por lo tanto, en la salida tendremos un 0 lógico (0V). Si apagamos el LED, el transistor no conduce, de tal manera que en la salida tendremos un 1 lógico (5V). En la configuración de la figura 2.14, cuando en el pin I/O aplicamos un 1 lógico (5V), el LED del opto-acoplador enciende y el fototransistor conduce para poner en la salida un 1 lógico (5V). Mientras haya un 0 lógico en la entrada, el fototransistor permanecerá abierto entre el emisor y colector, dando como resultado un 0 lógico (0V) en la salida.
  • 70. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 60 Figura 2.14 Una configuración muy común para el control de dispositivos de potencia como motores eléctricos, luces incandescentes, solenoides, etc., se puede ver en la figura 2.15, la cual se basa en cualquiera de los dos circuitos antes mencionados (figura 2.13 y figura2.14), en la cual se ha incluido un relé a través del cual circulará la corriente necesaria entre sus contactos, para hacer funcionar cualquiera de estos dispositivos de potencia. Figura 2.15
  • 71. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 61 2.4.4.- Fuente de poder, 5Vdc / 3.3Vdc: En caso de no disponer de una fuente de poder regulada, proponemos la construcción de un diseño sencillo que podemos implementar en todos los proyectos propuestos. En la figura 2.16 se puede observar el diseño de una fuente regulada con salidas de voltaje de +5 Vdc y +3.3 Vdc: Figura 2.16
  • 72. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 62 2.5.- Configuración de Puertos como Entrada o Salida en un microcontrolador PIC. Como los pines de los puertos pueden ser configurados como “entradas” o como “salidas”, es importante tomar en cuenta los registros de configuración de puertos, los cuales para el caso específico del PIC16F877 son cinco: TrisA (registro de configuración I/O del puerto A), es un registro de 8 bits, encargado de determinar cual de los pines del puerto “A” será “entrada” o “salida”. Los tres Bits más significativos de este registro no se encuentran implementados para este modelo de microcontrolador, como se puede observar en el diagrama de pines del dispositivo (figura 2.17). En este caso, el puerto “A” solo cuenta con 5 pines I/O (RA0, RA1, RA2, RA3 y RA4). Para determinar si uno de los pines de un puerto será “entrada” o “salida”, es importante conocer la siguiente regla, la cual aplica para todos los modelos de microcontroladores PIC en los cuales estaremos trabajando: Si configuramos un Bit de un registro TRIS con un “1”, el pin del puerto correspondiente a este Bit se comportará como una “entrada”. Si configuramos un Bit de un registro TRIS con un “0”, el pin del puerto correspondiente a este Bit se comportará como una “salida”. Esto significa que si deseáramos configurar el Pin RA0 del puerto “A” como una “salida”, tendremos entonces que poner un “0” en el Bit 0 del registro “TRISA” Un ejemplo de configuración de los pines I/O del puerto A es el siguiente: 1 1 1 1 0 RA4 RA3 RA2 RA1 RA0 Registro TrisA Figura 2.17 Al ver la figura 2.17, se puede observar que el pin RA0 ha sido configurado como salida y el resto de los pines como entrada. En mikroBasic, expresar este paso en forma de código es muy sencillo: TrisA = %11110 (“%” para expresar la configuración en Binario), ó: TrisA = $1E (”$” para expresar la configuración en Hexadecimal) Bit menos significativo
  • 73. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 63 Esto significa que el puerto A se comportará de la siguiente forma: RA0 = salida. RA1 a RA4 = entradas. TrisB, es un registro de 8 bits en el cual se configuran los pines del puerto B, ya sea como entrada o como salida, por ejemplo: 1 1 1 1 1 1 1 0 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 Registro TrisB Figura 2.18 1 = Entrada (Al configurar un bit del registro TrisB en “1”, éste se comporta como entrada). 0 = Salida (Al configurar un bit del registro TrisB en “0”, éste se comporta como salida). Para el caso particular del puerto B, se puede observar que el pin RB0 ha sido configurado como salida en este ejemplo, y el resto de los pines como entrada. “Consideramos importante configurar los pines que no estarán en uso como entrada, ya que de esta forma podemos evitar daños en el hardware interno del microcontrolador en caso de una conexión errónea al experimentar con éste en un tablero de pruebas.” La configuración en mikroBasic en forma de código de programa en este caso sería: TrisB = %11111110 (si se desea hacer la notación en binario), ó: TrisB = $FE (si se desea hacer la notación en hexadecimal) En este caso podemos determinar que el puerto “B” se comportará de la siguiente forma: RB0 = Salida. RB1 a RB7 = Entradas. El mismo caso aplica para los registros de configuración de los puertos C, D y E. Sus registros de configuración TRISC, TRISD y TRISE deberán ser siempre configurados para determinar su función dentro de un proyecto electrónico. Bit menos significativo
  • 74. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 64 2.6.- Primeros ejemplos de programación en mikroBasic: 2.6.1.- Ejemplo de programación #1: Un ejemplo sencillo para determinar que hemos iniciado de forma correcta todo lo referente a la configuración de un nuevo proyecto en mikroBasic, es intentar realizar el encendido de uno o dos Leds a través de uno de los puertos disponibles en el microcontrolador. Normalmente los pasos que vamos a realizar para lograr este objetivo son los pasos básicos para realizar el resto de nuestros proyectos. Estos pasos serán descritos a continuación y el programa para el encendido de dos Leds estará basado en el diagrama esquemático de la figura 2.19. Figura 2.19 Dos puntos importantes a considerar sobre este diagrama esquemático son: El Led “D1” tiene su “ánodo” conectado al pin RB1 del puerto “B”, por lo tanto el Led sólo encenderá cuando RB1 = 1. El Led “D2” tiene su “cátodo” conectado al pin RB0 del puerto “B”, por lo tanto el Led sólo encenderá cuando RB0 = 0
  • 75. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 65 Empecemos con la creación de un nuevo proyecto, siguiendo los pasos comentados en la sección “Crear un nuevo proyecto en mikroBasic”. Una vez creado el proyecto podremos ver en el entorno de desarrollo integrado de mikroBasic la siguiente ventana de programación: Figura 2.20 Nótese que en la ventana de programación mikroBasic ha generado automáticamente una pequeña estructura de programa que nos servirá de guía para comenzar a programar. En este caso, lo primero que vamos a agregar será la línea de configuración del puerto “B”, ya que en él hemos conectado los Leds que deseamos encender. Para determinar la palabra de configuración del registro TRISB, veamos la siguiente figura: 1 1 1 1 1 1 0 0 RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 Registro TrisB Figura 2.21
  • 76. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 66 TRISB = %11111100 Agregamos esta línea en la estructura del programa: program Ejemplo1 ' Area de declaración. main: ' Programa Principal TRISB = %11111100 ' Configuración del Puerto "B" End. Este paso se verá de la siguiente manera en la pantalla de nuestro PC: Figura 2.22 El siguiente paso será hacer que los Leds enciendan. Para esto es posible especificar el estado de un pin determinado del puerto “B” de la siguiente forma: Para referirnos al Pin RB0: PortB.0 = (estado deseado del pin). Para referirnos al Pin RB1: PortB.1 = (estado deseado del pin).
  • 77. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 67 Veamos: program Ejemplo1 ' Area de declaración. main: ' Programa Principal TRISB = %11111100 ' Configuración del Puerto "B" PORTB.0 = 1 ' El Led D2 enciende con un "0". PORTB.1 = 1 ' El Led D1 enciende con un "1". End. Figura 2.23 Por último y para verificar que todo funciona según lo esperado, compilamos el programa a través del acceso directo “Build” en la barra de herramientas: Build Si el programa no tiene errores, podremos ver en la ventana de errores que el resultado de compilar el programa ha sido satisfactorio:
  • 78. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 68 Figura 2.24 Este resultado significa que el compilador ha creado además el archivo de extensión .hex el cual utilizaremos para grabar el microcontrolador y de esta forma poder verificar el correcto funcionamiento del programa sobre el circuito.
  • 79. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 69 2.6.2.- Ejemplo de programación #2: En este ejemplo hemos cambiado el conexionado de los Leds y hemos incluido dos pulsadores. P1 está conectado entre Vcc y una resistencia “Pull Down” al igual que P2. El estado de los pulsadores será medido a través de los pines RD0 y RD1 del puerto “D”. Esto significa que debemos configurar los pines RD0 y RD1 como entradas a través de registro TRISD, para poder tomar lectura del estado en el cual se encuentran, de tal forma que podamos tomar una decisión y generar una salida en los pines RB0 y RB1. Es importante observar que cuando los dos pulsadores se encuentran normalmente abiertos, el estado de los pines es el siguiente: RD0 = 0 RD1 = 0 Al presionar cada pulsador, el estado en estos pines cambia: RD0 = 1 RD1 = 1 Figura 2.25
  • 80. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 70 El objetivo del programa que haremos a continuación será encender los Leds de forma individual asignando a cada uno de ellos un pulsador. Al encender uno de estos Leds, éste deberá permanecer encendido durante 2 segundos. El Led D1, enciende cuando presionamos el pulsador P1. El Led D2, enciende cuando presionamos el pulsador P2. Analicemos el siguiente programa leyendo detenidamente cada línea de código y sus respectivos comentarios: program Ejemplo2 ' Area de declaración. main: ' Programa Principal. TRISB = %11111100 ' Configuración del Puerto "B" TRISD = %11111111 ' Configuración del Puerto "D" PORTB.0 = 0 ' Inicializamos el pin RB0, para asegurar que el ' el Led D1 esté apagado. PORTB.1 = 0 ' Inicializamos el pin RB1, para asegurar que el ' el Led D2 esté apagado. Pulsadores: If PortD.0 = 1 Then ' Verificamos el estado del pulsador "P1". GoSub Led1 ' Si P1 es presionado, llama a la subrutina "Led1". End If If PortD.1 = 1 Then ' Verificamos el estado del pulsador "P2". GoSub Led2 ' Si P1 es presionado, llama a la subrutina "Led2". End If GoTo Pulsadores ' Salta a la etiqueta "Pulsadores" para iniciar el ' proceso de verificación de los pulsadores. Led1: PORTB.0 = 1 ' Enciende el Led D1, conectado en RB0 delay_ms(2000) ' Hace una pausa de 2 segundos o 2000 milisegundos. PORTB.0 = 0 ' Apaga el Led D1. Return ' Retorno del llamado Gosub. Led2: PORTB.1 = 1 ' Enciende el Led D2, conectado en RB1 delay_ms(2000) ' Hace una pausa de 2 segundos o 2000 milisegundos. PORTB.1 = 0 ' Apaga el Led D2. Return ' Retorno del llamado Gosub. End. Para comprobar su correcto funcionamiento, compilamos el programa y grabamos el microcontrolador PIC. Observe siempre la ventana de errores de mikroBasic; esta ventana provee buena información en caso de errores de sintaxis en el cuerpo del programa.
  • 81. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 71 Si todo ha funcionado correctamente, pasaremos ahora a mejorar la estructura del programa haciendo uso de “Alias”, a través de los cuales daremos nombres a los pines de los puertos que estamos utilizando en el circuito. Es decir, en vez de dirigirnos a ellos como PortB.0, PortB.1, PortD.0 y PortD.1, sustituiremos estos por los siguientes Alias: El pin RB0 ó PortB.0 lo llamaremos “D1” El pin RB1 ó PortB.1 lo llamaremos “D2” El pin RD0 ó PortD.0 lo llamaremos “P1” El pin RD1 ó PortD.1 lo llamaremos “P2” Verifique estos cambios en el siguiente código de programa: program Ejemplo2 ' Area de declaración. Symbol D1 = PORTB.0 ' Alias del Pin RB0 Symbol D2 = PORTB.1 ' Alias del Pin RB1 Symbol P1 = PortD.0 ' Alias del Pin RD0 Symbol P2 = PortD.1 ' Alias del Pin RD1 main: ' Programa Principal. TRISB = %11111100 ' Configuración del Puerto "B" TRISD = %11111111 ' Configuración del Puerto "D" D1 = 0 ' Inicializamos el pin RB0, para asegurar que el ' el Led D1 esté apagado. D2 = 0 ' Inicializamos el pin RB1, para asegurar que el ' el Led D2 esté apagado. Pulsadores: If P1 = 1 Then ' Verificamos el estado del pulsador "P1". GoSub Led1 ' Si P1 es presionado, llama a la subrutina "Led1". End If If P2 = 1 Then ' Verificamos el estado del pulsador "P2". GoSub Led2 ' Si P1 es presionado, llama a la subrutina "Led2". End If GoTo Pulsadores ' Salta a la etiqueta "Pulsadores" para iniciar el ' proceso de verificación de los pulsadores. Led1: D1 = 1 ' Enciende el Led D1, conectado en RB0 delay_ms(2000) ' Hace una pausa de 2 segundos o 2000 milisegundos. D1 = 0 ' Apaga el Led D1. Return ' Retorno del llamado Gosub. Led2: D2 = 1 ' Enciende el Led D2, conectado en RB1 delay_ms(2000) ' Hace una pausa de 2 segundos o 2000 milisegundos. D2 = 0 ' Apaga el Led D2. Return ' Retorno del llamado Gosub. End.
  • 82. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 72 2.6.3.- Ejemplo de programación #3: En este ejemplo haremos uso de la librería “Button” de mikroBasic. “Button” permite eliminar rebotes en pulsadores o interruptores, evitando así errores de lectura que pueden generar mal funcionamiento de nuestros diseños. La sintaxis de esta rutina es la siguiente: Button(Puerto, Pin, Tiempo, Estado Activo) Puerto: En este campo debemos especificar en cual de los puertos estaremos conectando el pulsador o interruptor. Pin: Este campo representa un pin específico del puerto que estaremos utilizando para tomar lectura de un pulsador o interruptor. Tiempo: Este campo es un período de anti-rebote en milisegundos. Este valor puede variar entre 1 y 255. Cada unidad de tiempo mide aproximadamente 0.98 milisegundos, por lo tanto, si usamos el valor máximo para el período de anti-rebote, es decir “255”, el tiempo de anti-rebote será de 250 milisegundos. Estado Activo: Este parámetro puede ser cero (0) ó uno (1). A través de este campo podemos definir si el pulsador o interruptor estará activo con un 0 lógico o con un 1 lógico. Esta rutina también devuelve un resultado (255), si el pulsador o interruptor han estado en un estado activo durante el tiempo especificado. En caso contrario, devuelve un cero (0). Veamos un ejemplo práctico, basado en el ejemplo de programación #2. program Ejemplo3 ' Area de declaración. Symbol D1 = PORTB.0 ' Alias del Pin RB0 Symbol D2 = PORTB.1 ' Alias del Pin RB1 Dim Estado As Byte main: ' Programa Principal. TRISB = %11111100 ' Configuración del Puerto "B" TRISD = %11111111 ' Configuración del Puerto "D" D1 = 0 ' Inicializamos el pin RB0, para asegurar que el ' el Led D1 esté apagado. D2 = 0 ' Inicializamos el pin RB1, para asegurar que el ' el Led D2 esté apagado. Pulsadores: Estado = Button(PortD, 0, 255, 1) ' Verificamos si P1 fue presionado, estado activo = 1. If Estado = 255 Then ' Verificamos el resultado de la rutina “Button”. GoSub Led1 ' Si P1 es presionado, llama a la subrutina "Led1". End If
  • 83. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 73 Estado = Button(PortD, 1, 255, 1) ' Verificamos si P2 fue presionado, estado activo = 1. If Estado = 255 Then ' Verificamos el resultado de la rutina “Button”. GoSub Led2 ' Si P1 es presionado, llama a la subrutina "Led2". End If GoTo Pulsadores ' Salta a la etiqueta "Pulsadores" para iniciar el ' proceso de verificación de los pulsadores. Led1: D1 = 1 ' Enciende el Led D1, conectado en RB0 delay_ms(1000) ' Hace una pausa de 1 segundo o 1000 milisegundos. D1 = 0 ' Apaga el Led D1. Return ' Retorno del llamado Gosub. Led2: D2 = 1 ' Enciende el Led D2, conectado en RB1 delay_ms(1000) ' Hace una pausa de 1 segundo o 1000 milisegundos. D2 = 0 ' Apaga el Led D2. Return ' Retorno del llamado Gosub. End. Observando los cambios realizados en el programa, tenemos que: Hemos eliminado los “Alias” de los pulsadores. Declaramos la variable “Estado” tipo Byte, para almacenar el estado de la rutina “Button”. Si un pulsador permanece activo durante el tiempo de anti-rebote especificado, la rutina “Button” nos devolverá el valor “255” el cual es almacenado en la variable “Estado”. Evaluamos el contenido de la variable “Estado” y seguidamente tomamos una decisión con respecto al puerto de salida. Para comprender mejor el funcionamiento de esta rutina, analizaremos la señal generada por el pulsador y la salida generada por el microcontrolador para encender o apagar los Leds. En la siguiente imagen, hemos representado el estado del pulsador P1 en el canal “Rojo” del osciloscopio, y el Led D1 en el canal “Verde” del osciloscopio. Cuando activamos momentáneamente el pulsador P1, pero no lo mantenemos activo el tiempo suficiente para cumplir con el período de tiempo de anti-rebote, ocurre que el valor devuelto por la rutina “Button” es igual a cero (0). En este caso, podremos observar que en la salida correspondiente al Led D1 no hay actividad alguna, como lo demuestra la figura 2.26.
  • 84. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 74 Figura 2.26 Si mantenemos el pulsador P1 activo el tiempo suficiente para vencer el tiempo de anti- rebote, la rutina “Button” devuelve el valor “255”. Entonces podremos generar la salida deseada en el pin del puerto correspondiente al Led D1 (Canal Verde): Figura 2.27
  • 85. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 75 El canal verde de la figura 2.27 muestra un pulso de 1 segundo de duración, generado desde la subrutina “Led1” del programa. Si medimos con el osciloscopio el tiempo de anti-rebote, podremos observar que es igual o aproximado a 250 milisegundos: Figura 2.28 Este tiempo es medido desde que inicia el pulso en el canal rojo del osciloscopio, hasta el inicio del pulso del canal verde. En este ejemplo, el tiempo medido en el osciloscopio ha dado como resultado un tiempo de antirrobote igual a 250 milisegundos. También es posible utilizar la rutina Button de la siguiente manera: program Ejemplo_3_1 ' Area de declaración. Symbol D1 = PORTB.0 ' Alias del Pin RB0 Symbol D2 = PORTB.1 ' Alias del Pin RB1 main: ' Programa Principal. TRISB = %11111100 ' Configuración del Puerto "B" TRISD = %11111111 ' Configuración del Puerto "D" D1 = 0 ' Inicializamos el pin RB0, para asegurar que el ' el Led D1 esté apagado. D2 = 0 ' Inicializamos el pin RB1, para asegurar que el ' el Led D2 esté apagado. Pulsadores: If Button(PortD, 0, 255, 1) Then ' Verificamos si P1 fue presionado, estado activo = 1. Tiempo Anti-rebote
  • 86. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 76 GoSub Led1 ' Si P1 es presionado, llama a la subrutina "Led1". End If If Button(PortD, 1, 255, 1) Then ' Verificamos si P2 fue presionado, estado activo = 1. GoSub Led2 ' Si P1 es presionado, llama a la subrutina "Led2". End If GoTo Pulsadores ' Salta a la etiqueta "Pulsadores" para iniciar el ' proceso de verificación de los pulsadores. Led1: D1 = 1 ' Enciende el Led D1, conectado en RB0 delay_ms(1000) ' Hace una pausa de 1 segundo o 1000 milisegundos. D1 = 0 ' Apaga el Led D1. Return ' Retorno del llamado Gosub. Led2: D2 = 1 ' Enciende el Led D2, conectado en RB1 delay_ms(1000) ' Hace una pausa de 1 segundo o 1000 milisegundos. D2 = 0 ' Apaga el Led D2. Return ' Retorno del llamado Gosub. End. Observe que hemos eliminado la variable “Estado” en el programa y hemos simplificado la subrutina “Pulsadores”.
  • 87. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 77 Capitulo III. Pantallas LCD y GLCD A continuación estudiaremos las librerías encargadas del control de pantallas LCD y GLCD de mikroBasic PRO a través de ejemplos claros y de fácil entendimiento. Pantalla LCD Alfanumérica Pantalla Gráfica GLCD 3.1.- Pantallas LCD, estudio de la librería LCD de mikroBasic. El primer paso siempre será tener un diagrama de pines de la pantalla LCD y a su vez definir de una vez el conexionado con los puertos del microcontrolador, incluso antes de realizar cualquier programación. Al hacer esto, entonces tendremos una base sobre la cual trabajar el programa, en el cual debemos definir los pines de conexión de la misma, de manera que el microcontrolador sepa donde dirigir la información y las instrucciones que controlarán estos módulos. 3.1.1.- Identificación de los pines de una pantalla LCD: Veamos a continuación la descripción de cada uno de los pines de una pantalla LCD: Figura 3.1. Pinout de un módulo LCD con conexión a Vcc, Gnd y Control de contraste. Pin 1, 2 y 3: como se puede observar en la figura 6.4, en la mayoría de las pantallas LCD, el Pin No. 1 y 2 corresponden a la alimentación de la pantalla, GND y Vcc, donde el voltaje
  • 88. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 78 máximo comúnmente soportado es de 5 Vdc. El Pin No.3 corresponde al control de contraste de la pantalla. Pin 4: "RS" (trabaja paralelamente al Bus de datos del modulo LCD, Pines 7 al 14, es decir, cuando RS es cero, el dato presente en el bus corresponde a un registro de control o instrucción, pero cuando RS es uno, el dato presente en el bus corresponde a un registro de datos o caracter alfanumérico. Pin 5: "R/W" (Read/Write), este pin es utilizado para leer un dato desde la pantalla LCD o para escribir un dato en la pantalla LCD. Si R/W = 0, esta condición indica que podemos escribir un dato en la pantalla. Si R/W = 1, esta condición nos permite leer un dato desde la pantalla LCD. Pin 6: "E" (Enable), este es el pin de habilitación, es decir, si E = 0 el módulo LCD se encuentra inhabilitado para recibir datos, pero si E = 1, el módulo LCD se encuentra habilitado para trabajar, de tal manera que podemos escribir o leer desde el modulo LCD. Pin 7 al14: "Bus de Datos”, el Pin 7 hasta el Pin 14 representan 8 líneas que se utilizan para colocar el dato que representa una instrucción para el modulo LCD o un carácter alfanumérico. Pin 15-16: "BackLight", en muchos modelos de LCD, los pines 15 y 16 son respectivamente el “Ánodo” y el “Cátodo”, aunque se pueden encontrar en el mercado modelos de pantallas LCD donde esta condición es configurable desde la parte posterior del circuito impreso a través de “Jumpers”, o conexiones donde podemos invertir los Pines, de manera tal que el Pin 15 sea el “Cátodo” y el Pin 16 el “Ánodo”, como se muestra en la figura 3.2. Figura 3.2 3.1.2.- Conexión y configuración de una pantalla LCD: Una pantalla LCD puede ser conectada a un microcontrolador utilizando los ocho bits del bus de datos (D0 a D7) o solamente los cuatro bits mas significativos del bus de datos (D4 a D7). Al emplear los ocho bits, estos deberán estar conectados en un solo puerto y nunca en puertos diferentes. Si deseamos trabajar solo con los cuatro bits más significativos del bus, estos deberán ser conectados en los cuatro bits menos significativos de un puerto o en los cuatro bits más significativos del puerto seleccionado.
  • 89. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 79 Los pines E (Pin 6) y RS (Pin 4) pueden estar conectados en cualquier puerto del microcontrolador. Por último, el Pin R/W deberá estar conectado a tierra (GND) para indicar a la pantalla LCD que estaremos escribiendo en ella. Un dato interesante resulta ser el hecho de que las pantallas LCD pueden ser controladas utilizando dos configuraciones distintas para el bus de datos: La primera configuración es a 4 bits de datos, lo cual reduce a la mitad la cantidad de pines a ser utilizados en un puerto de un microcontrolador PIC. MikroBasic cuenta con una librería para el control de pantallas LCD a 4 bits, denominada “LCD Library”. La segunda configuración posible es a 8 bits de datos, lo cual requiere que conectemos todos los pines del bus (D0 hasta D7 en la pantalla LCD), en uno de los puertos disponibles de un microcontrolador PIC. Esta configuración será descartada en esta ocasión, ya que la idea es optimizar los recursos disponibles en nuestro hardware utilizando la menor cantidad de puertos en nuestros circuitos. Comenzaremos a realizar las prácticas basadas en la configuración de 4 bits, como se sugiere en el siguiente diagrama esquemático. Diagrama de conexión entre un módulo LCD y un PIC16F877 en configuración de 4 bits: Figura 3.3
  • 90. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 80 El primer punto importante será aprender a inicializar una pantalla LCD con mikroBasic. El primer paso que debemos realizar será especificar en el programa de que manera han sido conectados los pines de control y datos de la pantalla LCD en el puerto elegido del microcontrolador. Basados en el diagrama esquemático de la figura 3.3, la configuración de pines se realiza de la siguiente manera: ' Configuración de los pines de la LCD Dim LCD_RS As sbit At RB4_bit LCD_EN As sbit At RB5_bit LCD_D4 As sbit At RB0_bit LCD_D5 As sbit At RB1_bit LCD_D6 As sbit At RB2_bit LCD_D7 As sbit At RB3_bit LCD_RS_Direction As sbit At TRISB4_bit LCD_EN_Direction As sbit At TRISB5_bit LCD_D4_Direction As sbit At TRISB0_bit LCD_D5_Direction As sbit At TRISB1_bit LCD_D6_Direction As sbit At TRISB2_bit LCD_D7_Direction As sbit At TRISB3_bit ' Fin de la configuración de conexiones La configuración anterior puede ser interpretada de la siguiente manera: Pin de Control en la LCD: RS PortB.4 Pin de Control en la LCD: E PortB.5 Pin de datos en la LCD: D4 PortB.0 Pin de datos en la LCD: D5 PortB.1 Pin de datos en la LCD: D6 PortB.2 Pin de datos en la LCD: D7 PortB.3 3.1.3.- LCD_Init() Esta rutina es necesaria para inicializar un módulo LCD. Normalmente se ubica al inicio del programa, después de la etiqueta de inicio y no en la zona de declaración de variables o configuración de pines de la pantalla. Ejemplo: main: ' Programa Principal LCD_Init()
  • 91. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 81 3.1.4.- Lcd_Cmd(comando) Esta rutina es importante para el control de una pantalla LCD, la cual puede facilitar la programación de ciertas funciones importantes. En el campo “comando” de la rutina, podemos especificar algunas funciones las cuales se describen en la siguiente tabla: Comando LCD Propósito _Lcd_First_Row Mueve el cursor a la primera columna _Lcd_Second_Row Mueve el cursor a la segunda columna _Lcd_Third_Row Mueve el cursor a la tercera columna _Lcd_Fourth_Row Mueve el cursor a la cuarta columna _Lcd_Clear Limpia la pantalla LCD _Lcd_Return_Home Cursor a la posición de inicio _Lcd_Cursor_Off Apaga el cursor en la pantalla LCD _Lcd_Underline_On Cursor “Underline” encendido _Lcd_Blink_Cursor_On Activa la intermitencia en el cursor _Lcd_Move_Cursor_Left Mueve el cursor a la izquierda sin alterar el contenido de la RAM _Lcd_Move_Cursor_Right Mueve el cursor a la derecha sin alterar el contenido de la RAM _Lcd_Turn_On Activa o enciende la pantalla LCD _Lcd_Turn_Off Desactiva o apaga la pantalla LCD _Lcd_Shift_Left Desplazamiento a la izquierda sin alterar el contenido de la RAM _Lcd_Shift_Right Desplazamiento a la derecha sin alterar el contenido de la RAM Figura 3.4 Tal y como esta especificado en la tabla anterior, es posible realizar fácilmente acciones como mover el cursor o limpiar la pantalla entre otras como se demuestra en el próximo ejercicio, pero antes veamos otras rutinas importantes. 3.1.5.- Lcd_Out(Fila, Columna, Texto) La rutina Lcd_Out() nos permite escribir en una posición específica de la pantalla LCD, su estructura es muy sencilla y se ve como sigue a continuación: Ejemplo: Lcd_Out(1, 4, “mikroBasic”) Este ejemplo se interpreta de la siguiente forma: Escribir la palabra “mikroBasic” (sin incluir las comillas) en la línea 1 de la pantalla, empezando en la columna 4. Si deseamos escribir en la segunda línea de la pantalla, pero a partir de la primera columna, entonces el cambio en la rutina sería el siguiente: Lcd_Out(2, 1, “mikroBasic”)
  • 92. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 82 3.1.5.1.- Ejemplo de programación #4: Veamos a continuación un ejemplo de programación, basados en el diagrama esquemático 3.3, y utilizando las rutinas hasta ahora comentadas: program Proyecto_LCD_1 ' Sección de Declaración ' Configuración de los pines de la LCD Dim LCD_RS As sbit At RB4_bit LCD_EN As sbit At RB5_bit LCD_D4 As sbit At RB0_bit LCD_D5 As sbit At RB1_bit LCD_D6 As sbit At RB2_bit LCD_D7 As sbit At RB3_bit LCD_RS_Direction As sbit At TRISB4_bit LCD_EN_Direction As sbit At TRISB5_bit LCD_D4_Direction As sbit At TRISB0_bit LCD_D5_Direction As sbit At TRISB1_bit LCD_D6_Direction As sbit At TRISB2_bit LCD_D7_Direction As sbit At TRISB3_bit ' Fin de la configuración de conexiones main: ' Programa Principal LCD_Init() LCD_Cmd(_LCD_CLEAR) ' Limpia la pantalla LCD LCD_Cmd(_LCD_CURSOR_OFF) ' Apaga el cursor en la pantalla Delay_ms(1000) ' Retardo de 1 segundo LCD_Out(1,4,"mikroBasic") ' Imprime en la linea 1 y columna 4 End. El resultado de este ejemplo se puede observar en la figura 3.5. Figura 3.5 Antes de compilar y analizar el programa, es importante verificar si la librería LCD ha sido incluida al crear el proyecto. Esto lo sabremos fácilmente desplegando la pestaña del administrador de librerías, en la cual deberán estar seleccionadas las librerías correspondientes a este ejercicio:
  • 93. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 83 Figura 3.6 Observe que cuando la librería correspondiente no ha sido incluida, las rutinas de nuestros programas son subrayadas por una línea roja ondulada indicando que no han sido reconocidas las rutinas en el programa.
  • 94. _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC – www.conexionelectronica.com – Christian Bodington Esteva 84 La siguiente imagen demuestra como se debe ver nuestro programa para que no se generen errores al compilar: Figura 3.7 Si observamos cada línea de programación, y analizamos cada una de ellas, tenemos que: El primer paso ha sido configurar los pines de control y datos de la pantalla LCD en el formato anteriormente especificado con respecto al puerto elegido en el microcontrolador. Inicializamos la pantalla LCD a través de la rutina LCD_Init(). Limpiamos la pantalla LCD con el comando correspondiente, según la tabla de la figura 3.4. Apagamos el cursor en la pantalla. Hacemos una pausa de 1000 milisegundos o 1 segundo. Escribimos la palabra “mikroBasic” en la línea 1, columna 4 de la pantalla LCD.