8
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*10 38 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.

Lenguaje de Programacion 1

Embed Size (px)

Citation preview

Page 1: Lenguaje de Programacion 1

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.

Page 2: Lenguaje de Programacion 1

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:

Page 3: Lenguaje de Programacion 1

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

Page 4: Lenguaje de Programacion 1

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.

Page 5: Lenguaje de Programacion 1

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).

Page 6: Lenguaje de Programacion 1

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

Page 7: Lenguaje de Programacion 1

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

Page 8: Lenguaje de Programacion 1

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