Anda di halaman 1dari 20

Introducción

Sistemas Embebidos
El curso está orientado básicamente a
impartir los conocimientos de los
microprocesadores y microcontroladores
VII Ciclo
para la solución de problemas de
2 Hrs de Teoría
ingeniería que involucren estos
2 Hrs de Taller - Laboratorio
dispositivos.
3 Créditos

Diagrama de Bloques de un sistema de Sistema Electrónico Computador

Control

Comunicación
y Monitoreo

Controlador Controlador de
de Presión Temperatura
Objetivos
Proyectos:
Comprender y describir las diferentes arquitecturas de los
microprocesadores.
Comprender y describir diferentes tipos de Módulo de control de Motor DC.
microcontroladores.
Programar, utilizando el lenguaje asembler, soluciones a Móvil seguidor de Línea.
problemas de ingeniería con microcontroladores.
Programar, utilizando el lenguaje C, soluciones a problemas
de ingeniería con microcontroladores.
Móvil gobernado por RF.
Diseñar sistemas con microcontroladores usando la mayoría
de sus periféricos y construir interfases de comunicación con
Módulo de adquisición de datos y
la PC.
Programar microcontroladores con arquitectura DSP y usarlos
transferencia usando la red
en las soluciones a problemas de control y de procesamiento
de señales. telefónica pública y celular.
El Microcontrolador es...?
Un circuito integrado de alta escala de integración MICROPROCESADOR

que incorpora la mayor parte de los elementos que BUS DE DIRECCIONES

configuran un controlador (unidad de proceso - BUS DE DATOS

CPU, memoria y puertas de entrada / salida en un BUS DE CONTROL

solo encapsulado). Su reducido tamaño minimiza


el número de componentes y por lo tanto el costo MEMORIA CONTROLADOR
1
CONTROLADOR
2

final del producto en desarrollo. PERIFERICOS PERIFERICOS


MICROCONTROLADOR

PERIFERICOS PERIFERICOS
Organización de los Procesadores
Digitales

Memoria ROM Memoria RAM


Programa a CPU Datos a trabajar:
ejecutarse: A = 34
Ingresa A, B por teclado B = 15
Opera C=A+B C = 49
Visualiza C por LCD.
............
............
............

Microcontrolador

Periféricos
Ensamblador C
Principales fabricantes
MOTOROLA: Fabrica microcontroladores de 8 (68HC08)
y 16 bits. Actualmente están en un proceso de ingreso
al mercado peruano.

INTEL: El 8051 es un microcontrolador de 8 bits con


memoria externa y fácil de programar.

NATIONAL: El COP800 es un microcontrolador de 8bits y


de bajo consumo.

MICROCHIP: Poseen 3 familias principales, son de


bajo consumo y de set reducido de instrucciones.
Nosotros vamos a estudiar los microcontroladores
16F877/16F877A/18F458 de Microchip y dar una visión
del 68HC08 de Motorola. Algunas características de
La selección del tipo de debe ser estudiada de
estos :
forma que se elija el más adecuado para nuestra
aplicación.
Procesador RISC de grandes prestaciones
Se debe tener en cuenta: Tiene solamente un conjunto de 35 instrucciones 877
La disponibilidad inmediata, el soporte Incorpora hasta 8 canales analógicos de entrada para
necesario (programadores, entorno de desarrollo conversión A/D de 10 bits
integrado (ensambladores o compiladores) Dispone de USART para transmisión/ recepción serial
La información necesaria que permitiese un Cuenta con 5 puertos de E/S
rápido conocimiento del funcionamiento del . Memoria de programa FLASH de 8K (877)/16K(458)
Bajo consumo de energía

Funciones Principales del


Microcontrolador
Reset
Xtal
Inicialización del sistema Entradas
análogas
Control de una pantalla LCD para la visualización de
mensajes Módem

Control de diversas variables.


Pantalla
Manejo de un teclado para el ingreso de información LCD
Memoria
Digitalización de señales analógicas EEPROM

Transmisión de señales/datos a través de un DCE hacia


un terminal remoto
Teclado
Establecimiento de un protocolo de comunicaciones Relé
Buzzer

.
Simuladores: Simula
el comportamiento Monitor
y registro
de un en Software.
Sensores

Debuggers: Corre y muestra


el programa en PC
Grabadores
Actuadores
Emuladores: Simula el Acondicionadores:
Algoritmo
Circuitos de
Potencia:
comportamiento del Amplificadores
Amplificadores de I
Sumadores
microcontrolador en Hardware. Inversores
Amplificadores de
V
Optoacopladores
Optoacopladores
Drivers en general
Construcción de un equipo electrocardiógrafo de 12
derivaciones con transmisión de las señales mediante
IDEA
línea telefónica.
Funci
Búsqueda ona
de bien?
información
Fabricació
Descripci n
ón
Modelado
Prueba y
Simulació Depuració
n n
y Prueba

Funci
Correc ona
to? bien?

PRODUCT
Síntesis,
O
modelamiento final
FINAL
Señales del cuerpo
del paciente

Telecardio 12

PC Remota con software


Telecardio12
RED
TELEFONICA
PÚBLICA
RED
TELEFONICA
PÚBLICA

Características más representativas de


Sistemas Embebidos
los microcontroladores PIC.
Arquitectura del procesador sigue el modelo Harvard
Bus de datos Bus de Instrucciones

Microcontroladores PIC MEMORIA DE DATOS MEMORIA DE

8
CPU 14
PROGRAMA

-
instrucciones.
1 CICLO 1 CICLO 1 CICLO 1 CICLO 2 CICLOS

BÚSQUEDA 1ra EJECUCIÓN 1ra

BÚSQUEDA 2da EJECUCIÓN 2da

BÚSQUEDA 3ra EJECUCIÓN 3ra

1ra INS. MOVLW F5h BÚSQUEDA 4ta (VACIO NOP)


2da INS. MOVWF PORTA
3ra INS. CALL SAL
BÚSQUEDA SAL EJECUCIÓN SAL
4ra INS. MOVLW F6h (NOP Forzado)
José Oliden Martínez 5ra INS. Instr. @Direccionada de SAL
BÚSQUEDA SAL+1
José Oliden Martínez
Características más representativas de Las tres gamas de Microcontroladores
los microcontroladores PIC. PIC
Formato de las instrucciones con la misma longitud
Todas las instrucciones de los microcontroladores de la gama baja tienen una longitud de 12 bits. Las
de la gama media tienen 14 bits. PIC17CXX
OTP/
Procesador RISC (Procesador con conjunto reducido de instrucciones) Con las tres gamas de PIC se EPROM
dispone de gran diversidad de Gama Alta
Arquitectura basada en un banco de registros modelos y encapsulados, pudiendo
Todos los objetos del sistema (puertos de E/S, temporizadores, posiciones de memoria, etc.) están seleccionar el que mejor se acople
implementados físicamente como registros a las necesidades de acuerdo con PIC16CXXX
el tipo y capacidad de las OTP/EPRO M
Diversidad de modelos de microcontroladores memorias, el número de líneas de Gama Media
E/S y las funciones auxiliares
Herramientas de soporte precisas.
PIC16C5 X
Ensamblador MPASM.
Simulador software MPSlM.
OTP/EPRO M/EEPROM
Compilador de lenguaje C, MP-C. PIC12CXX
Programador universal PICSTART PLUS OTP
Emulador universal PIC MASTER. Gama Baja
Herramienta de desarrollo para Lógica difusa FUZZY TECH-MP.
Entorno de programación integrado MPLAB
José Oliden Martínez OTP: One Time Programmable José Oliden Martínez

Principales características de la familia Tabla con las principales características


16F87X de la familia 16F87X

Tiene memorias EEPROM, FLASH internas.


Watchdog.
Operan hasta con 20 MHz de clock o 5MIPS.

Modo SLEEP.
Protección de código.
ADC de 10 bits.
Set de 35 instrucciones.
8K x 14bits de memoria FLASH de programa.
Soporta hasta 14 fuentes de interrupción
Comunicación serial.
Pila de 8 niveles

José Oliden Martínez


Líneas de entrada y salida para los
Recursos Auxiliares
controladores de periféricos
Circuito de reloj, encargado de generar los impulsos que
sincronizan el funcionamiento de todo el sistema.
Temporizadores, orientados a controlar tiempos.
Perro Guardián , destinado a provocar una
reinicialización cuando el programa queda bloqueado o
.
Conversores AD y DA, para poder recibir y enviar señales
analógicas.
Comparadores analógicos, para verificar los valores de
señales analógicas.
Sistema de protección ante fallos de alimentación.
Estado de reposo SLEEP en el que el sistema queda
y el consumo de energía se reduce al mínimo.
José Oliden Martínez José Oliden Martínez

El CPU ArquitecturaInterna :Procesador (ALU)

Los microcontroladores
La Unidad Central de Proceso es la encargada de leer la PIC tienen un ALU y un
memoria de Programa (instrucciones de control del dispositivo). registro de trabajo (W) de
8 bits. El ALU realiza
operaciones aritméticas y
lógicas entre el dato en el
Varias de estas instrucciones operan con la memoria de datos. registro de trabajo y
cualquier otro registro. En
las operaciones que
La unidad aritmética (ALU) se encarga de hacer todas las realiza el ALU con dos
operandos, siempre se
operaciones. tiene a W (registro de
trabajo) como uno de
ellos. En las operaciones
Los resultados se guardan en el registro W, o en la RAM de un solo operando se
tiene al W o a cualquier
(dirección indicada). otro registro.

Las características de los resultados de las operaciones se


encuentran en el registro STATUS.
José Oliden Martínez José Oliden Martínez
AQUI

ArquitecturaInterna :
Memoria de Programa (Instrucciones) Instrucción & Clock
Aquí se almacenan todas las instrucciones del
programa de control.
La memoria de programa siempre está direccionada
desde el Contador de Programa (PC).

La memoria de programa (o de instrucciones) tiene


una capacidad de 8k x 14 bits. Durante la fase de
búsqueda, la dirección de la instrucción la
proporciona el PC, el cual normalmente se
autoincrementa en la mayoría de las instrucciones,
excepto en las de salto. Con las instrucciones de
salto se carga la Pila con el valor inicial del PC
incrementado una unidad. Posteriormente, las
Q1 Se identifica la instrucción
instrucciones de retorno, situadas al final de las
rutinas, devuelven el valor almacenado en la Pila al
PC.
Q2 Lectura de dato
Q3 Procesa el dato (OPERA)
Q4 Guarda o Escribe el resultado
José Oliden Martínez José Oliden Martínez

Instrucciones El PC. Direccionamiento del Programa


Las instrucciones se clasifican en: El byte de MOVWF PCL
menos peso del
orientadas a registros (18). PC se
corresponde con
orientadas al bit (4). el contenido del
operaciones de literales y control (13). registro PCL
ubicado en la
posición 02h del
banco 0. Los 5
Cada instrucción es una palabra de 14 bits, bits de mas peso
del PC se
dividida en código de operación, el cual corresponden
con los 5 bits de
especifica la orden a ejecutar y uno o más menos peso del
operandos sobre los que actúa. registro PCLATH GOTO SALTO
(Program
Counter Latch
High) en la
Todas las instrucciones se demoran en posición 0Ah del
banco 0. Los bits
ejecutar un ciclo de máquina con la de mas peso del
excepción de las instrucciones de salto que PC solos se
pueden escribir
toman dos ciclos. a través del
registro
PCLATH.

José Oliden Martínez José Oliden Martínez


El PC. Direccionamiento del Programa Instrucciones Programación I
Sintaxis Descripción Microchip Operación equivalente
En las instrucciones de CALL RUTINA
salto relativo, el ADDLW k Add Literal and W W=W+k
resultado de la misma
afecta solo a los 8 bits ADDWF f,d Add W and f d = W + f (donde d puede ser W ó f)
de menos peso del PC. ANDLW k AND Literal with W W = W AND k
Los 5 bits de mas peso
se suministran desde ANDWF f,d AND W with f d = W AND f (donde d puede ser W ó f)
PCLATH<4:0>. BCF f,b Bit Clear f f(b) = 0
En las instrucciones
GOTO y CALL los 11 BSF f,b Bit Set f f(b) = 1
bits de menos peso del BTFSC f,b Bit Test f, Skip if Clear f(b) = 0 ? Si, salta la siguiente instrucción
PC se suministran desde
el código OP. Los dos BTFSS f,b Bit Test f, skip if Set f(b) = 1 ? Si, salta la siguiente instrucción
bits de mas peso del PC CALL k Subroutine Call Llama a la subrutina en la dirección k
se cargan con los bits
<4:3> del registro CLRF f Clear f f=0
PCLATH. Como la CLRW Clear W Register W=0
memoria de programa se
organiza en páginas de CLRWDT Clear Watchdog Timer Watchdog timer = 0
2k, la posición la COMF f,d Complement f d = not f (donde d puede ser W ó f)
seleccionan los 11 bits
de menos peso, DECF f,d Decrement f d = f -1 (donde d puede ser W ó f)
mientras que con los 2 DECFSZ f,d Decrement f, Skip if 0 d = f -1 (donde d puede ser W ó f) si d = 0 salta
bits de mas peso del PC
se elige la página GOTO k Go to address Salto incondicional a la dirección k
INCF f,d Increment f d = f +1 (donde d puede ser W ó f)
José Oliden Martínez INCFSZ f,d Increment f, Skip if 0 d = f +1 (donde d puede ser W ó f) si d = 0 salta

00 01 10 11

Instrucciones Programación I Memoria de Datos


IORLW k Inclusive OR Literal with W W = W OR k
IORWF f,d Inclusive OR W with f d = f OR W (donde d puede ser W ó f)
Tienen 8 bits de longitud.
MOVLW k Move literal to W W=k
Organizada en "bancos" (4) de 128
MOVF f,d Move f d = f (donde d puede ser W ó f)
bytes cada uno.
MOVWF f Move W to f f=W
NOP No Operation No operación Registros de Función
OPTION Load Option Register OPTION = W Especial FSR
RETFIE Return from Interrupt Retorna de una subrutina de interrupción
RETLW k Return Literal to W Retorna de una subrutina con W = k
RETURN Return from Subroutine Retorna de una subrutina
RLF f,d Rotale Left f through Carry d = f << 1 (donde d puede ser W ó f)
RRF f,d Rotale Right f through Carry d = f >> 1 (donde d puede ser W ó f)
SLEEP Go into Standby Mode Pone el PIC en standby Registros de Propósito
SUBLW k Subtract W from Literal W=k-W General GPR
SUBWF f,d Subtract W from f d = f - W (donde d puede ser W ó f)
SWAPF f Swap f f = Swap Intercambia los bit 0123 con 4567 de f
TRIS f Load TRIS Register TRIS de f = W
XORLW k Exclusive OR Literal with W W = W XOR k
XORWF f,d Exclusive OR W with f d = f XOR W (donde d puede ser W ó f) José Oliden Martínez
Modos de direccionamiento
Modos de direccionamiento 1o. Direccionamiento directo
1o. Direccionamiento directo
W Se utilizan los 7 bits de
movlw 0x20 ;mover 0x20 menos peso del código
PORTA 20 OP de la instrucción
movwf PORTA ;a la memoria RAM para apuntar
cualquiera de las 128
posiciones del banco
2o. Direccionamiento Indirecto INDF 0. Si el dato no está en
el banco 0, se usa un
movlw 0x20 ;inicializar puntero sistema de paginación
FSR 13H para seleccionar el
movwf FSR ;a la memoria RAM 20H
clrf INDF ;limpiar registro INDF banco empleando los
21H 1FH
incf FSR,F ;incrementar puntero bits RP1 y RP0 del
clrf INDF ;limpiar registro INDF Registro de estado
<6:5>.
RAM
José Oliden Martínez

Modos de direccionamiento
2o. Direccionamiento Indirecto. Ejm:
2o. Direccionamiento Indirecto
El operando de la Un ejemplo de direccionamiento indirecto en el cual limpiamos las direcciones
instrucción se refiere al
registro INDF, (posición 0 20h a la 2Fh de la RAM es el siguiente:
del área de datos). Se INDF
accede a la posición bcf STATUS,IRP ;Seleccionar Banco 0/1
apuntada por FSR, (posición
04h del banco 0). Los 7 bits movlw 0x20 ;inicializar puntero
LSB de FSR seleccionan la movwf FSR ;a la memoria RAM FSR 13H
20H
posición y su bit de MSB NEXT:
junto con el bit IRP del
Registro de estado <7>, clrf INDF ;limpiar registro INDF
seleccionan el banco. El incf FSR,F ;incrementar puntero
registro INDF no se halla btfss FSR,4 ;bit 4 del FSR=1?
implementado físicamente. 2FH 1FH
Cada vez que se le goto NEXT ;no, limpiar siguiente
referencia, se utiliza el CONTINUAR:
contenido del registro FSR ;si continuar programa...
para direccionar al
operando.
Cualquier instrucción
usando el registro INDF
hace referencia al registro RAM
apuntado por FSR. José Oliden Martínez
Programación I Instrucciones orientadas a los bytes Programación I Instrucciones orientadas a los bits
Banderas
Mnemónico Parámetros Descripción Ciclos
afectadas
ADDWF f,d Suma W y f 1 C,DC,Z
ANDWF f,d AND W con f 1 Z
CLRF f clear f 1 Z
CLRW f,d clear W 1 Z Banderas
Mnemónico Parámetros Descripción Ciclos
afectadas
COMF f,d Complementa f 1 Z
BCF f,b 1 None
DECF f,d Decrementa (en 1) f 1 Z
DECFSZ f,d Decrementa (en 1) f, Salta 1(2) None BSF f,b 1 None

INCF f,d Incrementa (en 1) f 1 Z


BTFSC f,b 1(2) None
INCFSZ f,d Incrementa (en 1) f , Salta 1(2) None
IORWF f,d OR W con F 1 Z
BTFSS f,b 1(2) None
MOVF f,d Mover f 1 Z
MOVWF f Mover W a f 1 None
NOP No Operación 1 None
RLF f,d Rotar a la derecha >1 1 C
RRF f,d Rotar a la izquierda >1 1 C
SUBWF f,d Sustrae W de f 1 C,DC,Z
SWAPF f,d Intercambia MSB con LSB 1 None
XORWF f,d XOR W con f 1 Z
José Oliden Martínez

Registros Especiales

Programación I Operaciones literales y de control

Banderas STATUS (03h)


Mnemónico Parámetros Descripción Ciclos
afectadas Los bits de este
ADDLW k Sumar W y k (literal) 1 C,DC,Z
registro tienen tres
ANDLW k AND W con k 1 Z
misiones distintas:
CALL k Subrutina 2
1. Se encargan de
CLRWDT - clear WDT 1 TO,PD
avisar las
GOTO k 2

IORLW k OR literal con W 1 Z


incidencias del
MOVLW k Mover literal a W 1
resultado de la
RETFIE - Retornar de la interrupción 2
ALU (C, DC y Z)
RETLW k Retornar con el literal en W 2 2. Indican el
RETURN - Retornar de la subrutina 2 estado de Reset
SLEEP - Pone al microcontrolador en Stanby 1 TO,PD (TO# y PD#)
SUBLW k Sustrae W del literal k 1 C,DC,Z 3. Seleccionan el
XORLW k XOR literal k con W 1 Z banco a acceder
en la memoria de
datos (IRP, RP0 y
RP1)
José Oliden Martínez
OPTION_REG (81h) INTCON (0Bh)
La misión principal de La mayor parte de los
este registro es controlar señalizadores y bits de
el TMR0 (temporizador) y permiso de las fuentes
el divisor de frecuencia. de interrupción en los
Además configura la PIC16X8XX están
interrupción externa INT implementados sobre
y las resistencias pull-up los bits de este registro
del puerto B. que ocupa la dirección
0Bh del banco 0 y se
encuentra duplicado
en los demás bancos.

PIR1 (0Ch)
PIE1 (8Ch) Contiene las
Contiene banderas
los bits para que indican
activar las la activación
interrupcion de alguna
es de los interrupción
periféricos periférica
Registros Especiales Programación I Editor

.ASM .INC

PORTA Compilador Asembler

Algunos de los puertos de E/S son multiplexados para algunas otras funciones.
Los registros de los puertos en el banco 1 (TRIS) son para configurar los Flujo de operaciones al
puertos. .COD .LST .ERR .HEX
programar un
microcontrolador PIC

Programador
PIC

16F877

José Oliden Martínez José Oliden Martínez

Programación I Solución Inicio

Configuración
de puertos
RB0 : entrada
PORTD: salida
Ejemplo:
Leer un bit del puerto B (RB0) y según su valor hacer:

SI NO
RB0=0?

PORTD= 10101010 PORTD= 01010101


Tarea Tarea

Hacer un programa que mueva los datos de las direcciones 20H, 21H,
Leer dos bits del puerto B (RB0 y RB1) y según su 22H, 23H a las direcciones: 120H, 121H, 122H, 123H de manera
valor hacer: indirecta.

RB1 RB0 Puerto D

Solución list p=16F877 ;Indica el modelo de PIC

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _XT_OSC & _WRT_ENABLE_ON & _LVP_OFF
EXPERIENCIA 1
;Zona de include macros
include <p16F877.inc>

; Vector Reset
org 0x00
goto
org
0x05
0x05 ;
Entrada y Salida, manejo de registros y visualización.
bcf STATUS, RP0 Vcc
bcf STATUS, RP1 ; Banco 0 Vcc
INICIO: Ingresar por medio de 10K 10K 10K
bcf STATUS,IRP ; Seleccionar Banco 0/1 interruptores (DIP) un 0
Vcc1 330
movlw 0x20 ; inicializar puntero 1 5

movwf FSR ; a la memoria RAM número por los bits LSB Interruptor 1
a1 b1

NEXT: LED 1
bcf STATUS,IRP ; Banco 0/1 para direccionamiento indirecto
del puerto A y mostrar el 2 6
330

movfw INDF ; limpiar registro INDF complemento del Interruptor 2


a2
MODULO b2

LED 2
330
bsf
movwf
STATUS,IRP
INDF
; Banco 2/3 para direccionamiento indirecto
; Almacenar W donde apunta INDF número ingresado por 3
a3 PIC b3
7

Interruptor 3
incf FSR,F ; incrementar puntero los bits MSB del puerto 4 8
330 LED 3
btfss FSR,2 ; bit 2 del FSR=1? a4 b4

goto NEXT ; no, trasladar siguiente B Interruptor 4 GND


LED 4
0

CONTINUAR:
Entrada Salida
movlw 0x01 (PA0-PA3) (PB4-PB7)
movwf 0x20

goto INICIO ; regresar a INICIO

END ; Directiva de fin de programa

José Oliden Martínez