conexionelectronica.comconexionelectronica.com/libros/libro2/mikrobasic.pdf2010-01-07 ·...

425

Upload: vuongngoc

Post on 29-Oct-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • Copyright 2010 Christian Bodington

    Todos los derechos reservados. Esta publicacin no puede ser reproducida, ni en todo ni en partes, ni registrada en o transmitida por un sistema de

    recuperacin de informacin, en ninguna forma ni por ningn medio, sea mecnico, fotoqumico, electrnico, magntico, electroptico, por fotocopia

    o cualquier otro, sin permiso previo por escrito del autor.

    Ilustrado y Editado por: Christian Bodington Esteva Diseo de la portada / Arte por: Christian Bodington Esteva

    WWW.CONEXIONELECTRONICA.COM

  • i

    CONTENIDO

    Prologo. Capitulo I. 1.1.- Herramientas de diseo. 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 Aritmticos. 1.6.7.- Operadores Bit a Bit. 1.6.8.- Operadores de Comparacin. Capitulo II. 2.1.- Arquitectura Bsica del microcontrolador PIC16F877. 2.2.- El oscilador externo. 2.3.- Circuito de Reset. 2.4.- Consideraciones tcnicas de diseo. 2.4.1.- Estado lgico de un pin I/O. 2.4.2.- Lectura de un estado lgico 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.- Configuracin de puertos de entrada y salida en un microcontrolador PIC. 2.6.- Primeros ejemplos de programacin 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. Librera Button.

  • ii

    Capitulo III. Pantallas LCD y GLCD. 3.1.- Pantallas LCD, estudio de la librera LCD de mikroBasic. 3.1.1.- Identificacin de los pines de una pantalla LCD. 3.1.2.- Conexin y configuracin 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.- Parmetros de rutinas cargados en variables.

    3.2.1.- Ejemplo #8. Uso de variables como parmetros. 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 operacin,

    suma y resta de un nmero cargado en una variable a travs de pulsadores.

    3.3.3.- Ejemplo #12. Crear un men de opciones en la pantalla. 3.4.- Pantalla Grfica o GLCD (Graphic Liquid Crystal Display).

    3.4.1.- Conexin y configuracin de una pantalla GLCD. 3.5.- Librera GLCD.

    3.5.1.- Rutina Glcd_Init().

    3.5.2.- Ejemplo #13. Uso de la rutina Glcd_Init().

    3.5.3.- Mdulo de Fuentes en mikroBasic.

  • iii

    3.5.3.1.- Ejemplo #14. Cmo incluir un mdulo 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 especfico. 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 lnea entre coordenadas especficas. 3.5.8.2.- Ejemplo #20. Dibuja lnea entre coordenadas, color inverso.

    3.5.9.- Rutina Glcd_V_Line(y1, y2, x, color).

    3.5.9.1.- Ejemplo #21. Dibuja lnea vertical entre coordenadas especficas.

    3.5.10.- Rutina Glcd_H_Line(x1, x2, y, color).

    3.5.10.1.- Ejemplo #22. Dibuja lnea horizontal entre coordenadas.

    3.5.11.- Rutina Glcd_Rectangle(x1, y1, x2, y2, color).

    3.5.11.1.- Ejemplo #23. Dibuja un cuadrado o rectngulo. 3.5.11.2.- Ejemplo #24. Dibuja una serie de rectngulos consecutivos.

    3.5.12.- Rutina Glcd_Box(x1, y1, x2, y2, color).

    3.5.12.1.- Ejemplo #25. Dibuja un cuadrado o rectngulo slido. 3.5.12.2.- Ejemplo #26. Dibuja un cuadrado o rectngulo slido, color inverso.

    3.5.13.- Glcd_Circle(x, y, radio, color).

    3.5.13.1.- Ejemplo #27. Dibuja un crculo en la pantalla. 3.5.13.2.- Ejemplo #28. Dibuja un crculo, color inverso. 3.5.13.3.- Ejemplo #29. Dibuja crculos consecutivos.

  • iv

    Captulo IV. Librera Trigon Funciones Trigonomtricas. 4.1.- Funciones Trigonomtricas. 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. Clculo del seno de un valor x. 4.1.2.- Ejemplo #31. Clculo del coseno de un valor x. 4.1.3.- Ejemplo #32. Clculo de la tangente de un valor x. 4.1.4.- Ejemplo #33. Calculadora. Captulo V. Librera Sound. 5.1.- Rutinas de la librera de sonido de mikroBasic. Clculos 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 travs de la pantalla LCD. 5.1.2.- Ejemplo #35. Elaboracin de un piano de una octava musical. Captulo VI. Teclado Matricial y Teclado PS/2. 6.1.- Teclado Matricial. 6.2.- Librera 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.- Librera 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 smbolo ASCII y valor correspondiente a una tecla presionada.

  • v

    Captulo VII. Memoria de Datos EEPROM. 7.1.- Memoria de datos EEPROM. 7.2.- Librera 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

    dgitos 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. Captulo 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. Conversin A/D de una seal analgica. 8.1.4.- Ejemplo #44. Conversin A/D con voltaje de referencia. 8.1.5.- Ejemplo #45. Conversin A/D, datos adicionales en la pantalla. 8.2.- El Acelermetro. 8.2.1.- Ejemplo #46. Acelermetro 3D, conversin A/D de datos en los

    ejes X, Y, Z. 8.2.2.- Clculo del voltaje de entrada del conversor A/D.

    8.2.3.- Clculo de la aceleracin en base al voltaje calculado en cada eje. 8.2.4.- Ejemplo #47. Visualizar voltaje y aceleracin calculada en la GLCD. 8.3.- Termocupla. 8.3.1.- AD594/AD595, clculo de la linealidad. 8.3.2.- Ejemplo #48. Termmetro digital con termocupla tipo J. Captulo IX. Comunicacin Serial Asncrona RS232. 9.1.- Comunicacin Serial Asncrona RS232. 9.2.- Librera 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. Recepcin de datos va RS232. 9.2.5.- Ejemplo #50. Almacenar y visualizar una cadena de caracteres. 9.2.6.- Rutina UART1_Write(). 9.2.7.- Ejemplo #51. Transmisin y recepcin de datos va RS232. 9.3.- Cmo extraer informacin especfica de una cadena de datos?. 9.3.1.- Ejemplo #52. Extraer informacin de una cadena de datos. 9.4.- Mdulo de comunicaciones BlueTooth. 9.4.1.- Widcomm BlueTooth Software 5.0.1.3900. 9.4.2.- Comunicacin Serial inalmbrica BlueTooth. 9.5.- Mdulo GPS (OEM), comunicacin serial RS232. 9.5.1.- Protocolo NMEA. 9.5.2.- Ejemplo #53. Extrae coordenadas geogrficas y nmero de satlites utilizador por el mdulo GPS. 9.6.- Programacin en Visual Basic 6.0 para ejemplos de comunicacin serial RS232. 9.6.1.- Ejemplo #54. Captura de datos enviados desde un mdulo VB. 9.6.2.- Ejemplo #55. Captura de datos enviados desde un microcontrolador a una hoja de clculo de Microsoft Excel. Captulo X. Multi Media Card (MMC) y Secure Card (SD) Memory. 10.1.- Librera 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 Versin 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 especficos de la memoria SD.

    10.4.2.- Ejemplo #59. Lectura de datos de un sector especfico. 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. Cmo dar formato a una tarjeta de memoria SD desde el microcontrolador PIC. 10.5.4.- Cmo 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 slo lectura. 10.5.7.- Ejemplo #62. Crear un archivo .txt con atributo de slo 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 va 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 especfico 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

    Captulo 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. Captulo XII. PWM. 12.1.- PWM. 12.2.- Librera 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 seal PWM controlada. 12.2.7.- Ejemplo #72. Control de un Motor DC. Apndice A. Tabla ASCII. Apndice B. Prcticas en formato digital. Bibliografa.

  • Prlogo

    La segunda edicin 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 rpido en la programacin de microcontroladores PIC gracias a una completa librera diseada para el control de una gran variedad de perifricos, facilitando el desarrollo de proyectos electrnicos a travs de 72 ejemplos prcticos, analizados y comentados detalladamente en base a los microcontroladores PIC16F877, PIC18F442, PIC18F452 y PIC18F458. La mayora de los proyectos han sido desarrollados con la ayuda del entrenador de microcontroladores EasyPic5 de mikroElektronika, adems de una serie de componentes adicionales de fcil adquisicin y bajo costo. Al igual que en la primera edicin, la metodologa empleada ha sido orientada para que el lector pueda expandir sus conocimientos para generar nuevas ideas en la implimentacin de este compilador sobre esta tecnologa 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 bsicos en la programacin de estos componentes.

    Los puntos de estudios ms importantes han sido el control de puertos, pantallas LCD y GLCD, sonido, funciones trigonomtricas, teclado matricial y PS/2, memoria de datos EEPROM, conversor A/D, control de dispositivos como potencimetros, acelermetro 3D, termocupla, comunicacin serial RS-232, BlueTooth, mdulos GPS, programacin en Visual Basic para control de puertos, multimedia card (MMC y SD), almacenamiento masivo de datos, creacin 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 Diseo En la elaboracin de proyectos electrnicos con microcontroladores PIC, resulta muy importante considerar una serie de herramientas que vamos a describir a continuacin y las cuales pueden ser proporcionadas en su gran mayora por la empresa Mikroelektronika (www.mikroe.com). Esta empresa se ha dado a la tarea de disear tanto el software de programacin para microcontroladores PIC, como el hardware necesario para poder aprender todo lo relacionado al tema que a continuacin estaremos abordando a travs de muchos ejemplos prcticos los cuales tienen una gran variedad de perifricos disponibles, tales como pantallas LCD, GLCD, teclados matriciales, teclados PS/2, dispositivos de comunicacin serial, entre otros. Software: para la programacin en Lenguaje Basic, contamos con el Ambiente Integrado de Desarrollo MikroBasic de MikroElektronika. Con esta herramienta estaremos realizando la programacin en cada uno de los proyectos propuestos a partir del captulo II.

    Figura 1.1 (Fuente: http://www.mikroe.com)

    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 conexin 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. Tambin es posible hacer arreglos en nuestros circuitos para dejar un puerto de conexin para el programador, y as poder realizar cambios en nuestros programas sin retirar el microcontrolador de nuestros diseos. Esta opcin, denominada ICSP (In-Circuit Serial Programming), simplifica el trabajo a la hora de reprogramar nuestros diseos.

    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 diseada para trabajar en conjunto con los compiladores de mikroElektronika, proporcionan diferentes mdulos interconectados entre ellos, facilitando la elaboracin de prcticas con microcontroladores. Estos entrenadores de microcontroladores adems incorporan su propio programador de microcontroladores PIC de conexin USB 2.0. El entrenador recomendado en esta edicin es el EasyPIC5.

    Figura 1.3 (Fuente: http://www.mikroe.com/en/tools/easypic5)

    Herramientas de corte, extractor de circuitos integrados, cable rgido para conexiones

    en la placa de prototipos.

    Figura 1.4

    http://www.mikroe.com/en/tools/easypic5
  • _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC www.conexionelectronica.com Christian Bodington Esteva

    5

    Osciloscopio: este instrumento se requiere para el desarrollo de algunas prcticas en las cuales se hace necesario medir las seales generadas desde el microcontrolador.

    Figura 1.5

    Componentes electrnicos: microcontroladores PIC en los modelos definidos en cada

    ejemplo prctico, resistencias, diodos, servomotores, condensadores, cristales y otros componentes de fcil adquisicin. Cada proyecto cuenta con una tabla en la cual se describen los componentes electrnicos que debern 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 programacin la cual podemos descargar de la pagina oficial http://www.mikroe.com en su versin de demostracin y con sus respectivas limitaciones. Para obtener una versin 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 fsico. 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 continuacin:

    Figura 1.8

    http://www.mikroe.com/http://www.mikroe.com/en/download/
  • _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC www.conexionelectronica.com Christian Bodington Esteva

    7

    Haciendo doble clic sobre el mismo, iniciamos el proceso de instalacin 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 instalacin, seleccionamos la opcin de aceptacin de los trminos explicados en el acuerdo de licencia, y seguidamente hacemos clic en Next. A continuacin veremos los componentes del programa disponibles para la instalacin:

    El compilador. Los archivos de ayuda del compilador.

    Ejemplos de programas desarrollados para los mdulos 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 botn Next, veremos la ruta de instalacin 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 segn convenga. Al haber seleccionado anteriormente todos los componentes en la instalacin, podemos observar que el espacio requerido se acerca a los 75 MB. Ahora para iniciar la instalacin, hacemos clic en el botn Install, accin con la cual veremos el progreso de la instalacin en nuestro disco, como lo demuestran las siguientes imgenes:

    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 botn Finish, el programa de instalacin nos preguntar si deseamos instalar el soporte ICD (In-Circuit Debugger) de mikroBasic:

    Figura 1.18

    Figura 1.19

    Al hacer clic en el botn Si veremos la ventana de bienvenida a la gua de instalacin, 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 opcin para la aceptacin de la licencia y hacemos clic en el botn 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 instalacin del software PicFlash. Este programador viene integrado en las tarjetas entrenadoras, e incluso se vende por separado en su versin USB.

  • _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC www.conexionelectronica.com Christian Bodington Esteva

    14

    Figura 1.21

    Haciendo clic en el botn Next, estaremos viendo la ruta de instalacin por defecto o ruta sugerida por el programa de instalacin. Esta ruta se puede mantener igual o ser cambiada segn convenga al usuario. Una vez seleccionada la ruta, hacemos clic en el botn Install y esperamos a que termine el proceso de instalacin como se muestra en las siguientes imgenes:

    Figura 1.22

  • _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC www.conexionelectronica.com Christian Bodington Esteva

    15

    Figura 1.23

    El siguiente paso ser la instalacin 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

    Tambin ser necesaria la instalacin 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 instalacin de drivers, la instalacin de mikroBasic nos pregunta si deseamos ejecutar el software inmediatamente. Al hacer clic en el botn Si podremos ver que la interfaz de programacin se abre y queda lista para iniciar a programar nuestros proyectos. Inicialmente se podr observar que la misma abre automticamente un ejemplo de programacin 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 comprensin del mismo ante otros programadores que deseen realizar mejoras a ste, es necesario establecer una estructura que nos permita identificar fcilmente cada una de las partes que lo componen.

    Figura 1.35

    En la figura 1.35 se puede observar la estructura bsica de un programa hecho en mikroBasic, y en la cual hemos identificado las cuatro secciones que consideramos ms importantes para lograr un programa bien estructurado. Seccin A: Corresponde al encabezado del programa, en el cual siempre es conveniente incorporar informacin bsica del mismo, como el nombre, la identificacin de autor, Copyright, fecha de elaboracin o fecha de los ltimos cambios realizados, versin del programa que se est realizando, e incluso una breve descripcin acerca del objetivo del programa y su aplicacin en un determinado circuito electrnico. Seccin B: Esta seccin empieza en la columna cero del editor de texto de mikroBasic, y en ella se pueden declarar variables, sub-funciones, configuraciones de dispositivos perifricos y etiquetas de cada una de las subrutinas que sern programadas. Las etiquetas identifican puntos especficos o subrutinas dentro de un programa. Son definidas por el programador y deben tener al final de cada una de ellas el smbolo 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

    Seccin C: Estar destinada para las instrucciones de programa y la misma est separada de la columna cero del editor de texto por una tabulacin, es decir, cuando el cursor se encuentra en la columna cero, presionamos una vez la tecla TAB, y de esta manera establecemos un espacio mnimo, siempre igual o superior entre la seccin B y C. Seccin D: Esta destinada para realizar comentarios acerca de la funcin que estar cumpliendo una instruccin especfica en nuestro programa. Cada comentario debe empezar siempre con una comilla simple como se muestra a continuacin: ' Define el Oscilador para un Cristal ' de 4 Mhz. Cuando un comentario es demasiado extenso, podemos continuar el mismo en la siguiente lnea, siempre que la frase comience con su respectiva comilla. Los comentarios ayudan al diseador a identificar cada lnea de programa o cada una de las funciones de cada subrutina, garantizando as una buena documentacin 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 continuacin los pasos a seguir:

    Desplegamos el men Project y seguidamente seleccionamos la opcin New Project. Enseguida veremos la ventana de bienvenida.

    Figura 1.36

    En el paso 1, seleccionamos la opcin 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 sealada en la figura 1.39, a travs 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 cdigo creado con anterioridad, los cuales pudieran contener subrutinas generalizadas para el control de perifricos comunes como pantallas LCD o teclados. En caso de no disponer de ningn archivo adicional para el proyecto, simplemente continuamos seleccionando la opcin Next.

    Figura 1.42

  • _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC www.conexionelectronica.com Christian Bodington Esteva

    27

    En el paso 5 tenemos la opcin de incluir todas las libreras disponibles para el microcontrolador anteriormente seleccionado en nuestro proyecto. Tambin tenemos la opcin de no incluir ninguna de ellas. Esto se debe a que mikroBasic cuenta con una amplia seleccin de libreras para el control de dispositivos perifricos o procesos de clculo o conversin de datos que nos permitirn hacer de la programacin algo fcil y rpida a la hora de disear un programa, pero no necesariamente necesitaremos de todas las libreras en un solo proyecto. Si elegimos la opcin Include All podremos estar seguros de que cada librera empleada en nuestro programa funcionar correctamente. Si elegimos la opcin Include None (Advance) tendremos que realizar la seleccin de las libreras que deseamos utilizar desde el administrador de libreras de mikroBasic, el cual veremos mas adelante.

    Figura 1.43

    El paso 6 en la creacin de un nuevo proyecto nos dice que hemos finalizado la configuracin 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 ms importantes a la hora de elaborar un programa.

    Figura 1.46 En la seccin A, podemos encontrar las opciones del men principal, adems de todos los accesos directos a cada funcion del software a travs de pequeos botones ordenados y de fcil acceso. La seccin B es el editor en el cual se escribirn los programas de cada proyecto bajo las recomendaciones realizadas en punto 1.3 de este captulo.

    A

    B C D

    E

  • _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC www.conexionelectronica.com Christian Bodington Esteva

    30

    En la seccin C se puede observar el administrador de libreras, el cual deber ser tomado en cuenta siempre que nuestros proyectos incluyan el uso de cualquiera de las libreras disponibles en mikroBasic. En la seccin D se encuentra en explorador de cdigo 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 seccin E muestra dos pestaas importantes. La primera pestaa se llama Messages o Mensajes, contiene un rea en la cual se mostrarn los resultados del procedimiento de compilacin de un programa. Si se genera un error de compilacin, ste ser mostrado en esta ventana mostrando el tipo de error y su ubicacin en la ventana de edicin. La segunda pestaa se llama Quick Converter y contiene una herramienta de conversin de unidades en diferentes formatos. Veamos a continuacin la descripcin de cada men en la seccin A de la imagen 1.46. Men File:

    Figura 1.47

    New Unit: Abre una nueva ventana de edicin de programas para mikroBasic. En esta ventana escribiremos el cdigo de programa de nuestros proyectos.

    Open: A travs de esta opcin podremos abrir cualquier archivo asociado a nuestros proyectos de programacin.

    Recent Files: Al seleccionar esta opcin, 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 programacin.

    Save As: Salva o guarda los cambios realizados en la ventana de programacin con un nombre o ruta diferente.

    Close: Cierra la ventana de cdigo activa.

    Print Preview: Una vista previa de la ventana de cdigo activa antes de la impresin.

    Print: Imprime la ventana de cdigo Activa.

    Exit: Cierra el entorno de programacin 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 bsqueda 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 lnea 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 lneas de cdigo de programa previamente seleccionadas en comentarios. Si no hemos seleccionado ninguna lnea de cdigo, simplemente aparece una comilla simple, asignando el resto de la lnea como un espacio disponible para realizar comentarios.

    Uncomment: Remueve la propiedad de comentario de una o varias lneas

    seleccionadas.

    Indent: Aplica una tabulacin o sangra al texto seleccionado.

    Outdent: Elimina una tabulacin o sangra al texto seleccionado.

    Lowercase: Cambia todo el texto seleccionado a minsculas.

    Uppercase: Cambia todo el texto seleccionado a maysculas.

    Titlecase: Cambia a mayscula la primera letra del texto seleccionado. Men View:

    Figura 1.50

    Sub-Men Toolbars: A travs de este sub-men podemos seleccionar cuales herramientas estarn visibles o disponibles en la seccin 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 travs 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 configuracin 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 compilacin y ventana de depuracin de mikroBasic.

    Figura 1.54

  • _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC www.conexionelectronica.com Christian Bodington Esteva

    36

    Code Explorer o Explorador de Cdigo: Despliega la ventana del explorador de cdigo de mikroBasic.

    Figura 1.55

    Project Manager o Administrador de Proyectos: A travs de esta ventana es posible acceder a todo el contenido del proyecto.

    Figura 1.56 Esta ventana posee adems botones de acceso rpido a algunas funciones importantes:

    o Salvar un grupo de proyectos: En mikroBasic es posible tener ms de un proyecto abierto en entorno de desarrollo integrado. Este botn 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 administracin de proyectos.

    Figura 1.57

    Abrir un grupo de proyectos: A travs de esta opcin 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 programacin de microcontroladores PIC de mikroElektronika.

  • _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC www.conexionelectronica.com Christian Bodington Esteva

    38

    Library Manager o Administrador de Libreras: El administrador de libreras de mikroBasic contiene todas las libreras disponibles para un microcontrolador previamente seleccionado.

    Figura 1.58

    Actualiza el administrador de libreras.

    Compila todas las libreras disponibles.

    Incluye todas las libreras en un proyecto.

    No incluye ninguna de las libreras en el proyecto.

    Restaura el estado de las libreras justo antes de la ltima grabacin del proyecto.

    Bookmarks o Marcadores: Esta opcin despliega una ventana en la cual podremos agregar accesos directos a puntos especficos en un programa. Al hacer doble clic en alguno de estos accesos directos, el cursor se ubicar automticamente en la lnea o direccin especificada.

  • _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC www.conexionelectronica.com Christian Bodington Esteva

    39

    Figura 1.59

    Quick Converter o Conversor rpido de datos: Despliega la ventana de conversin 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, podramos grabar una secuencia de ordenes que nos permita por ejemplo abrir el terminal de comunicaciones de mikroBasic y hacer que se conecte bajo ciertos parmetros especficos con tan solo activar su Macro correspondiente.

    Figura 1.60

    Inicia el proceso de grabacin en la secuencia de pulsaciones de teclas sobre el entorno de desarrollo integrado de mikroBasic.

    Detiene el proceso de grabacin 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 travs de esta opcin 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 cdigo generado en lenguaje ensamblador.

    View Statistics: Muestra las estadsticas del proyecto activo.

    View Listing: Muestra el listado de asignacin de memoria del PIC: direcciones de instrucciones, registros, las rutinas y las etiquetas.

    Edit Search Paths: Edita rutas de bsqueda.

    Clean Project Folder: Esta opcin limpia o borra de la carpeta de proyecto los

    archivos generados cuando se realiza la compilacin 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 especfico de un proyecto.

    Import Project: Permite importar proyectos de versiones anteriores de

    mikroBasic.

    New Project: Abre el asistente para la creacin 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 travs de la cual podemos configurar los fusibles de programacin 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 travs de esta opcin 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 travs de este men podremos acceder a toda la ayuda disponible acerca del compilador, accesos directos al foro de discusin, pgina Web oficial de mikroElektronika, formulario de registro del compilador e informacin de registro actual.

    Figura 1.65

  • _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC www.conexionelectronica.com Christian Bodington Esteva

    44

    Nota Importante: En la versin 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 versin completa del compilador, para poder llevar a cabo todos los ejemplos propuestos en esta edicin. La licencia es suministrada en lnea por la empresa MikroElektronika y el proceso de registro es sumamente sencillo. Tener la licencia del compilador nos garantiza adems el acceso al soporte tcnico 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 especfica. 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 programacin entre las cuales podemos mencionar las etiquetas, variables, identificadores, constantes, comentarios y smbolos 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 facilitarn el trabajo considerablemente. 1.6.2.- Variables: En las variables podemos almacenar datos temporalmente, los cuales podrn ser consultados o modificados cada vez que sea necesario. Normalmente la definicin 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 Tamao Rango

    bit 1bit 0 or 1

    sbit 1bit 0 or 1

    byte, char 8bit 0 .. 255

    short 8bit -127 .. 128

    word 16bit 0 .. 65535

    integer 16bit -32768 .. 32767

    longword 32bit 0 .. 4294967295

    longint 32bit -2147483648 .. 2147483647

    float 32bit 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 segn 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 nmero de elementos, definido segn el tamao 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 travs de un ndice. Este ndice se especfica 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 segn el modelo del mismo. 1.6.4.- Constantes: Ayudan a identificar un valor constante en nuestro programa, facilitando an ms la comprensin 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 declaracin). 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 especfico a elementos o variables dentro de nuestro programa. Para definir un smbolo, utilizamos la palabra Symbol, seguida del alias del elemento, el smbolo de igualdad =, y por ltimo el elemento en cuestin:

    Symbol {alias} = {elemento} Por ejemplo, si deseamos controlar un motor DC a travs de uno de los pines del puerto A de un microcontrolador, resultara 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 Aritmticos: Entre los operadores aritmticos ms utilizados tenemos los que se muestran en la siguiente tabla:

    Operadores Operacin 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

    * multiplicacin byte, short, word, integer, longint, longword, float word, integer, longint, longword, float

    / Divisin, en punto flotante. byte, short, word, integer, longint, longword, float float

    div Divisin, redondea hacia el entero mas cercano. byte, short, word, integer, longint, longword

    byte, short, word, integer, longint, longword

    mod

    mdulo, devuelve el resto de la divisin 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 Operacin and AND Lgico or OR Lgico xor OR Exclusiva (XOR) not NOT Lgico

    Figura 1.69

    Con estos operadores resulta muy sencillo realizar operaciones binarias, como lo demuestra el siguiente ejemplo: Si aplicamos una AND lgica, donde deseamos filtrar los siete bits ms significativos del valor almacenado en la siguiente variable:

    Var1 = %00101001 Entonces,

    Var1 = Var1 and %00000001

    El resultado de esta operacin es Var1 = %00000001 1.6.8.- Operadores de Comparacin: Los operadores de comparacin normalmente son utilizados con la instruccin IfThem para realizar comparaciones entre variables o datos extrados de alguna operacin aritmtica.

    Operador Operacin = Igual

    Diferente > Mayor que < Menor que

    >= Mayor o Igual que

  • _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC www.conexionelectronica.com Christian Bodington Esteva

    49

    Capitulo II

    2.1.- Arquitectura bsica del microcontrolador PIC16F877. Para iniciar con el estudio de la programacin en mikroBasic, nos plantearemos tres objetivos que consideramos importantes para entrar en materia:

    Familiarizarse con la arquitectura bsica de los microcontroladores que estaremos empleando a lo largo de esta edicin.

    Familiarizarse con la estructura de programa de mikroBasic, muy importante a la hora

    de realizar un programa ordenado y libre de errores, por muy pequeo que este sea. El estudio de las primeras prcticas, cortas y de fcil comprensin con el fin de

    adquirir confianza en el uso de instrucciones y libreras de mikroBasic.

    Arquitectura Bsica del microcontrolador PIC16F877: Uno de los microcontroladores seleccionados para el estudio de la programacin de microcontroladores en lenguaje Basic ha sido el PIC16F877. Veamos a continuacin algunas de sus caractersticas tcnicas ms importantes:

    CPU: Risc (Reduced Instruction Set Computer). Frecuencia Mxima: 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.

    Proteccin de cdigo programable.

    Voltaje de Operacin: 2.0 voltios a 5.5 voltios.

    Bajo consumo de potencia: < 0.6 mA typical @ 3V, 4 Mhz / 20 A typical @ 3V, 32

    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 Sncrono (SSP) con SPI e I2C.

  • _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC www.conexionelectronica.com Christian Bodington Esteva

    50

    Puerto Serial Universal (USART/SCI).

    2 Mdulos 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

    Descripcin de los pines del microcontrolador PIC16F877:

    PIN Identificacin Descripcin del Pin1 MCLR/Vpp Reset y entrada de voltaje de programacin.2 RA0/AN0 Pin de Entrada/Salida (I/O) del puerto A3 RA1/AN1 Pin de Entrada/Salida (I/O) del puerto A4 RA2/AN2/Vref- Pin de Entrada/Salida (I/O) del puerto A5 RA3/AN3/Vref+ Pin de Entrada/Salida (I/O) del puerto A6 RA4/TOCKI Pin de Entrada/Salida (I/O) del puerto A7 RA5/AN4/SS Pin de Entrada/Salida (I/O) del puerto A8 RE0/RD/AN5 Pin de Entrada/Salida (I/O) del puerto E9 RE1/WR/AN6 Pin de Entrada/Salida (I/O) del puerto E10 RE2/CS/AN7 Pin de Entrada/Salida (I/O) del puerto E11 VDD Pin de Alimentacin de 5Vdc12 VSS Pin de Alimentacin 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 C16 RC1/T1OSI/CCP2 Pin de Entrada/Salida (I/O) del puerto C17 RC2/CCP1 Pin de Entrada/Salida (I/O) del puerto C18 RC3/SCK/SCL Pin de Entrada/Salida (I/O) del puerto C19 RD0/PSP0 Pin de Entrada/Salida (I/O) del puerto D20 RD1/PSP1 Pin de Entrada/Salida (I/O) del puerto D21 RD2/PSP2 Pin de Entrada/Salida (I/O) del puerto D22 RD3/PSP3 Pin de Entrada/Salida (I/O) del puerto D23 RC4/SDI/SDA Pin de Entrada/Salida (I/O) del puerto C24 RC5/SDO Pin de Entrada/Salida (I/O) del puerto C25 RC6/TX/CK Pin de Entrada/Salida (I/O) del puerto C26 RC7/RX/DT Pin de Entrada/Salida (I/O) del puerto C27 RD4/PSP4 Pin de Entrada/Salida (I/O) del puerto D28 RD5/PSP5 Pin de Entrada/Salida (I/O) del puerto D29 RD6/PSP6 Pin de Entrada/Salida (I/O) del puerto D30 RD7/PSP7 Pin de Entrada/Salida (I/O) del puerto D31 VSS Pin de Alimentacin a Tierra (GND)32 VDD Pin de Alimentacin de 5Vdc33 RB0/INT Pin de Entrada/Salida (I/O) del puerto B34 RB1 Pin de Entrada/Salida (I/O) del puerto B35 RB2 Pin de Entrada/Salida (I/O) del puerto B36 RB3/PGM Pin de Entrada/Salida (I/O) del puerto B37 RB4 Pin de Entrada/Salida (I/O) del puerto B38 RB5 Pin de Entrada/Salida (I/O) del puerto B39 RB6/PGC Pin de Entrada/Salida (I/O) del puerto B40 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 adems, define la velocidad a la cual va a trabajar. Para hacer funcionar nuestro diseo 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 cermicos vienen dados segn la tabla que se muestra a continuacin:

    Modo Frecuencia Osc1/CLKin Osc2/CLKout

    LP 32 kHz 200 kHz68 - 100 pF 15 - 33 pF

    68 - 100 pF 15 - 33 pF

    XT 2 MHz 4 MHz15 - 33 pF 15 - 33 pF

    15 - 33 pF 15 - 33 pF

    HS 4 MHz 10 MHz15 - 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 alimentacin de 5 Vdc y medir la seal de salida del oscilador XT con un osciloscopio, en el pin 14 (Osc2/CLKout) del microcontrolador, podremos ver la onda generada bajo los siguientes parmetros de medicin 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 perodo en este caso sera la siguiente:

    Frecuencia: 3,972 Mhz Perodo: 251,71 ns

    Cristal de cuarzo TTL: Este tipo de cristal consta de cuatro pines, de los cuales solo tres estn 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 parmetros de medicin 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 perodo en este caso sera la siguiente:

    Frecuencia: 3,999 Mhz Perodo: 250,013 ns

    El oscilador externo en modo RC resulta ser el ms sencillo de todos y por ende el ms econmico. Su configuracin lo hace menos preciso debido a que existe una tolerancia de error en sus componentes, sin olvidar tambin que la temperatura puede afectar la operacin de este tipo de oscilador. Los valores recomendados para este oscilador son los siguientes:

    5 Kohm R1 100 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 disea un circuito con microcontroladores PIC. A travs de este Pin se podr reiniciar el dispositivo, si a ste se le aplica un nivel lgico bajo (0V), por lo tanto resulta importante destacar que para que un programa cargado en un microcontrolador se mantenga en ejecucin, el Pin MCLR debe estar siempre en un nivel lgico 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 tcnicas de diseo. A continuacin veremos algunos circuitos bsicos que deben ser tomados en cuenta para el desarrollo de prcticas con microcontroladores PIC. Estos circuitos son muy tiles cuando deseamos visualizar el resultado de una accin programada en el microcontrolador. 2.4.1.- Estado Lgico de un pin I/O. Una manera muy sencilla de ver el estado lgico de un pin configurado como salida en cualquiera de los puertos de microcontrolador es a travs 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 lgico del pin de salida del puerto (RB1) sea igual a 1, es decir, 5 voltios. El Led D2 se iluminar solo cuando el estado lgico 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 lgico de un pin especfico, en cualquiera de los puertos de un microcontrolador, una forma bsica de visualizar este cambio es a travs del uso de Leds.

  • _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC www.conexionelectronica.com Christian Bodington Esteva

    58

    2.4.2.- Lectura de un estado lgico en un pin I/O: El microcontrolador tambin nos permite capturar datos o seales externas para luego ser procesadas y convertidas en respuestas que pueden definir una accin especfica en nuestros circuitos de prueba. Un ejemplo comn podra ser el uso de un pulsador para hacer destellar un led cada vez que ste sea presionado. Si deseamos introducir un nivel lgico bajo (0V), o alto (5V), a una de las entradas de un microcontrolador a travs de un pulsador, podramos 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 lgico alto (5V) mientras el pulsador permanece abierto. Al presionar el pulsador, el nivel lgico en el pin I/O del puerto pasa a ser bajo (0V). El segundo circuito de la figura 2.12 mantiene un nivel lgico bajo (0V) mientras el pulsador permanece abierto. Al presionar el pulsador, el nivel lgico 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 electrnicos digitales con etapas de manejo de potencia o con otros circuitos. Este componente en una de sus versiones, se compone bsicamente de un diodo LED el cual se encarga de iluminar un fototransistor, para que ste conduzca corriente a travs del colector.

    Figura 2.13

    En la configuracin de la figura 2.13, cuando en el pin I/O aplicamos un 1 lgico (5V), el LED del opto-acoplador enciende y el fototransistor conduce la corriente a tierra; por lo tanto, en la salida tendremos un 0 lgico (0V). Si apagamos el LED, el transistor no conduce, de tal manera que en la salida tendremos un 1 lgico (5V). En la configuracin de la figura 2.14, cuando en el pin I/O aplicamos un 1 lgico (5V), el LED del opto-acoplador enciende y el fototransistor conduce para poner en la salida un 1 lgico (5V). Mientras haya un 0 lgico en la entrada, el fototransistor permanecer abierto entre el emisor y colector, dando como resultado un 0 lgico (0V) en la salida.

  • _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC www.conexionelectronica.com Christian Bodington Esteva

    60

    Figura 2.14 Una configuracin muy comn para el control de dispositivos de potencia como motores elctricos, 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 travs 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 construccin de un diseo sencillo que podemos implementar en todos los proyectos propuestos. En la figura 2.16 se puede observar el diseo 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.- Configuracin 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 configuracin de puertos, los cuales para el caso especfico del PIC16F877 son cinco: TrisA (registro de configuracin 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 ms 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 deseramos 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 configuracin de los pines I/O del puerto A es el siguiente:

    1 1 1 1 0RA4 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 cdigo es muy sencillo: TrisA = %11110 (% para expresar la configuracin en Binario), :

    TrisA = $1E ($ para expresar la configuracin 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 0RB7 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 estarn en uso como entrada, ya que de esta forma podemos evitar daos en el hardware interno del microcontrolador en caso de una conexin errnea al experimentar con ste en un tablero de pruebas. La configuracin en mikroBasic en forma de cdigo de programa en este caso sera: TrisB = %11111110 (si se desea hacer la notacin en binario), : TrisB = $FE (si se desea hacer la notacin 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 configuracin de los puertos C, D y E. Sus registros de configuracin TRISC, TRISD y TRISE debern ser siempre configurados para determinar su funcin dentro de un proyecto electrnico.

    Bit menos significativo

  • _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC www.conexionelectronica.com Christian Bodington Esteva

    64

    2.6.- Primeros ejemplos de programacin en mikroBasic: 2.6.1.- Ejemplo de programacin #1: Un ejemplo sencillo para determinar que hemos iniciado de forma correcta todo lo referente a la configuracin de un nuevo proyecto en mikroBasic, es intentar realizar el encendido de uno o dos Leds a travs de uno de los puertos disponibles en el microcontrolador. Normalmente los pasos que vamos a realizar para lograr este objetivo son los pasos bsicos para realizar el resto de nuestros proyectos. Estos pasos sern descritos a continuacin y el programa para el encendido de dos Leds estar basado en el diagrama esquemtico de la figura 2.19.

    Figura 2.19 Dos puntos importantes a considerar sobre este diagrama esquemtico son:

    El Led D1 tiene su nodo conectado al pin RB1 del puerto B, por lo tanto el Led slo encender cuando RB1 = 1.

    El Led D2 tiene su ctodo conectado al pin RB0 del puerto B, por lo tanto el Led

    slo encender cuando RB0 = 0

  • _______________________________________________________________________________________ Contenido - Basic para Microcontroladores PIC www.conexionelectronica.com Christian Bodington Esteva

    65

    Empecemos con la creacin de un nuevo proyecto, siguiendo los pasos comentados en la seccin 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 programacin:

    Figura 2.20 Ntese que en la ventana de programacin mikroBasic ha generado automticamente una pequea estructura de programa que nos servir de gua para comenzar a programar. En este caso, lo primero que vamos a agregar ser la lnea de configuracin del puerto B, ya que en l hemos conectado los Leds que deseamos encender. Para determinar la palabra de configuracin del registro TRISB, veamos la siguiente figura:

    1 1 1 1 1 1 0 0RB7 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 lnea en la estructura del programa: program Ejemplo1 ' Area de declaracin. main: ' Programa Principal TRISB = %11111100 ' Configuracin 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 declaracin. main: ' Programa Principal TRISB = %11111100 ' Configuracin 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 segn lo esperado, compilamos el programa a travs 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 adems el archivo de extensin .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 programacin #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 travs de los pines RD0 y RD1 del puerto D. Esto significa que debemos configurar los pines RD0 y RD1 como entradas a travs de registro TRISD, para poder tomar lectura del estado en el cual se encuentran, de tal forma que podamos tomar una decisin 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 continuacin 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 lnea de cdigo y sus respectivos comentarios: program Ejemplo2 ' Area de declaracin. main: ' Programa Principal. TRISB = %11111100 ' Configuracin del Puerto "B" TRISD = %11111111 ' Configuracin 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 verificacin 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 informacin 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 travs 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 cdigo de programa: program Ejemplo2 ' Area de declaracin. 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 ' Configuracin del Puerto "B" TRISD = %11111111 ' Configuracin 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 verificacin 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 programacin #3: En este ejemplo haremos uso de la librera Button de mikroBasic. Button permite eliminar rebotes en pulsadores o interruptores, evitando as errores de lectura que pueden generar mal funcionamiento de nuestros diseos. 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 especfico del puerto que estaremos utilizando

    para tomar lectura de un pulsador o interruptor.

    Tiempo: Este campo es un perodo 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 mximo para el perodo de anti-rebote, es decir 255, el tiempo de anti-rebote ser de 250 milisegundos.

    Estado Activo: Este parmetro puede ser cero (0) uno (1). A travs de este campo

    podemos definir si el pulsador o interruptor estar activo con un 0 lgico o con un 1 lgico.

    Esta rutina tambin 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 prctico, basado en el ejemplo de programacin #2. program Ejemplo3 ' Area de declaracin. 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 ' Configuracin del Puerto "B" TRISD = %11111111 ' Configuracin 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 verificacin 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

    decisin con respecto al puerto de salida. Para comprender mejor el funcionamiento de esta rutina, analizaremos la seal 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 momentneamente el pulsador P1, pero no lo mantenemos activo el tiempo suficiente para cumplir con el perodo 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 duracin, 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. Tambin es posible utilizar la rutina Button de la siguiente manera: program Ejemplo_3_1 ' Area de declaracin. Symbol D1 = PORTB.0 ' Alias del Pin RB0 Symbol D2 = PORTB.1 ' Alias del Pin RB1 main: ' Programa Principal. TRISB = %11111100 ' Configuracin del Puerto "B" TRISD = %11111111 ' Configuracin 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 verificacin 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)