Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MICROPROCESADORES
Introducción de la materia
2017
MICROPROCESADORES
ARQUITECTURA DEL MICROCONTROLADOR
2017
¿QUÉ ES UN MICROCONTROLADOR?
¿QUÉ ES UN MICROCONTROLADOR?
¿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.
PLATAFORMA ARM
MICROS DE 8 – 16 Y 32 BITS
TARJETAS DE DESARROLLO
HERRAMIENTAS DE HARDWARE
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
ARQUITECTURA SEGMENTADA
ARQUITECTURA HARVARD
ARQUITECTURA HARVARD
ARQUITECTURA RISC
ARQUITECTURA RISC
ARQUITECTURA RISC
ARQUITECTURA CISC
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
ARQUITECTURA CRISC
CONTROL DE LA CPU
CONTROL DE LA CPU
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.
SISTEMA DE CLOCK
MEMORIA
TIPOS DE MEMORIA
DIAGRAMA DE FLUJO
DIAGRAMA DE FLUJO
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.
DIAGRAMA DE FLUJO
EJERCICIO 1.
EJERCICIO 1.
EJERCICIO 2.
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
EJERCICIO 2.
EJERCICIO 3.
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
EJERCICIO 3.
MICROPROCESADORES
Fundamentos de programación en C
2017
FUNDAMENTOS DE PROGRAMACIÓN EN C
FUNCIONES
void suma (int d){ //función suma que recibe un parámetro de la función principal
a= 2+d;
}
TIPOS DE DATOS
#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;
}
#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);
}
OPERADORES LÓGICO-ARITMÉTICOS
OPERADORES LÓGICO
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.
#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;
}
SENTENCIAS CONDICIONALES
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;
}
}
CONDICIONAL IF –ELSE
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
}
CONDICIONAL SWITCH
Switch (variable){
Case 0: instrucción;
Case 1: instrucción;
Case 2: instrucción;
.
.
Case n: instrucción;
Default: instrucción; }
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++;
}
CONDICIONAL WHILE
Ejemplo:
While (1) {
Instrucciones;
}
void main {
Int CONTMIN=0;
Int CONTSEG=0;
While (CONTMIN<60){
While (CONTSEG<60){
CONTSEG++;
}
CONTMIN++;
}
}
CONDICIONAL FOR
Ejemplo:
Int i,a=1;
For(i=0;i<10;i++)
{
a=a*2;
}
ARREGLOS
Ejemplo:
int dato,j;
int i[]={1,3,5,7,9,11,13,15};
For (j=0;j<9;j++){
Dato= i[j]
}
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;
}
LIBRERIAS
#include <nombre_libreria.h>
DEFINICIONES
Ejemplo:
__CONFIG(MCLRE_ON & CP_OFF & CPD_OFF & LVP_OFF & BOREN_OFF &
WDTE_OFF & FOSC_INTOSCIO & PWRTE_OFF);
__CONFIG(IESO_OFF & FCMEN_OFF)
__CONFIG(MCLRE_ON & CP_OFF & CPD_OFF & LVP_OFF & BOREN_OFF &
WDTE_OFF & FOSC_HS & PWRTE_OFF);
__CONFIG(IESO_OFF & FCMEN_OFF);
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.
1 = PWRT desabilitado
0 = PWRT habilitado
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.
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*/