Upload
alejandro-reyes
View
2
Download
0
Embed Size (px)
Citation preview
Ing. Felipe Peña UETS Mecatrónica
UNIDAD EDUCATIVA TECNICO SALESIANO
SISTEMAS MICROCONTROLADOS
SOFTWARE
TIPOS DE DATOS EN BASIC
Hay varios tipos de datos que se pueden utilizar en el lenguaje de programación Basic. La siguiente tabla muestra el rango de valores que estos datos pueden tener cuando se utilizan en su forma básica.
Tipo de dato Descripción
Tamaño (Número de bits) Rango de valores
bit Un bit 1 0 o 1
sbit Un bit 1 0 o 1
byte, char Carácter 8 0 ... 255
short Entero con signo corto
-127 ... 128
word Entero sin signo 16 0 ... 65535
integer Entero con signo 16 -32768 ... 32767
longword Palabra de 32 bits 32 0 ... 4294967295
longint Palabra de 32 bits asignada
32 -2147483648 ... 2147483647
float Punto flotante 32 ±1.17549435082*10-38 ... ±6.80564774407*1038
Prefijos de asignación de valores
Formato Prefijo Ejemplo
Decimal
A= 100
Hexadecimal 0x o $ A = 0xFF
Binario % A= %11011101
Declaracion de Variables
CONSTANTES
Las constantes son los números o caracteres cuyo valor no puede ser cambiado durante la ejecución de programa. A diferencia de las variables, las constantes se almacenan en la memoria ROM del microcontrolador para guardar el mayor espacio posible de la memoria RAM. El compilador reconoce las constantes por sus nombres y el prefijo const. Cada constante se declara bajo un nombre único que debe ser un identificador válido. Las constantes pueden ser en formatos decimal, hexadecimal o binario. El compilador los distingue por su prefijo. Si una constante no lleva prefijo, se considera decimal por defecto.
Ing. Felipe Peña UETS Mecatrónica
Formato Prefijo Ejemplo
Decimal
const MAX = 100
Hexadecimal 0x o $ const MAX = 0xFF
Binario Punto flotante const MAX = %11011101
Las constantes se declaran en la parte de declaración del programa o de la rutina. La sintaxis es la siguiente:
const nombre_de_constante [ as type] = valor
Los nombres de las constantes se escriben normalmente con mayúsculas. El tipo de una constante se reconoce automáticamente por su tamaño. En el siguiente ejemplo, la constante MINIMUM se considera un entero con signo y ocupa dos bytes de la memoria Flash (de 16 bits):
const MINIMUM = -1000 ' Declarar la constante MINIMUM
El tipo de constante se especifica opcionalmente. En la ausencia de tipo, el compilador lo considera “el menor” tipo conveniente al valor de constante.
const MAX as longint = 10000 const MIN = 1000 ' Compilador supone el tipo word const SWITCH = "n" ' Compilador supone el tipo char
En el siguiente ejemplo, una constante denominada T_MAX se declara de modo que tenga el valor fraccional 32.60. Ahora, el programa puede comparar la temperatura anteriormente medida con la constante con el nombre con significado en vez del número 32.60.
const T_MAX = 32.60 ' Declarar temperatura T_MAX const T_MAX = 3.260E1 ' Otra forma de declarar la consta nte T_MAX
Una constante de cadena consiste en una secuencia de caracteres. Debe estar encerrada entre comillas. Un espacio en blanco se puede incluir en la constante de cadena y representa un carácter. Las constantes de cadena se utilizan para representar cantidades no numéricas tales como nombres, direcciones, mensajes etc.
const Message_1 = "Press the START button" ' Mensaje 1 para LCD const Message_2 = "Press the RIGHT button" ' Mensaje 2 para LCD const Message_3 = "Press the LEFT button" ' Mensaje 3 para LCD
En este ejemplo, al enviar la constante Message_1 al LCD, el mensaje ‘press the START button’ aparecerá en la pantalla.
VARIABLES
Una variable es un objeto nombrado capaz de contener un dato que puede ser modificado durante la ejecución de programa. Cada variable se declara bajo un nombre únicoque debe ser un identificador válido. Por ejemplo, para sumar dos números (número1 + número2) en el programa, es necesario tener una variable para representar qué es lo que llamamos suma en vida cotidiana. En este caso, número1, número2 y suma son variables. La sintaxis es la siguiente:
Ing. Felipe Peña UETS Mecatrónica
dim nombre_de_variable as type
Las variables en Basic son de un tipo, lo que significa que es necesario especificar el tipo de dato que se asignará a la variable. Las variables se almacenan en la memoria RAM y el espacio de memoria ocupado (en bytes) depende de su tipo. Aparte de las declaraciones de una sola variable, las variables del mismo tipo, se pueden declarar en forma de una lista. Aquí, lista de identificadores es una lista de identificadores válidos delimitados por comas, mientras que tipo puede ser cualquier tipo de dato.
dim i, j, k as byte 'Definir variables i, j, k dim counter, temp as word 'Definir variables contador y temp
OPERADORES ARITMÉTICOS
Los operadores aritméticos se utilizan para realizar operaciones aritméticas. Estas operaciones se realizan sobre los operandos numéricos y siempre devuelven los resultados numéricos. Las operaciones binarias se realizan sobre dos operandos, mientras que las operaciones unitarias se realizan sobre un operando. Todos los operadores aritméticos se asocian de izquierda a derecha.
Operador Operación
+ Adición
- Resta
* Multiplicación
/ División - punto flotante
div División - redondear
mod Remanente
OPERADORES RELACIONALES
Los operadores relacionales se utilizan para comparar dos variables y determinar la validez de su relación. En mikroBasic, todos los operadores relacionales devuelven 255 si la expresión es evaluada como verdadera (true). Si una expresión es evaluada como falsa (false), el operador devuelve 0. Lo mismo se aplica a las expresiones tales como ‘si la expresión es evaluada como verdadera, entonces...’
Operador Significado Ejemplo Condición de veracidad
> es mayor que b > a si b es mayor que a
>= es mayor o igual que a >= 5 si a es mayor o igual que 5
< es menor que a < b si a es menor que b
<= es menor o igual que a <= b si a es menor o igual que b
= es igual que a = 6 si a es igual que 6
<> no es igual que a <> b si a no es igual que b
Ing. Felipe Peña UETS Mecatrónica
OPERADORES LÓGICOS DE MANEJO DE BITS
Los operadores lógicos de manejo de bits se realizan sobre los bits de un operando. Se asocian de izquierda a derecha. La única excepción es el complemento not que realiza un desplazamiento de derecha a izquierda. Los operadores de manejo de bits se enumeran en la siguiente tabla:
Operando Significado Ejemplo Resultado
<< desplazamiento a la izquierda A = B << 2 B = 11110011 A = 11001100
>> desplazamiento a la derecha A = B >> 3 B = 11110011 A = 00011110
and Y lógico para manejo de bits C = A and B A=11100011
B=11001100 C = 11000000
or O lógico para manejo de bits C = A or B A=11100011
B=11001100 C = 11101111
not NO lógico para manejo de bits A = not B B = 11001100 A = 00110011
xor EXOR lógico para manejo de bits C = A xor B A = 11100011
B = 11001100 C = 00101111
Los operadores de manejo de bits y (and), o (or) y xor realizan las operaciones lógicas sobre los pares de bits de operandos apropiados. El operador not complementa cada bit de un solo operando.
SENTENCIAS CONDICIONALES
Las condiciones son ingredientes comunes de un programa. Las condiciones permiten ejecutar una o varias sentencias dependiendo de validez de una expresión. En otras palabras, ‘Si se cumple la condición (...), se debe hacer (...). De lo contrario, se debe hacer (...)’. Una sentencia condicional puede ser seguida por una sola sentencia o por un bloque de sentencias a ser ejecutadas.
SENTENCIA CONDICIONAL IF
La sintaxis en una forma simple de la sentencia if es:
if expresión then operaciones end if
Si el resultado de la expresión es verdadero (distinto de 0), las operaciones se realizan y el programa continúa con la ejecución. Si el resultado de la expresión es falso (0), las operaciones no se realizan y el programa continúa inmediatamente con la ejecución.
Ing. Felipe Peña UETS Mecatrónica
El operador if se puede utilizar en combinación con el operador else:
if expresión then operaciones1 else other operaciones2 end if
Si el resultado de la expresión es verdadero (distinto de 0), las operaciones1 se realizan. De lo contrario, las operaciones2 se realizan. Después de realizar estas operaciones, el programa continúa con la ejecución.
SENTENCIAS IF ANIDADAS
La sentencia if anidada necesita una atención adicional. Es una sentencia utilizada dentro de otra sentencia if. Siguiendo la regla, se descomponen empezando por la sentencia if más anidada, mientras que cada sentencia else se enlaza a la más cercana sentencia if disponible a la izquierda.
SENTENCIA CASE STATEMENT
La sentencia select case es una sentencia condicional de ramificación múltiple. Consiste en una expresión (condición) selector y una lista de los valores posibles de la expresión. La síntaxis de la sentencia select case es la siguiente:
El especificador selector es una expresión evaluada como un valor entero.
Los especificadores value_1...value_n representan los valores posibles del selector. Pueden ser literales, constantes o expresiones de constantes. Los especificadores statements_1 ...statements_n pueden ser cualquier sentencia. La cláusula case else es opcional.
Primero se evalúa el valor de la expresión selector. Después se compara con todos los valores disponibles. Si los valores son iguales (selector y uno de valores), se ejecutarán las sentencias que siguen a los valores iguales y termina la sentencia select case. En el caso de que coincidan los valores múltiples se ejecutarán las sentencias que siguen a los primeros valores iguales. Si no coincide ningún valor con el selector, se ejecutarán las sentencias_por_defecto en la cláusula case else (si hay alguna).
Ing. Felipe Peña UETS Mecatrónica
Ejemplo de la sentencia select case:
select case decimal_digit 'El valor del dígito decimal se está comprobando case 0 mask = %01111110 'Visualizar "0" case 1 mask = %00110000 'Visualizar "1" case 2 mask = %01101101 case 3 mask = %01111001 case 4 mask = %00110011 case 5 mask = %01011011 case 6 mask = %01011111 case 7 mask = %01110000 case 8 mask = %01111111 case 9 mask = %01111011 end select
Esta rutina de programa convierte los dígitos decimales en la combinación binaria apropiada en el puerto para visualizarlos en el LED.
TestBit
Prototipo sub function TestBit(dim register, rbit as word) as word
Resultado If the bit is set, returns 1, otherwise returns 0.
Descripción Retorna un valor de 0 si la entrada es 0 lógico
Retorna un valor de 1 si la entrada es 1 lógico
Ejemplo flag = TestBit(PORTE, 2) ' 1 if RE2 is set, otherwise 0
Delay_us
Prototipo sub procedure Delay_us(const time_in_us as longword)
Retorno Nothing.
Descripción Espera de tiempo en micro segundos
Ejemplo Delay_us(1000) ' One millisecond pause
Delay_ms
Prototipo sub procedure Delay_ms(const time_in_ms as longword)
Descripción Espera de tiempo en mili segundos
Ejemplo Delay_ms(1000) ' One second pause
Ing. Felipe Peña UETS Mecatrónica
Button Library
Es una rutina para conocer si se ha presionado un pulsante en la entrada (elimina el rebote del pulsante)
Prototipo sub function Button(dim byref port as byte, dim pin, time, active_state as byte) as byte
Resultado • 255 if the pin was in the active state for given period.
• 0 otherwise
Descripción Funcion para eliminar rebotes Parametros PORT: Indica la ubicacion del pulsante PIN: Indica el numero de pin conectado el pulsa nte 0..7; Time: Es el tiempo de espera en ms active_state puede ser 0 o 1 y determina si el pulsante a es activo a 0 o 1 logico
Requerimiento Button pin must be configured as input.
Ejemplo Example reads RB0, to which the button is connected; on transition from 1 to 0 (release of button), PORTD is inverted: while true if Button(PORTB, 0, 1, 1) then
oldstate = 255 end if if oldstate and Button(PORTB, 0, 1, 0) then PORTD = not(PORTD)
oldstate = 0 end if wend
Vdelay_ms
Prototipo sub procedure Vdelay_ms(dim time_in_ms as word)
Resultado Nothing.
Descripción Espera de tiempo en ms
El tiempo puede ser variable en la ejecución del programa.
Ejemplo pause = 1000
Vdelay_ms(pause) ' ~ one second pause
Ing. Felipe Peña UETS Mecatrónica
Manejo de Puertos
Lectura
A=PORTB
Escritura
PORTD=8 ‘ Decimal
PORTD=0x08 ‘Hexadecimal
PORTD=%00001000 ‘Binario
Manejo de Bit
Lectura
a=PORTB.0
Escritura
PORTb.0=1
PORTb.0=0
Activación de una entrada
If portb.0=0 then
Operación 0
End if