Está en la página 1de 97

MICROPROCESADORES

MICROPROCESADORES
Introducción de la materia

Prof. M.Sc. Rubén Dario Hernández B.

2017

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

MICROPROCESADORES
ARQUITECTURA DEL MICROCONTROLADOR

Prof. M.Sc. Rubén Dário Hernández B.

2017

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

¿QUÉ ES UN MICROCONTROLADOR?

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

¿QUÉ ES UN MICROCONTROLADOR?

Es un sistema computacional completo, en el cual están incluidos una


CPU, memora de datos y de programa, un sistema de clock, puertas de
I/O; además, de otros posibles periféricos, tales como módulos de
temporización y conversores A/D entre otros.

Las partes que integran los microcontroladores son:

• Unidad central de procesamiento (CPU)


• Sistema de clock para la secuencia de las actividades de la CPU.
• Memoria para almacenamiento de instrucciones y manipulación de
datos.
• Entradas para interiorizar la CPU con el mundo externo.
• Salidas para exteriorizar las informaciones procesadas por la CPU al
mundo externo.
• Programa (Firmware) para definir un objetivo al sistema

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

¿QUÉ ES UN MICROCONTROLADOR?

Son circuitos integrados que son capaces de ejecutar ordenes que fueron
grabadas en su memoria. Su composición está dada por varios bloques
funcionales, los cuales cumplen una tarea específica, son dispositivos que
operan uno o más procesos.

El termino microcontrolador está dado por dos palabras que son “Micro”-
“Controlador” las cuales tienen por significado “pequeño (en tamaño)” y
“maniobrar o controlar (función principal)” procesos los cuales son
definidos mediante la programación.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

PLATAFORMA ARM

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

MICROS DE 8 – 16 Y 32 BITS

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

TARJETAS DE DESARROLLO

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

HERRAMIENTAS DE HARDWARE

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ARQUITECTURA DE LOS MICROCONTROLADORES

La arquitectura de un procesador consiste en el conjunto de características


que lo identifican. De forma que, describe las capacidades y posibilidades
de operación del microprocesador.

Se puede clasificar según su hardware y software como se presenta a


continuación:

Según el Hardware Según el software

• Von Neumann • CISC


• Segmentada • RISC
• Harvard • CRISC

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ARQUITECTURA VON NEUMANN

• Se conoce como tradicional porque es aplicada en computadoras y


microprocesadores
• Se basa en el esquema presentado por John Von Neumann
• La arquitectura propuesta consiste en que la CPU está conectada a una
memoria única que contiene las instrucciones del programa y los
datos.
• Generalmente el tamaño de la unidad de datos o instrucciones está
fijado por el ancho del bus de datos de memoria.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ARQUITECTURA VON NEUMANN

Sus limitaciones son:


• Longitud de instrucciones limitada por la unidad de longitud de
datos, generando que el microprocesador deba hacer varios accesos a
la memoria para buscar instrucciones complejas.
• La velocidad de operación (ancho de banda de operación) esta
limitada ya que al tener un bus único para datos e instrucciones se
sobreponen los tiempos de acceso de las dos operaciones.
• Permite el diseño de programa de código automodificable, práctica en
las computadoras antiguas debido a que solo tenían un acumulador,
pero no viable en las computadoras modernas.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ARQUITECTURA SEGMENTADA

• Maquina secuencial
• Buses de datos y direcciones compartidos
• Diseño multietapa (pipeline) que permite ejecutar más de una
operación a la vez
• Se encuentra combinada con software CISC y en pocas ocasiones con
RICS
• Es más rápida que Von Neumann

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ARQUITECTURA SEGMENTADA

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ARQUITECTURA HARVARD

• Su esquema está representado de forma en que la CPU esta conecta a


dos memorias por medio de dos buses por separado.
• Una memoria contiene únicamente las instrucciones del programa y
la otra memoria sola almacena los datos.
• Los buses son independientes y pueden ser de diferentes tamaños de
bus de datos.
• Para el set de instrucciones reducido (RICS) el set de instrucciones y
el bus de memoria se pueden diseñar de manera en que todas las
instrucciones tendrán una sola posición de memoria de programa de
longitud.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ARQUITECTURA HARVARD

• La CPU puede estar accediendo a los datos para completar la


ejecución de una instrucción y al mismo tiempo estar leyendo la
próxima instrucción dado que los buses son independientes.

Sus ventajas son:

• El tamaño de las instrucciones no está relacionado con el de los datos,


y por lo tanto puede ser optimizado para cualquier instrucción para
que ocupe una sola posición de memoria de programa logrando
mayor velocidad y menor longitud de programa.
• El tiempo de acceso a las instrucciones puede superponerse con el de
los datos, logrando una mayor velocidad de operación.

Una desventaja que posee esta arquitectura es que posee instrucciones


especiales para acceder a tablas de valores constantes que pueda ser
necesario incluir en los programas.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ARQUITECTURA RISC Y CISC

RISC (Reduced instruction Set Computer) Computadora con juego de


instrucciones reducidas, aplicada generalmente en procesadores Intel,
Freescale.
CISC (Complex Instruction Set Computer) Computadoras con un juego de
instrucciones complejo, aplicada generalmente en procesadores
michochip, atmetl, Motorola, Texas.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ARQUITECTURA RISC

• El microcontrolador reconoce y ejecuta operaciones básicas (sumar,


restas, etc.)
• Las operaciones más complejas se realizan con la combinación de
estas, por ejemplo, multiplicación se realiza con sumas sucesivas.
• El usuario solo puede ver el resultado final sin percibir todo el
procesamiento que se llevó a cabo.
• Pocas instrucciones
• Más fácil de aprender el método de programación
• Mayor tamaño de código de programa
• El objetivo de diseñar máquinas con esta arquitectura es posibilitar la
segmentación y el paralelismo en la ejecución de instrucciones y
reducir los accesos a memoria.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ARQUITECTURA RISC

Las máquinas RISC protagonizan la tendencia actual de construcción de


microprocesadores. PowerPC, DEC Alpha, MIPS, ARM, SPARC... son
ejemplos de algunos de ellos.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ARQUITECTURA RISC

Un chip RISC típicamente tendrá menos transistores dedicados a la lógica


principal. Esto permite a los diseñadores una flexibilidad considerable; así
pueden, por ejemplo:

• Incrementar el tamaño del conjunto de registros.


• Mayor velocidad en la ejecución de instrucciones.
• Implementar medidas para aumentar el paralelismo interno.
• Añadir cachés enormes.
• Añadir otras funcionalidades, como E/S y relojes para mini
controladores.
• Construir los chips en líneas de producción antiguas que de otra
manera no serían utilizables.
• No ampliar las funcionalidades, y por lo tanto ofrecer el chip para
aplicaciones de bajo consumo de energía o de tamaño limitado

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ARQUITECTURA CISC

Los microprocesadores CISC tienen un conjunto de instrucciones que se


caracteriza por ser muy amplio y permitir operaciones complejas entre
operando situados en la memoria o en los registros internos, en
contraposición a la arquitectura RISC.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ARQUITECTURA CISC

• Es el opuesto al RISC.
• Los microcontroladores con arquitectura CISC están diseñados para
reconocer más de 200 instrucciones diferentes.
• Realiza muchas tareas a alta velocidad.
• Se debe conocer las posibilidades del lenguaje de programación, lo
que hace fácil su implementación.
• Set de instrucciones es grande
• Ofrece una amplia gama de operaciones
• Facilita el trabajo de programación
• Reduce el tamaño del código de programa

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ARQUITECTURA CRISC

• Combinación de CISC con RICS


• Complex Reduced Instruction Set Computer – Conjunto de
instrucciones complejas reducidas.
• Se utiliza para realizar simulaciones dado que se mezcla las ventajas
de los dos lenguajes de programación.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

EJEMPLO DE UNA ARQUITECTURA BÁSICA

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ELEMENTOS ESENCIALES EN UN PROCESADOR

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

UNIDAD CENTRAL DE PROCESAMIENTO (CPU)

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

UNIDAD LÓGICA ARITMÉRICA (ALU)

Es utilizada para realizar operaciones lógicas y aritméticas definidas en el


conjunto de instrucciones de la CPU. La mayoría de las operaciones
aritméticas binarias son basadas en algoritmos de adición y sustracción.
La multiplicación es realizada a través de una serie de adiciones y
dislocamientos con la ALU sobre el control lógico de la CPU.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

CONTROL DE LA CPU

El circuito de control implementa la secuencia de elementos lógicos


necesarios para que la ALU pueda realizar las operaciones registradas
durante la ejecución del programa. El elemento central de la sección de
control de la CPU es la decodificación de instrucciones.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

CONTROL DE LA CPU

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

REGISTROS DE LA CPU

Los registros de la CPU son memorias especiales que no hacen parte del
mapa de la memoria, El conjunto de registros es llamado de modelo de
programación, en los cuales se encuentran registros de almacenamiento,
de acumulación, de conteo, de condición.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

SISTEMA DE CLOCK

• El clock se utiliza para sincronizar las instrucciones del programa en


una secuencia predeterminada.
• Una fuente de clock de alta frecuencia son los cristales.
• Cada ciclo de lectura o escrita en la memoria es ejecutado en un ciclo
de reloj de barramiento interno, también denominado ciclo de
barreamiento (bus cycle)

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

MEMORIA

Se puede analizar que la memoria es una lista de direcciones postales,


donde cada dirección es un valor fijo de 8 bits. Si un sistema tiene n líneas
(bits) de direcciones, puede direccionar 2n posiciones de memoria.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

TIPOS DE MEMORIA

• RAM: Memoria de acceso aleatoria, puede ser leída o escrita por la


ejecución del programa, puede ser borrada fácilmente.
• ROM: Memoria de lectura, el contenido es determinado por el
programa desarrollado.
• EPROM: el contenido de la memoria puede ser borrado y reescrito.
• EEPROM: Memoria ROM reprogramable.
• FLASH: Similar a la EPROM, solo que tiene registros de control y
estado de señales de I/O teniendo la característica de ser alterada.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

FUNCIONAMIENTO INTERNO DEL MICROCONTROLADOR

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

FUNCIONAMIENTO INTERNO DEL MICROCONTROLADOR

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

FUNCIONAMIENTO INTERNO DEL MICROCONTROLADOR

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

FUNCIONAMIENTO INTERNO DEL MICROCONTROLADOR

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

FUNCIONAMIENTO INTERNO DEL MICROCONTROLADOR

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

FUNCIONAMIENTO INTERNO DEL MICROCONTROLADOR

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

FUNCIONAMIENTO INTERNO DEL MICROCONTROLADOR

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

FUNCIONAMIENTO INTERNO DEL MICROCONTROLADOR

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

DIAGRAMA DE FLUJO

• Representa la esquematización gráfica de un algoritmo, el cual


muestra gráficamente los pasos o procesos a seguir para alcanzar la
solución de un problema.
• Su correcta construcción es sumamente importante porque, a partir
del mismo se escribe un programa en algún Lenguaje de
Programación.
• Al igual que el pseudocódigo, los diagramas de flujo son útiles para
el desarrollo y la representación de algoritmos, aunque la mayor parte
de los programadores prefieren el pseudocódigo.
• Un diagrama de flujo consta de un conjunto de símbolos con
diferentes significados susceptibles de ser conectados entre sí.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

DIAGRAMA DE FLUJO

En todo diagrama de flujo podemos encontrar los siguientes elementos:

a. Inicio de proceso.
b. Especificación de la alimentación de datos para efectuar el proceso.
c. Acciones aplicables a los datos.
d. Obtención de resultados.
e. Fin del proceso.

Para cada una de estas actividades existen símbolos específicos que


denotan los elementos o acciones que se tomarán en el proceso.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

DIAGRAMA DE FLUJO

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

EJERCICIO 1.

Desarrolle un algoritmo que permita leer dos valores distintos, determinar


cuál de los valores es el mayor.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

EJERCICIO 1.

Pseudocódigo Diagrama de Flujo


1. Inicio
2. Iniciar variables A=0, B=0
3. Solicitar la introducción de dos
valores distintos.
4. Leer los dos valores.
5. Asignarlos a las variables A y B.
6. Si A=B Entonces vuelve a 3 porque
los valores deben ser distintos.
7. Si A>B Entonces Escribir A Es el
mayor
8. De lo contrario Escribir B es el
mayor
9. Fin si
10. Fin

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

EJERCICIO 2.

Desarrolle un algoritmo que permita leer tres valores y almacenarlos en


las variables A, B, y C respectivamente. El algoritmo debe imprimir cual
es el mayor y cuál es el menor. Recuerde constatar que los tres valores
introducidos por el teclado sean valores distintos. Presente un mensaje de
alerta en caso de que se detecte la introducción de valores iguales.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

EJERCICIO 2.

1. Inicio
2. Inicializar las variables A, B y C
3. Leer los tres valores
4. Almacenar en las variables A, B y C
5. Si A>B y A>C Entonces
6. Escribir A “Es el mayor”
7. Si no
8. Si B>A y B>C Entonces
9. Escribir B “Es el mayor”
10.Sino
11. Escribir C “Es el mayor”
12. Fin_Si
13. Fin_Si
14. Fin

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

EJERCICIO 2.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

EJERCICIO 3.

Desarrolle un algoritmo que realice la sumatoria de los números enteros


comprendidos entre el 1 y el 10, es decir, 1+2+3+…+10

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

EJERCICIO 3.

1. Inicio
2. Declaración de variables: N=0, Suma =0
3. Asignación contador: N = N+1
4. Asignación acumulador: Suma = Suma+N
5. Si N = 10 Entonces
6. Escribir Suma
7. De lo contrario, repetir desde el paso 3
8. Fin_si
9. Fin

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

EJERCICIO 3.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

MICROPROCESADORES
Fundamentos de programación en C

Prof. M.Sc. Rubén Darío Hernández B.

2017

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

FUNDAMENTOS DE PROGRAMACIÓN EN C

- La programación en lenguajes de alto nivel como C o Java, está hoy


en día en muchos entornos.

- C como lenguaje de programación se caracteriza por tener una


estructura definida y una serie de expresiones propias (instrucciones),
esta sintaxis de denominan las palabras reservadas del lenguaje.

- La estructura de programación en C se puede delimitar por el uso de


Librerías, uso de funciones, uso de variables globales y locales,
operadores relacionales del tipo lógico o aritmético, expresiones de
tipo condicional y ciclos condicionales entre otros.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

FUNCIONES

- Son una agrupación de instrucciones a ejecutar las cuales pueden


entregar información o resultados a otra u otras funciones, es decir,
que pueden interactuar entre ellas, de igual forma puede solicitar
información o parámetros de operación diferentes.

- Permite segmentar las acciones que ha de realizar un programa,


generar una agrupación de instrucciones de uso recurrente sin
aumentar el consumo de espacio de memoria y fácil detección de
errores al validar por grupos de instrucciones y no todo un único
programa.

- La sintaxis de una función está dada por el siguiente esquema

void nombre de la función (void){ grupo de instrucciones;}

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

El siguiente ejemplo ilustra la forma general de interrelacionar funciones


partiendo de la función principal:

void main (void){ //definición function principal


d=5; //variable inicializada
suma(d); //llamado funcion suma enviando un parametro de operación
e=resta(); //llamado function resta recibiendo un parametro operado
} //cierre de la función principal

void suma (int d){ //función suma que recibe un parámetro de la función principal
a= 2+d;
}

int resta (void){ //función resta que devuelve un parámetro operado


a= 7-3;
return a; } // instrucción de retorno de parámetro

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

TIPOS DE DATOS

- Para el desarrollo de los programas (guardar información, ejecutar


transferencia de datos y manipulación) es necesario denominar
variables, que en el caso del microcontrolador corresponden a
registros internos de memoria de datos.

- Para los microcontroladores de 8 bits el espacio de memoria estará


dado por esta característica, dependiendo del tipo de dato se puede
describir de la siguiente forma.

Tabla 1. Tipos de datos


Tipo de
Almacenamiento Rango
dato
char 8 bits 0 a 255
int 16 bits 0 a 65535

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

- Por ejemplo, podemos definir las variables de la siguiente forma:

#include <p18f2550.h>
#USE DELAY (CLOCK = 4000000)
void main (void) {
int auxiliar, contador, A=0;
char dato=5; // se define el carácter ASCII
float division;
}

- El siguiente programa las variables dato1, dato2 y dato3 contienen


exactamente el mismo valor visto en binario.
#include <p18f2550.h>
#USE DELAY (CLOCK = 4000000)
void main (void) {
char dato1=0x41;
char dato2='A';
char dato3=65;
}

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

- Una característica de las variables es su uso a nivel de funciones, dado


que la variable puede ser local o global, la diferencia consiste en que
la variable local solo es reconocida por la función en que es definida,
en comparación que la variable global es reconocida por todas las
funciones.
#include < pic16f88.h >
#USE DELAY (CLOCK = 4000000)
int a =3;
void ejemplo (void) {
char b=5;
a=a+b;
}
void main (void){
int c=0;
c=a;
ejemplo();
c=a;
}

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

TIPO DE DATO Y ESTRUCTURA DE UNA FUNCIÓN

- Establecido el tipo de datos, es posible establecer la estructura de una


función o sub función que utiliza parámetros de entrada y salida.

#include < pic16f88.h >


#USE DELAY (CLOCK = 4000000)
int ejemplo (void) {
int a=3;
a=a+1;
return a;
}
void main (void){
int b,c=0;
b= ejemplo();
c= ejemplo();
}

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

- En el siguiente programa se presenta un ejemplo para relacionar el


caso en que la función secundaria recibe un dato de la principal:

#include <pic16f88.h>
#USE DELAY (CLOCK = 4000000)
char var1 =2;
char ejemplo (char var2) {
var1= var1+1;
return var1+ var2;
}
void main (void){
char var2=5;
char var3=0;
var2= ejemplo(var2);
var3= ejemplo(var2);
}

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

OPERADORES LÓGICO-ARITMÉTICOS

El procesamiento de los datos o información con la que ha de operar el


microcontrolador, se basa en elementos relacionales del tipo lógico y de
aritmético, teniendo:

Operador Acción Esquema Abreviatura


+ Suma datoA= datoA + datoB datoA += datoB
- Resta datoA= datoA - datoB datoA -= datoB
* Multiplicación datoA= datoA * datoB datoA *= datoB
/ Divisón datoA= datoA / datoB datoA /= datoB
% Módulo resultado= datoA % datoB ---
++ Incremento datoA= datoA++ datoA++
-- Decremento datoA = datoA-- datoA--

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

OPERADORES LÓGICO

Operador Acción Esquema Abreviatura


&& AND resultado= datoA && datoB
|| OR resultado= datoA || datoB
! Not resultado= !datoA
& And resultado= datoA & datoB
| Or resultado= datoA | datoB
^ Xor resultado= datoA ^ datoB
~ Complemento resultado= ~ datoA
<< Desplaz izq. datoA =datoA << datoB datoA <<= datoB
>> Desplaz. Der. datoA =datoA >> datoB datoA >>= datoB

Para el caso se debe tener en cuenta que las operaciones lógicas son
operaciones bit a bit, por lo que hay que realizar las conversiones de
sistema numérico a lugar. La siguiente tabla resume las operaciones
lógicas básicas para dos datos de un bit cada una.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

dato1 dato2 And Or Xor Not dato1


0 0 0 0 0 1
0 1 0 1 1 1
1 0 0 1 1 0
1 1 1 1 0 0

Las operaciones lógicas ilustradas en en el programa se basan en las


variables inicializadas datoA y datoB, cuyos valores e binario son:

operación and or xor


datoA 1111 1111 1111
datoB 0110 0110 0110
resultado a1=0110 a2=1111 a3=1001

En el caso de las operaciones de desplazamiento izquierda y derecha se


debe tener en cuenta de un nuevo valor en decimal que genera el
desplazamiento en el número binario, de forma tal que si es
desplazamiento a la derecha el bit 7 pasa al 6 hasta el bit que pasa a 0, para
el desplazamiento izquierda el bit 0 pasa al 1 hasta que l bit 6 pasa al 7.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

En este caso tenemos como ejemplo:

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Decimal


datoB 0 0 0 0 0 1 1 0 6
a4 0 0 0 0 1 1 0 0 12
a5 0 0 0 0 0 0 1 1 3

#include <pic16f88.h>
#USE DELAY (CLOCK = 4000000)
void main (void){
char a1, a2, a3, a4, a5, datoA = 15;
char datoB = 6;
char resultado
while(1){
a1 = datoA & datoB;
a2 = datoA |datoB;
a3 = datoA ^ datoB;
a4 = datoB << 1;
a5 = datoB >> 1;
resultado = ~datoA;
}

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

SENTENCIAS CONDICIONALES

Se entiende como el resultado de la comparación de una condición, que si


llegase a ser verdadera (1) o falsa (2) dará o no lugar a la ejecución de un
código. Las sentencias condicionales que son utilizadas se presentan a
seguir:

Operador Acción Esquema


> Mayor que resultado= datoA > datoB
< Menor que resultado= datoA < datoB
>= Mayor igual resultado= datoA >= datoB
<= Menor igual resultado= datoA <= datoB
== Igual a resultado= datoA == datoB
=! Diferente de resultado= datoA != datoB

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Como ejemplo se presenta un código para ordenar de mayor a menor, 3


números almacenados previamente.

Void main {
int A = 4;
int B = 8;
int C = 6;
int D = 1;
int E;
int CONT = 4;
While (CONT!=0){
If(A<B){E=A;A=B;B=E;}
If(B<C){E=B;B=C;C=E;}
if(C<D){E=C;C=D;D=E:}
cont=cont-1;
}
}

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

CONDICIONAL IF –ELSE

Establece un condicional si si-no, es decir, dada una condición resulta


verdadera se procederá a la ejecución de una o un grupo de instrucciones.

If simple If compuesto If anidado

If (condición) If (condiciónes){ If (condiciónes){


Instrucción; Instrucciónes; Instrucciónes;
Else } }
Instrucción; Else { else If (condiciónes) {
Instrucciónes; Instrucciónes;
} }
else {
Instrucciónes;
}

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Ejemplo:

#include <p18f4550.h>
Void main (void)
{
int datoA = 15;
int datoB=6 ; //declaramos e inicializamos los datos para operaciones
int resultado; // declaramos e inicializamos variable para resultados
if (datoA>=datoB) //si datoA mayor que el datoB sumara ambos datos
resultado= datoA+datoB; // suma resultado = 15+6=21
else //si datoA no es mayor que el datoB restara ambos datos
resultado= datoA-datoB; // suma resultado = 15-6=9
}

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

CONDICIONAL SWITCH

Actúa como un conmutador de opciones según un valor de referencia que


indicará la opción a escoger, por tanto, el esquema será:

Switch (variable){
Case 0: instrucción;
Case 1: instrucción;
Case 2: instrucción;
.
.
Case n: instrucción;
Default: instrucción; }

Condicional break: es una sentencia que termina o rompe el condicional


dándola por finalizada y continuando con la siguiente instrucción del
programa.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Ejemplo:

#include <p18f4550.h>
#USE DELAY (CLOCK = 4000000)
Void main (void){
Int datoA = 15; int datoB=6 ; //declaramos e inicializamos los datos para operaciones
Int resultado, a=0; // declaramos e inicializamos variable para resultados
switch (a){
Case0: resultado= datoA+datoB ; break;
Case1: resultado= datoA-datoB; break;
Case2: resultado= datoA*datoB; break;
Default resultado= datoA/datoB; }
a++;
}

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

CONDICIONAL WHILE

Esta secuencia condicional establece que mientras una condición sea


valida, ejecutará una serie de acciones o instrucciones, su esquema de
operación es:
While (condición)
Do {instrucciones;}

Ejemplo:

Int a=108; int b=12;


While (a>=b)
Do {a=a&b;}

While (1) {
Instrucciones;
}

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Ejemplo: El siguiente código realiza un programa que trabaja como un


contador para segundos y minutos.

void main {
Int CONTMIN=0;
Int CONTSEG=0;
While (CONTMIN<60){
While (CONTSEG<60){
CONTSEG++;
}
CONTMIN++;
}
}

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

CONDICIONAL FOR

Permite establecer un ciclo repetitivo de acciones dependiendo de una


variable la cual debe ser inicializada, evaluada y modificada para el
control del número de veces que deje ejecutar dichas instrucciones
For (inicializar variable; evaluar variable; modificar variable)
{
instrucciones;
}

Ejemplo:

Int i,a=1;
For(i=0;i<10;i++)
{
a=a*2;
}

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ARREGLOS

En varias ocasiones es útil tener un dato al que podamos asignar varios


valores según se requiera, una cadena da datos que obedecen a una lista
para una misma variable, los cuales se pueden acceder por su posición
dentro de esta se conoce como arreglo, posee la siguiente estructura:

Tipo de dato [] = {lista de valores separados por comas};

Ejemplo:

int dato,j;
int i[]={1,3,5,7,9,11,13,15};
For (j=0;j<9;j++){
Dato= i[j]
}

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Ejemplo: como ejemplo se tiene un código para realizar un programa que


promedie el valor de cinco datos almacenados en un arreglo.

void main {
Int PROMEDIO=0;
Int CONT=0;
int DATOS[]={1,3,7,9,11};
While (CONT<5){
PROMEDIO=DATOS[CONT]+PROMEDIO;
CONT++;
}
PROMEDIO=PROMEDIO/5;
}

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

LIBRERIAS

Es una forma de organizar programas y optimizar el uso de memoria


mediante el empleo de librerías.

Una librería se define como un grupo de instrucciones que son de uso


común o recurrente en un mismo programa o en distintos programas.

La inclusión de la misma en el programa se expresa de la siguiente


manera:
#include < pic16f88.h >

De forma general, la estructura de cualquier librería tendra la siguiente


forma:

#include <nombre_libreria.h>

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

DEFINICIONES

Para facilidad en la escritura del código y correspondencia con la


arquitectura del microcontrolador y es posible definir pines de los puertos
del mismo u otros registros internos con una palabra clave que relacione
este con la función que ha de desempeñar, bajo la estructura:

#define palabra_ clave valor_de_reemplazo

Ejemplo:

#define led PORTCbits.RC0

el cual asigna al bit cero del puerto C del microcontrolador el nombre de


led, luego cada vez que se requiera utilizar este bit bastara con llamarlo
led.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

CONFIGURACIÓN BÁSICA DEL PIC

Para un correcto funcionamiento del microcontrolador, se debe tener


configuradas una o más palabras de configuración.

Los bits de estas palabras permiten seleccionar, por ejemplo: el tipo de


oscilador con el cual funcionará el pic o si se usará uno de los pines como
reset.

En XC8 la configuración se aplica mediante un macro en el archivo “pic.h”


en el cual se escribe de la siguiente manera:
__CONFIG(bitsDeConfiguración)

Cada línea “_CONFIG” representa una palabra de configuración. Para


que funcione correctamente se deben escribir en el orden en el que
aparecen en el pic.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Ejemplo para el pic16f88

__CONFIG(MCLRE_ON & CP_OFF & CPD_OFF & LVP_OFF & BOREN_OFF &
WDTE_OFF & FOSC_INTOSCIO & PWRTE_OFF);
__CONFIG(IESO_OFF & FCMEN_OFF)

Los distintos bytes de configuración se concatenan mediante el carácter


"&". Estos van a ser propios de cada pic. Por ejemplo, en la configuración
anterior estamos indicando que el pin 4 actuará de Reset cuando no reciba
corriente (MCLRE_ON) y utilizará el oscilador interno
(FOSC_INTOSCIO).

Si en lugar de querer utilizar el oscilador interno se quisiera utilizar uno


externo de 20Mhz la configuración cambiaría a:

__CONFIG(MCLRE_ON & CP_OFF & CPD_OFF & LVP_OFF & BOREN_OFF &
WDTE_OFF & FOSC_HS & PWRTE_OFF);
__CONFIG(IESO_OFF & FCMEN_OFF);

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

DEFINICIÓN DE LOS BITS DE CONFIGURACIÓN

Bits de Protección de Código (Code Protection bits): CP1..CP0


11 = Protección de código deshabilitada
10 = Depende de cada dispositivo, ver hoja de datos
01 = Depende de cada dispositivo, ver hoja de datos
00 = Toda la memoria de programa protegida

Algunos dispositivos usan solamente un bit (CP0) para determinar la


protección de código según la siguiente descripción:
1 = Protección de código deshabilitada
0 = Protección de código habilitada

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Bit de Protección de Memoria EEPROM de Datos (Data EEPROM


Memory Code Protection bit): DP
Este bit está presente solamente cuando el dispositivo posee memoria
EEPROM de datos, adicional a su memoria ROM (flash) de programa.
1 = Protección de código deshabilitada
0 = Protección de memoria EEPROM de datos habilitada

* Bit de Habilitación de Reinicio por Apagón (Brown-out Reset Enable


bit): BOREN

1 = BOR habilitado
0 = BOR deshabilitado
Al habilitar el Reinicio por Apagón (Brown-out Reset) éste habilita
automáticamente el Temporizador de Encendido (Power-up Timer
/PWRTE), es así que se recomienda directamente habilitar este bit
(/PWRTE) siempre que se habilite el Reinicio por Apagón.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Bit de Habilitación de Temporizador de Encendido (Power-up Timer


Enable bit): /PWRTE

1 = PWRT desabilitado
0 = PWRT habilitado

Al habilitar el Reinicio por Apagón (Brown-out Reset) se recomienda


habilitar también el Temporizador de Encendido (Power-up Timer
/PWRTE)debido a que este último es requerido también para el
funcionamiento del Reinicio por Apagón.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Bit de Selección de Función del Pin /MCLR (MCLR Pin


Function Select bit): MCLRE
1 = La función del pin es /MCLR
0 = La función del pin es de E/S digital. /MCLR está internamente
conectado a VDD.

Recomendaciones:
- En microcontroladores que multiplexan (comparten) en un mismo
pin la función /MCLR con un bit de E/S u otra función, se debe
tener cuidado al deshabilitar /MCLR debido a que algunos
programadores (especialmente los llamados "clonados") encuentran
problemas en volver a programar un microcontrolador cuyo /MCLR
ha sido deshabilitado.
- Por precaución dejar en lo posible habilitado el /MCLR.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Bit de Habilitación de "Perro Guardián" (Watchdog Timer


Enable bit): WDTE
1 = WDT habilitado
0 = WDT desabilitado

El Perro Guardián (WDT) es otra característica de seguridad en los


microcontroladores cuyo objeto es prevenir que el microcontrolador se
quede indefinidamente bloqueado o "colgado" debido a fallas en la lógica
del software y en algunos casos debido a fallas de hardware causadas,
entre otras cosas, por ruido electromagnético (impulsos) en ambientes de
alto riesgo.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Bits de Selección de Oscilador (Oscillator Selection bits):


FOSC1..FOSC0
11 = Oscilador RC (malla externa resistor-capacitor)
10 = Oscilador HS (cristal/resonador de alta velocidad)
01 = Oscilador XT (cristal/resonador)
00 = Oscilador LP (cristal de baja frecuencia y baja potencia)

Selección de Oscilador con Tres Bits

111 = Oscilador EXTRC con CLKOUT (externo RC con salida de reloj)


110 = Oscilador EXTRC (externo RC)
101 = INTRC con CLKOUT (interno RC con salida de reloj)
100 = INTRC (interno RC)
011 = Reservado
010 = Oscilador HS
001 = Oscilador XT
000 = Oscilador LP

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Ejemplo de definición:

/* Bits de configuración*/
#pragma config FOSC = INTOSCIO_EC // Oscilador interno, uso de pin
RA6 activado, El USB usa Clock Externo.
#pragma config WDT = OFF //desactivamos watchdog timer
#pragma config PWRT = ON // activamos power up timer

/*declaración de funciones*/

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Prof. M.Sc. Rubén Darío Hernández B.

También podría gustarte