MICROPROCESADORES II LENGUAJE C EN LOS MICROCONTROLADORES PIC

Documentos relacionados
Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Lección 2 Introducción al lenguaje C

Elementos de un programa en C

LENGUAJE C PARA MICROCONTROLADORES

Principios de Computadoras II

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

GESTION DE UN LCD USANDO CCS COMPILER (PICC)

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Programación Estructurada

Dependiendo del dispositivo usado, se tienen hasta 5 puertos de entrada/salida disponibles: PORTA PORTB PORTC PORTD PORTE

Tema 2. El lenguaje JAVA

Curso de Programación Avanzada en C

Lenguaje C Elementos de un Programa. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

Fundamentos de JAVA. Angel Kuri Enero, /2/2006

1 ELEMENTOS BASICOS DEL LENGUAJE

Programación En Lenguaje C

Estructuras de Datos Declaraciones Tipos de Datos

Elementos léxicos del lenguaje de programación C

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Lenguajes de programación

Tema 2. El lenguaje de programación Java (Parte 1)

LENGUAJE. Tema 2 Elementos de un programa

Programación estructurada (Introducción a lenguaje C)

Datos y tipos de datos

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Datos y tipos de datos

CONCEPTOS BASICOS DEL LENGUAJE JAVA

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

INICIACIÓN A LA PROGRAMACIÓN EN C

PHP: Lenguaje de programación

Unidad II Fundamentos de C++ M.C. Juan Carlos Olivares Rojas

1 Estructura básica de un programa C++

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

TIPOS DE DATOS BASICOS EN LENGUAJE C

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

OPERADORES Y EXPRESIONES

Usando los Codificadores Cuadráticos

Expresiones y sentencias

Tema 3 Elementos básicos de programación

Introducción a la Programación 11 O. Humberto Cervantes Maceda

PROGRAMACIÓN EN C. PRÁCTICA 2: Operaciones con bits. Práctica 2: Índice. 2.1 Introducción 2.2 Representación de información binaria en C

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

Elementos léxicos del lenguaje de programación Java

2^10 2^9 2^8 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0 SUMA

12 símbolos (13 si se incluye el espacio en blanco)

Operadores y Expresiones

Lenguaje C. Tipos de Datos Simples y Estructuras de Control

Fundamentos de programación

Sintaxis básica, variables y 7pos

El lenguaje C. 1. Identificadores, constantes y variables

Tema 4. Operadores y Expresiones

Fundamentos del Lenguaje de Programación Java

Se guardan en archivos con extencion c y los cabezales con extension h

Java para programadores

Tema 5 Sentencias de control de flujo. Fundamentos de Informática

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

4. Operadores Operador asignación

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Preliminares. Tipos de variables y Expresiones

TEMA 4. ELEMENTOS BÁSICOS DE PROGRAMACIÓN

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

Operadores. Javier Fernández Rivera -

Tema 13: Apuntadores en C

Fundamentos de Programación 2017-I

Los caracteres de Java pueden agruparse en letras, dígitos, espacios en blanco, caracteres especiales, signos de puntuación y secuencias de escape.

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java.

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C

Definición de Memoria

Guía práctica de estudio 05: Diagramas de flujo

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

Práctica de constantes, expresiones y operadores. Programación en C 1

Estatutos de Control C# Estatutos de Decisión (Selección)

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Programación básica C++

Registros SFR vistos hasta ahora: Microcontroladores PIC

TEMA 2. Agenda. Fundamentos de JAVA

Para dudas, comentarios escribe a: C BASICO

Clases en Java. Declaración de clases en Java 02/09/16. Ing. Roberto Martínez Román - public class Alumno { private int matricula;

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

PRÁCTICA MANEJO INTERNO DE DATOS

Constantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes:

INTRODUCCIÓN AL LENGUAJE C

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

Operadores de comparación

02 - Conceptos fundamentales sobre el tratamiento de datos

funciones printf scanf

Programa Java. El lenguaje de programación Java. Comentarios. Programa Java. Palabras reservadas. Identificadores

TIPOS DE DATOS BASICOS EN LENGUAJE C

Ubicación e historia

Transcripción:

MICROPROCESADORES II LENGUAJE C EN LOS MICROCONTROLADORES PIC

Tipos de datos en CCS TIPO TAMAÑO RANGO DESCRIPCION int1 short 1 bit 0 a 1 Binario int int8 8 bits 0 a 255 Entero int16 long 16 bits 0 a 65535 Entero de 16 bits int32 32 bits 0 a 4294967295 Entero de 32 bits float 32 bits +/-1,175*10e-38 a +/-3,402*10e38 Coma flotante o real char 8 bits 0 a 255 Carácter void sin valor signed int8 8 bits -128 a 127 Entero con signo singed int16 16 bits -32768 a 32767 Entero Largo con signo signed int32 32 bits -2e31 a 2e31-1 Entero 32 bits con signo 1

Tipos de datos en CCS Las constantes se pueden especificar en decimal, octal, hexadecimal o binario Ejemplo Tipo 123 Decimal 0123 Octal 0x123 Hexadecimal 0b010010 Binario x' carácter '\010 ' carácter octal '\xa5' carácter hexadecimal También se definen caracteres especiales, algunos como: \n cambio de linea \r retorno de carro \t tabulacion \b backspace 2

Variables Las variables pueden ser GLOBALES o LOCALES. Son globales cuando se pueden usar en cualquier parte del programa, mientras que las locales solo se usan dentro de la función en la cual están declaradas. Las variables globales se declaran antes de cualquier función y se inician en 0 al inicio del main(). #include <18f2550.h> #USE delay (clock = 4000000) int16 counter; void FUNCION (void) { char K, kant = 0 ; } void main( ) { int8 temp; } // variable global //variable local //variables locales 3

Operadores OPERADORES ARITMETICOS Operador Significado + Suma - Resta * Multiplicación / División % Residuo -- Decremento ++ Incremento sizeof Tamaño OPERADORES DE ASIGNACIÓN Operador Ejemplo Descripción += a += b suma a con b y almacena el resultado en a -= a -= b resta b de a y almacena el resultado en a *= a *= b multiplica a con b y almacena el resultado en a /= a /= b divide a entre b y almacena el resultado en a %= a %= b divide a entre b y el residuo se almacena en a <<= a <<= b >>= a >>= b &= a &= b = a = b ^= a ^= b desplaza a a la izquierda la cantidad de bit indicada en b desplaza a a la derecha la cantidad de bit indicada en b Hace una AND bit a bit entre a y b almacenando el resultado en a Hace una OR bit a bit entre a y b almacenando el resultado en a Hace una XOR bit a bit entre a y b almacenando el resultado en a 4

Operadores condicionales Un operador condicional se usa para comparar 2 o más valores y obtener como resultado un valor lógico (verdadero o falso). OPERADORES RELACIONALES Operador Significado < Suma > Resta >= Multiplicación <= División == Residuo!= Decremento?= Incremento OPERADORES LÓGICOS Operador Significado! NOT && AND OR if ( (valor > 10) && (valor <= 50) ) valor += 30; //Si en valor hay un número mayor a 10 y menor o //igual a 50, se incrementa la variable valor en 30. 5

Funciones Una función es un conjunto de instrucciones que se realiza cuando se requiere un proceso específico dentro de la secuencia normal del programa en C. La funciones deben llevar un nombre, un valor de retorno (entero, booleano, real, o en caso de no retornar usar void), y una lista de parámetros (valores de entrada para realizar cálculos con ellos). Una función se declara antes de usarse y generalmente la lista de funciones se indica antes del main. Estructura de la función: Tipo_Dato Nombre_Funcion(tipo param1, param2, ) { instrucciones; } Para devolver un valor se usa return Ejemplo: float trunca (float a) { float b; b = floor(a); a = a b; a = a * 100; a = floor(a); a = a * 0.01; a = b + a; return (a); } 6

Funciones Se debe recordar que una función retorna el mismo tipo de dato que se ha declarado en el nombre de la función. En el caso de no devolver nada se finaliza con return. También se puede finalizar la función sin return, usando solo la llave de cierre }. Ejercicios: 1. Escriba una función en C que reciba un valor entero cualquiera y retorne un 0 si el número es par y un -1 si el número es impar. 2. Escriba una función en C que tome dos valores enteros de entrada a y b y los ordene de menor a mayor. Utilice la función printf () (Ver archivo ccs_c_manual.pdf) para mostrarlos ordenados. La función no tiene valores de retorno. 3. Escriba una función en C que cuando sea llamada muestre con printf() el mensaje bienvenido y luego genere un tiempo de espera de 500 milisegundos (usar la función delay_ms). 7

Declaraciones de Control CCS es un lenguaje para microcontroladores que se basa en el Lenguaje C tradicional, por lo tanto son válidas las siguientes estructuras que permiten controlar el flujo del programa: If-Else While Do-While For Switch-Case Return Break, Continue y Goto Igualmente en CCS se pueden realizar los comentarios que sean necesarios para aclarar algunas partes del programa. Para comentario de línea se usa doble slash //, lo que se escriba en ese renglón será considerado comentario a partir de estos caracteres. Y para comentario de bloque se inicia el comentario con slash asterisco /* y se escriben los comentarios en distintos renglones si se quiere hasta encontrar el final de comentario de bloque con asterisco slash */. 8

Directivas de preprocesado Estas son las instrucciones que van al inicio de todo programa y comienzan con el simbolo #. EJ: #DEVICE chip, para definir el PIC que se va a compilar. #DEVICE PIC16F84 #FUSES options, para definir la palabra de configuración al programar el PIC #FUSES XT, NOWDT, PUT, NOPROTECT El significado de las opciones puede verse por el menu View Valid Fuses. #INCLUDE filename, permite incluir un fichero en el programa #INCLUDE <16F84.h> #USE DELAY (CLOCK = SPEED), sirve para definir la frecuencia del oscilador del PIC y también ayuda al compilador para los cálculos de tiempo en funciones de retardo temporal. #USE DELAY (CLOCK = 4000000) 9

Gestión de los Puertos De acuerdo a la familia del PIC se tienen microcontroladores de 2 a 5 Puertos nombrados alfabéticamente de la A a la E. Cada puerto puede tener hasta 8 terminales como máximo. Entrada/salida PORTA PORTB PORTC PORTD PORTE Configuración TRISA TRISB TRISC TRISD TRISE SALIDA DE DATOS : 0 ENTRADA DE DATOS: 1 La asignación es individual correspondiente a cada terminal del puerto. 10

Gestión de los Puertos En lenguaje C se pueden gestionar los puertos de 2 formas: 1. Declarando los registros TRISX y PORTX definiendo su posición en la memoria RAM. La directiva usada para definir la posición es #BYTE Ej: #BYTE TRISA = 0x85 #BYTE PORTA = 0x05 Una vez definidas se pueden usar para configurar puertos y escribir o leer el estado de estos. Ej: TRISA = 0xF0; //Puerto A: 4 MSB salida y 4 LSB entrada. PORTA=0x0A; //Escribe dato 00001010 en el puerto A. valor = PORTA; //Lee el puerto A y almacena en la variable valor Se pueden usar expresiones condicionales Ej: if(portd & 0x0F) PORTD = 0x0A; /* Con esto se comprueban los 4 terminales de menor peso del puerto D y si son 1111 saca por los 4 terminales de mayor peso el dato 1010. */ Hay funciones que permiten trabajar bit a bit con los registros o variables definidas previamente. Algunas son: bit_clear(var, bit), bit_set(var, bit), bit_test(var, bit) y swap(var). 11

Gestión de los Puertos 2. Usando las directivas específicas del compilador (#USE FAST_IO, #USE FIXED_IO, #USE STANDARD_IO). En estos casos es posible usar funciones más completas que permiten manipular el puerto completo o un bit de estos. Algunas funciones que se usan para manipulación de puertos son: output_x(), input_x(), set_tris_x(valor), port_b_pullups(valor), get_trisx(). Algunas para manipulación de bits son: output_low(pin*), output_high(pin*), output_bit(pin*, valor), output_toggle(pin*), output_float(pin*), input_state(pin*), input(pin*). NOTA: pin* tiene la forma PIN_Xn donde X es el puerto y n es el número del pin de ese puerto, así entonces, PIN_B3 se refiere al pin 3 del puertob. Al usar la directiva FAST_IO es necesario asegurarse que los registros TRIS estén correctamente definidos. Revisar los ejemplos pic_ccs001 a pic_ccs003 y el archivo Ejemplo 1 realizado en Proteus!! 12

Multiplexación de display 7 Segmentos Es posible controlar el encendido de más de un display de 7 segmentos con una cantidad reducida de pines si se utiliza la técnica de multiplexación temporal. Para lograr esta característica es necesario aprovechar el terminal común de estos displays para que solamente un display se encuentre encendido en un instante de tiempo determinado y así al hacer activaciones secuenciales muy rápidas de cada display, el efecto de apagado y encendido no puede ser notado por el ojo humano y dar la impresión que TODOS están encendidos a la vez cuando en realidad no es así. Para este fin es posible utilizar pines de un puerto que controlen la salida hacia cada segmento de todos los displays y otro puerto que controle las señales comunes (ánodo ó cátodo según el display). Un retardo de 50 milisegundos es suficiente para evitar parpadeos en la visualización (puede variar alrededor de este valor en la práctica). Revisar el ejemplo pic_ccs004 y el archivo ejemplo 2 en Proteus! 13