



















Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Es un resumen de las principales rutinas e implementaciones a manera de fragmentos de código escrito en BASIC para microcontroladores.
Tipo: Apuntes
1 / 27
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!




















Indice Del Documento:
'* Name : Activar-Desactivar_Puertos.BAS * '* Author : [Adrián Manuel López Cosenza] * '* Notice : Copyright (c) 2015 [GNU-GPL3] * '* : All Rights Reserved * '* Date : 23/05/2015 * '* Versión : 1.0 / NO COMPILAR ESTE EJEMPLO * '* Notes : Leer datasheet antes de configurar * '* * '**************************************************************** ' Sintaxis: 'High Port ' High es una palabra reservada por PROTON para activar 'High port.pin ' La sintaxis correcta es indicar la acción con la palabra reservada seguida de la dirección del puerto 'Low Port ' Low es una palabra reservada por PROTON para desactivar (APAGAR) 'Low port.pin ' La sintaxis correcta es indicar la acción con la palabra reservada seguida de la dirección del puerto ' Ejemplo: High PORTB ' Esto activa todas las salidas del puerto B (Debe haberse declarado el puerto B como salida) Low PORTB ' Esto desactiva todas las salidas del puerto B High PORTB ' También expresa que el puerto B cambiara al estado ALTO (ACTIVO) Low PORTB ' También expresa que el puerto B cambiara al estado BAJO (DESACTIVADO) ' De igual manera podemos utilizar las siguientes sintaxis: PORTB= 0 ' El puerto B a nivel BAJO (APAGADO) PORTB.0= 0 ' El puerto B.0 solo el pin 0 con nivel BAJO (APAGADO) PORTB=% 00000000 ' Todo el puerto B con nivel bajo (APAGADO) PORTB= 1 ' Puerto B solo el pin 0 con nivel ALTO (ACTIVADO) PORTB.0= 1 ' Puerto B solo el pin 0 con nivel ALTO (ACTIVADO) PORTB= 7 ' El puerto B reproduce el dato 00000111 Decimal PORTB= 3 ' El puerto B reproduce el dato 00000011 Decimal PORTB=$F ' El puerto B reproduce el dato 00001111 Hexadecimal PORTB=$3F ' El puerto B reproduce el dato 00111111 Hexadecimal PORTB=% 11111111 ' Todo el puerto con nivel ALTO (ACTIVADO)
'* Name : Activar_Por_Bucle.BAS * '* Author : [Adrián Manuel López Cosenza] * '* Notice : Copyright (c) 2015 [GNU-GPL3] * '* : All Rights Reserved * '* Date : 03/06/2015 * '* Versión : 1.0 / NO COMPILAR ESTE EJEMPLO * '* Notes : * '* : * '**************************************************************** Device 18F4550 ' Micro-controlador seleccionado como ejemplo '**************************************************************** ' Ejemplo 1 Inicio: ' Etiqueta principal, ejecuta una rutina PORTD.2= 1 ' Activar (ALTA) PORTD PIN 2 DelayMS 200 ' Esperar 2 mili-segundos PORTD.2= 0 ' Desactivar(CERO) PORTD PIN 2 DelayMS 200 ' Esperar 2 mili-segundos GoTo Inicio ' Termina la rutina y regresa a la etiqueta '**************************************************************** ' Ejemplo 2 Loop: ' Etiqueta de secuencia, ejecuta una rutina LED = 1 ' Activar LED DelayMS 300 ' Esperar 3 mili-segundos For scan = 1 To 7 ' Comienzo del ciclo FOR Escanea hasta completar 7 LED = LED << 1 ' Mientras LED sea menor a 7 debe continuar DelayMS 300 ' Esperar 3 mili-segundos Next ' Siguiente GoTo Loop ' Regresa a loop '**************************************************************** ' Ejemplo 3 Otra: For n= 1 To 50 Step 2 ' Etiqueta de secuencia, ejecuta una rutina PulsOut PORTD.0, 2500 ' Mantén el pulso en PORTD PIN 0 por 2 segundos y medio DelayMS 10 ' Esperar 0.1 mili-segundos Next ' Siguiente End ' FIN de la rutina
'* Name : Activar_Por _Etiqueta.BAS * '* Author : [Adrián Manuel López Cosenza] * '* Notice : Copyright (c) 2015 [GNU-GPL3] * '* : All Rights Reserved * '* Date : 23/05/2015 * '* Versión : 1.0 / NO COMPILAR ESTE EJEMPLO * '* Notes : * '* * '**************************************************************** ' Útil para realizar acciones que no requieren lazos de control, o como parte de un lazo que ejecuta acciones inmutables. GoSub Gira ' Activar una rutina llamada Gira ' La rutina necesita esta sintaxis: Gira: ' Lo que queremos que haga el micro-controlador Return ' Retornar al punto de inicio
'* Name : Alias_Perifericos.BAS * '* Author : [Adrián Manuel López Cosenza] * '* Notice : Copyright (c) 2015 [GNU-GPL3] * '* : All Rights Reserved * '* Date : 23/05/2015 * '* Versión : 1.0 / NO COMPILAR ESTE EJEMPLO * '* Notes : Leer datasheet antes de configurar * '* * '**************************************************************** ' Un alias o un modificador es una palabra que expresa un dispositivo conectado a a un puerto: Symbol MOTOR = PORTA. ' Establece que existe un motor conectado en el puerto A pin 1 Symbol SW = PORTA. ' Establece que existe un interruptor conectado en el puerto A pin 2 Symbol S1 = PORTA. ' Establece que existe un interruptor conectado en el puerto A pin 3
'* Name : Bucle_Accion.BAS * '* Author : [Adrián Manuel López Cosenza] * '* Notice : Copyright (c) 2015 [GNU-GPL3] * '* : All Rights Reserved * '* Date : 03/06/2015 * '* Versión : 1.0 / NO COMPILAR ESTE EJEMPLO * '* Notes : * '* : * '**************************************************************** ' Esto ejecuta un bloque de instrucciones hasta que una condición sea verdadera var1 = 1 ' Variable a incrementar Repeat ' Repetir hasta ser mayor del valor declarado Print At 1 , 1 , Dec var ' También podemos utilizar Repeat High led: Until PORTA.0 = 1 DelayMS 200 ' Evitar rebote Inc var1 ' Incrementar la variable Until var1 > 10 ' Con esto indicamos que al llegar a 10 rompa el bucle
'* Name : Configurar_Comunicación_Serial.BAS * '* Author : [Adrián Manuel López Cosenza] * '* Notice : Copyright (c) 2015 [GNU-GPL3] * '* : All Rights Reserved * '* Date : 23/05/2015 * '* Versión : 1.0 / NO COMPILAR ESTE EJEMPLO * '* Notes : Varia según el micro-controlador * '* : Leer la datasheet correspondiente antes de * '* seleccionar el puerto * '**************************************************************** Device 16F Serial_Baud = 9600 Rsout_Pin = PORTC. Rsout_Mode = TRUE Rsout_Pace = 1 Rsin_Pin = PORTC. Rsin_Mode = TRUE Hserial_Baud = 9600 ' 1# Speed in baud = 9600 Hserial_RCSTA = % 10010000 ' 2# Enable serial port and continuous receive Hserial_TXSTA = % 00100100 ' 3# Enable transmit and asynchronous mode Hserial_Clear = On ' 4# Enable error clearing on received characters ' Notas: ' 1# Velocidad en baudios = 9600 ' 2# Activar puerto serial y recepción continua ' 3# Activar modo de transmisión asíncrona ' 4# Activar auto limpieza al recibir caracteres
'* Name : Configurar_Entrada_Analogica.BAS * '* Author : [Adrián Manuel López Cosenza] * '* Notice : Copyright (c) 2015 [GNU-GPL3] * '* : All Rights Reserved * '* Date : 03/06/2015 * '* Versión : 1.0 / NO COMPILAR ESTE EJEMPLO * '* Notes : * '* : * '**************************************************************** Declare Adin_Res 10 ' Resolución del convertidor analógico digital Declare Adin_Tad 2 ' CLK options are 0,1,2,3 (are based internal cycles) Declare Adin_Stime 100 ' Tiempo de muestreo adcon1 = % 10000000 ' Setup del registro ADCON1, AN1 / RA1 es Analógico ' Nota para mayor información refiera al datasheet del micro-controlador
'* Name : Configurar_LCD.BAS * '* Author : [Adrián Manuel López Cosenza] * '* Notice : Copyright (c) 2015 [GNU-GPL3] * '* : All Rights Reserved * '* Date : 23/05/2015 * '* Versión : 1.0 / NO COMPILAR ESTE EJEMPLO * '* Notes : Valido para 16X2 16X4 * '* : Antes de configurar revisar la datasheet * '* del dispositivo. * '**************************************************************** 'Seleccionar dispositivo '**************************************************************** Device 18F '**************************************************************** ' Declarar Puertos '**************************************************************** Declare LCD_Type = 0 Declare LCD_DTPin = PORTD. Declare LCD_ENPin = PORTD. Declare LCD_RSPin = PORTD. Declare LCD_Interface = 4 Declare LCD_Lines = 2 ' Si se utiliza una 16X4 LCD_Lines debe ser = 4
'* Name : Configurar_LCD_Grafico.BAS * '* Author : [Adrián Manuel López Cosenza] * '* Notice : Copyright (c) 2015 [GNU-GPL3] * '* : All Rights Reserved * '* Date : 23/05/2015 * '* Versión : 1.0 / NO COMPILAR ESTE EJEMPLO * '* Notes : Valido para LCD convencional * '* : Antes de configurar revisar la datasheet * '**************************************************************** 'Seleccionar dispositivo '**************************************************************** Device 18F '**************************************************************** ' Declarar Puertos '**************************************************************** LCD_DTPort = PORTD LCD_RSPin = PORTC. LCD_ENPin = PORTE. LCD_RWPin = PORTC. LCD_CS1Pin = PORTE. LCD_CS2Pin = PORTE. LCD_Type = GRAPHIC ' Escribir en mayúsculas Internal_Font = OFF ' Apagar las fuentes internas Font_Addr = 0
'* Name : Configurar_Pines_Digitales.BAS * '* Author : [Adrián Manuel López Cosenza] * '* Notice : Copyright (c) 2015 [GNU-GPL3] * '* : All Rights Reserved * '* Date : 23/05/2015 * '* Versión : 1.0 / NO COMPILAR ESTE EJEMPLO * '* Notes : * '* : * '**************************************************************** ' CONFIGURAR los pines como digital ' Ejemplo: All_Digital= true ' Puertos A y B
'* Name : Configurar_Puerto_I_O.BAS * '* Author : [Adrián Manuel López Cosenza] * '* Notice : Copyright (c) 2015 [GNU-GPL3] * '* : All Rights Reserved * '* Date : 23/05/2015 * '* Versión : 1.0 / NO COMPILAR ESTE EJEMPLO * '* Notes : Leer datasheet antes de configurar * '* * '**************************************************************** ' Esto es poco claro en principio, sin embargo vamos a explicarlo ' Declaramos un 18F '**************************************************************** Device 18F '**************************************************************** ' Para declarar la totalidad del puerto como entrada '**************************************************************** Input PORTC ' Todo el puerto es de entrada Input PORTC.0 ' Solo el puerto C.0 es entrada, el resto es salida ' También podemos utilizar esta forma: TRISC= 1 ' Todo el puerto es de entrada TRISC.0- 1 ' Solo el puerto C.0 es entrada, el resto es salida ' Si se prefiere podemos utilizar el método binario: TRISC=% 11111111 ' Todo el puerto es entrada TRISC=% 10000000 ' Solo el puerto C.0 es entrada, el resto es salida ' En hexadecimal seria así: TRISC=$FF ' Todo el puerto es entrada ' En decimal seria así: TRISC= 255 ' Todo el puerto es entrada '**************************************************************** ' Una manera de entender esto seria así: '**************************************************************** ' Cada pin del dispositivo representa un puerto, si asignamos un uno a cada puerto, ' este se convierte en entrada, si lo colocamos en cero es una salida. PORTC.0 PORTC.1 PORTC.2 PORTC.3 PORTC.4 PORTC.5 PORTC.6 PORTC. % 1 1 1 1 1 1 1 1 ' Todo el puerto es entrada % 1 0 0 0 0 0 0 0 ' Puerto C.0 es una entrada, el resto es salida % 0 1 1 0 0 0 1 0 ' Puerto C.0, C.3, C.4, C.5 y C.7 son entradas - Puerto C.1, C.2 y C.6 son salidas ' para expresar un valor con cualquier método solo necesitamos transformarlo ' En binario / En Hexadecimal / En Decimal 11111111 FF 255 11111110 FE 254 11111100 FC 252 11111000 F8 248
'* Name : Configurar_Teclado.BAS * '* Author : [Adrián Manuel López Cosenza] * '* Notice : Copyright (c) 2015 [GNU-GPL3] * '* : All Rights Reserved * '* Date : 23/05/2015 * '* Versión : 1.0 / NO COMPILAR ESTE EJEMPLO * '* Notes : Varia según el micro-controlador * '* : * '**************************************************************** Keypad_Port = PORTB ' Leer la datasheet correspondiente antes de seleccionar el puerto
'* Name : Configurar_Variables.BAS * '* Author : [Adrián Manuel López Cosenza] * '* Notice : Copyright (c) 2015 [GNU-GPL3] * '* : All Rights Reserved * '* Date : 23/05/2015 * '* Versión : 1.0 / NO COMPILAR ESTE EJEMPLO * '* Notes : * '* : * '**************************************************************** ' El nombre de la variable lo asignamos a nuestra entera conveniencia. 'Ejemplos: (Utilizar nemonicos fáciles de recordar) ' Declaración Variable Palabra Dim Tecla_1 As Byte Dim Salida_0 As Word Dim Contador-a As Dword ' No es correcto expresarlo de esta forma, puede provocar errores. Tecla_1 var Byte Salida_0 var Word Contador-a var Dword ' No utilizar nemonicos de esta forma ' Declaración Variable Palabra Dim pos1 As Byte Dim 7este As Byte Dim motorderecho As Byte Dim sensor As Word ' Trate de asociar sus nemonicos a la acción que representa.