You are on page 1of 92

Tema 1: “Microcontroladores”

Sistemas en Tiempo Real


Curso 2006 -2007
Segundo cuatrimestre 2007
Introducción

Los microcontroladores están adquiriendo mayor presencia


en nuestra vida cotidiana sin que aparentemente notemos su
presencia. Están presentes en nuestro trabajo, en nuestra casa y
en nuestra vida, en general. Se pueden encontrar controlando el
funcionamiento de los ratones y teclados de los computadores, en
los teléfonos, en los hornos microondas, los televisores, los
teléfonos móviles, las consolas de videojuegos...
Controlador y Microcontrolador (I)

Recibe el nombre de controlador el dispositivo que se


emplea para el gobierno de uno o varios procesos.

Ejemplo el termostato de un sistema de calefacción.


Controlador y Microcontrolador (II)

‰• En un principio, los controladores electrónicos se


construían con circuitos integrados digitales ( puertas
lógicas).
‰• Posteriormente se construyeron con microprocesadores,
que eran auxiliados por memorias, unidades de E/S y todo
ello en un circuito impreso.
‰• Actualmente todos los elementos de un controlador se
han incluido en un único chip que recibe el nombre
microcontrolador.
Controlador y Microcontrolador (III)

• Microcontrolador: un chip o circuito integrado de alta escala de


integración que incorpora la mayor parte de los elementos que
configuran un controlador, cuya característica principal es su alto
nivel de especialización e integración.
Diferencias entre µP y µC (I)

Un microprocesador es un sistema abierto o genérico, porque su


configuración es variable de acuerdo con la aplicación a la que se
destine.
Diferencias entre µP y µC (II)
El microcontrolador es un sistema cerrado o específico. Todas las
partes del computador están contenidas en su interior y sólo salen al
exterior las líneas que gobiernan los periféricos.
Microcontrolador
9Sistema cerrado (un solo chip que integra:)
™La CPU
™La Memoria de datos (RAM EEPROM)
™La Memoria de programa (ROM, EPROM,
FLASH)
™Unidades de entrada/salida.
™Timmers y contadores. Opcionalmente también
pueden integrar:
ƒControladores de interrupciones.
ƒClock interno.
ƒComparadores
ƒPWM
ƒConvertidores A/D y D/A.
™Generador de impulsos de reloj que sincronizan
el funcionamiento de todo el sistema.
Ventajas del uso de los Microcontroladores

9 Aumento de prestaciones: un mayor control sobre un determinado


elemento representa una mejora considerable en el mismo.

9 Aumento de la fiabilidad.
• Menor riesgo de averías
• Menos ajustes
9 Disminución del tamaño del producto.
• Menor volumen
• Mano de obra
• Stocks
9 Disminución del coste del producto.
Aplicaciones de los Microcontroladores

• Aparatos electrodomésticos: microondas, frigoríficos, hornos,


TV, reproductores y grabadores de CD y DVD, equipos de sonido,
teléfonos,...
• Equipos informáticos: impresoras, módems, unidades de disco,
ratones, teclados,..
• Automóviles: mando de sistemas del automóvil (ABS, inyección,
encendido, climatizador..)
• Domótica: sistemas antirrobo, climatizadores,..
• Instrumentación: equipos de medida
• Robótica
Microcontroladores en el hogar

• Cocina •General
o Lavadora....................... 1 o Calefacción........... 1
o Horno.......................... 1 o Aire acondicionado.... 1
o Frigorífico.................... 1 o Video portero......... 2
o Lavavajillas................... 1 •Automóvil
• Salón o Frenos ABS............ 1
o TV............................. 2 o Climatización......... 1
o Mando a distancia.............. 1 o Alarma antirrobo...... 1
o Video.......................... 1 o Airbag................ 1
o DVD............................ 2 o Equipo música......... 1
o Receptor TDT................... 1 o Ordenador de viaje.... 1
o Teléfono fijo.................. 1 o Control motor......... 1
o Teléfono móvil................. 2 o Sistema seguridad..... 1
• Garaje •PC y periféricos.............. 6
o Puerta automática.............. 1
o Alarma robo/incendio/gas....... 3
• Ascensor............................ 2
TOTAL: . . . . . . . . . . 38
El Mercado de los Microcontroladores
• se venden cientos de microcontroladores por cada microprocesador
• existe una gran diversidad de microcontroladores: clasificación según tamaño de
la palabra, en microcontroladores de 4, 8, 16 ó 32 bits
• la totalidad de los microcontroladores actuales se fabrican con tecnología
CMOS.
¿Qué microcontrolador emplear?
Factores a considerar según la aplicación:

‰Elección de la familia (fabricante).


9 Experiencia previa.
9 Documentación.
9 Herramientas de desarrollo y precio.
9 Disponibilidad.

‰Elección de modelo concreto de µC


9 Precio del microcontrolador.
9 E/S y recursos internos.
9 Consumo y velocidad
9 Memoria
9 Ancho de palabra
9 Diseño de la placa
Características (arquitectura) I

Todos los microcontroladores disponen de bloques básicos:


- Procesador (CPU),
- Memoria de datos y de instrucciones,
- Líneas de E/S,
- Oscilador de reloj
- Módulos controladores de periféricos (recursos especiales).

Sin embargo, cada fabricante intenta enfatizar los recursos más


idóneos para las aplicaciones a las que se destinan preferentemente.
En la actualidad la mayoría de uC incorporan CPU’s cuya
arquitectura es de tipo:
• Von Neumann
• Harvard
Características (arquitectura) II

El modelo básico de arquitectura empleada por los computadores


digitales fue establecida en 1945 por Von Neumann.
Este tipo de arquitectura consta de los siguientes bloques:
• Memoria principal
• Unidad aritmético-lógica
• Unidad de control
• Unidad de entrada/salida
Características (arquitectura) III
Arquitectura: Von Neumann
Características Arquitectura: Von Neumann

• Memoria principal: se emplea para almacenar datos o instrucciones. Se compone de


una serie de celdas a cada una de las cuales se accede a través de una dirección. Cada celda
está compuesta de un número de bits que nos da el ancho de palabra de la memoria.

• Unidad aritmético-lógica: permite realizar las operaciones elementales (AND, OR,


NAND, NOR, suma, resta, etc.). Estas operaciones las realiza con datos procedentes
normalmente de la memoria y los resultados parciales los almacena o no temporalmente en
algunos registros que suele tener la propia unidad aritmética. Las operaciones básicas que
puede realizar un computador se dividen en operaciones lógicas y operaciones aritméticas.
Ambos tipos de operaciones se realizan dentro de esta unidad.

• Unidad de control: se encarga de generar las señales necesarias para que todo el
computador ejecute las instrucciones leídas de la unidad de memoria. La unidad de control
es la encargada de leer de forma consecutiva las instrucciones (que se encuentran
almacenadas en la unidad de memoria), y generar las señales eléctricas necesarias para
proceder a la ejecución de cada una de estas instrucciones. Es la unidad que gobierna y
gestiona el comportamiento de un computador.
• La agrupación de algunos bloques funcionales del computador
como son la unidad de control, la unidad aritmético-lógica y los
registros recibe el nombre de unidad central de proceso (CPU).
Características Arquitectura: Von Neumann
• Unidad de entrada/salida: realiza la transferencia de información
con el exterior, con las unidades que se conocen con el nombre de
periféricos.
• Buses: caminos que unen los distintos bloques del computador y a
través de los cuales circulan los datos y las instrucciones.
Dependiendo del tipo de información que se trate podemos hablar de
diferentes caminos:
• Bus de datos: circulan los datos de las operaciones que se
van a efectuar.
• Bus de direcciones: circulan las direcciones de memoria
donde se encuentra almacenado algún tipo de información a la
que se desea acceder.
• Bus de control : circulan las señales de control generadas por
la unidad de control para la ejecución de las instrucciones.
Arquitectura HARVARD

En la arquitectura Harvard, existen dos tipos de memorias, y


por lo tanto dos buses, que suelen ser de anchura diferente, es
posible acceder a ambas memorias al mismo tiempo, con lo cual
la velocidad del sistema aumenta.
Procesador segmentado (pipeline)

Ejemplo: Búsqueda 1 Ejecuta 1

1. MOVLW 55h Búsqueda 2 Ejecuta2

2 .MOVWF PORTB Búsqueda 3 Ejecuta 3

3. CALL SUB_1 Búsqueda 4 Salir

4. BSF PORTA,BIT3 Búsqueda SUB_1 Ejecuta SUB_1


Arquitecturas: Von Neumann vs. Harvard
La arquitectura de von Neumann se caracteriza por disponer de
una sola memoria principal donde se almacenan datos e instruc-
ciones de forma indistinta. A dicha memoria se accede a través de un
sistema de buses único (direcciones, datos y control).

La arquitectura Harvard dispone de dos memorias independien-


tes, una que contiene sólo instrucciones y otra, sólo datos. Ambas
disponen de sus respectivos sistemas de buses de acceso y es posible
realizar operaciones de acceso (lectura o escritura) simultáneamente
en ambas memorias.
Microcontroladores (CPU)
– CISC: Complex Instruction Set Computer
• Muchas instrucciones diferentes. Potentes y especializadas.
• Facilita la programación.
• Código muy compacto
• P.e.: Motorola
– RISC: Reduced Instruction Set Computer
• Pocas instrucciones muy sencillas.
• La sencillez de las instrucciones permite liberar área de silicio para
implementar características que mejoren las prestaciones.
• Chips más baratos, de menor consumo, de menos pines.
• P.e.: PIC
- SISC: Specific Instruction Set Computer
- Set de instrucciones reducido y específico adaptado a las
necesidades de la aplicación prevista.
La memoria en los microcontroladores

En los microcontroladores, existen dos tipos de memoria:


♣ Memoria de programa.
♣ Memoria de datos.

•Ambos tipos de memoria están integradas dentro del propio


chip.
•La memoria de programa, ha de ser no volátil, y su contenido
no sufre modificaciones durante la ejecución del mismo, es
del tipo ROM.
•La memoria de datos evoluciona según se ejecuta el
programa, ha de ser de tipo lectura–escritura es decir tipo
RAM.
Tipos de memoria no volátil en los microcontroladores (I)

• Los diferentes tipos de memoria no volátil que nos podemos


encontrar en un microcontrolador son:

• ROM CON MÁSCARA.


• OTP.
• EPROM.
• EEPROM.
• FLASH.
Tipos de memoria no volátil en los microcontroladores (II)

ROM CON MÁSCARA: Es una memoria no volátil de solo lectura, cuyo


contenido se graba durante la fabricación del chip. Es muy cara, por lo cual solo es
interesante cuando el numero de chips a fabricar es muy elevado. Este tipo de
memoria no se puede volver a programar.

OTP: (One Time Programable), o ROM programable una vez. El Microcontrolador


posee una memoria ROM que el usuario puede programar una única vez. Una vez
realizada esta función, no se puede modificar el programa.

EPROM: (Erasable Programmable Read Only Memory y), memoria no volátil,


que se puede grabar y borrar muchas veces. Se borra mediante luz ultravioleta y a
través de una ventana de cristal que posee el chip.

EEPROM: (Electrical Erasable Programmable Read Only Memory) Tanto la


grabación como el borrado se realiza mediante impulsos eléctricos. Estas
operaciones se pueden efectuar muchas veces.

FLASH: Es una memoria no volátil de bajo consumo, que se puede leer y escribir
en el propio circuito. Es mas veloz y de mayor densidad que la EEPROM .
Puertos de entrada y salida

¾Soportan la comunicación entre el chip y el mundo exterior


(actuadores y sensores).

¾Pueden ser digitales o analógicas.

¾Una misma patilla del chip, puede ser entrada o salida, tanto
analógica como digital.

¾Las patillas se suelen agrupar en puertos de 8 o 16 bits.

¾Protegidas contra sobreintensidades y sobretensiones.


Reloj principal

9 Genera las señales que determinan la velocidad de trabajo


del uC.

9 Suele estar integrado en el propio chip, solo necesita unos


pocos componentes externos.
ƒ Cristales de cuarzo.
ƒ Resonadores cerámicos.
ƒ Circuitos R/C.
ƒ Oscilador externo.

9 Existen uC, que incluso integran toda la circuiteria


necesaria para generar la señal de reloj.
Recursos especiales

• Temporizadores o timers.
• Perro guardián o “watchdog”.
• Protección ante fallos de alimentación o “brownout”.
• Estado de bajo consumo o “sleep”.
• Convertidor A/D.
• Convertidor D/A.
• Control se anchura de pulsos PWM.
• Puertos de comunicación.
– UART
– USART
– USB
– I2C
– CAN
– TCP/IP
Ciclo de vida del proyecto

Análisis y Implemen- Depuración

Diseño tación y prueba

Idea o proyecto Edición


Requerimientos Compilación Simulación lógica
Papel y lápiz Ensamblado
Placa prototipo
Herramientas gráficas Corrección sintáctica
Herramientas de desarrollo
Las herramientas de desarrollo están formadas por un conjunto de programas e
interfaces que permiten realizar los proyectos de la forma más eficiente posible.

Ensamblador.
Compilador.
Simulador.
Placas de prototipo + ICD.
Emuladores en circuito + ICD.
Programador.
Lenguajes de programación

• Ensamblador
– Permiten el uso eficiente de los recursos
– Programación costosa y casi imposible la modificación
• El código debe ser documentado, empleo de símbolos
• Programación estructurada
• Lenguajes de alto nivel
– Desarrollo más rápido, mantenimiento menos costoso
↓ Eficiencia
↑ Ocupación en memoria
– Ada --> Grandes sistemas
– C, PASCAL, PYTON, BASIC
• Permiten el acceso a los recursos hardware (ansi C + registros +
asm)
Proceso de implementación
Entorno IDE
Editar código fuente (editor de textos)

*.c

MIKROC
Compilar código fuente (Mikroe compiler)

*.asm

MPASM, MIKROC
Ensamblar código objeto

*.dbg, .cof

*.hex

Fichero ejecutable
WINPIC800
+ TE-20
Implementación y prueba
SIMULACIÓN/CORRECCIÓN

PROGRAMACIÓN
Foto placa
Placas de simulación (programadores)
Microcontroladores (Familias I)

• 8051 (Intel)
– Arquitectura Harvard (direccionamiento separado para datos e
instrucciones)
– Bus de 8 bits de datos
– Puede direccionar 64K de programa (los 4K ó 8K bajos pueden residir
en chip) y 64K de memoria de datos externa. 128 bytes de RAM
interna + registros especiales. E/S direccionadas en espacio propio.
• Bus de direcciones de 16 bits
– Gran potencia en instrucciones de bit
– Timers y puertos serie (no A/D ni PWM)
– 8048 serie baja
– 80c196 de 16 bits
– 80186: microcontrolador con un 8086 como núcleo (PC XT)
Microcontroladores (Familias II)

• 68HC11 (Motorola)
– Arquitectura Von Neuman (datos, programa, E/S, timers
comparten el mismo espacio de memoria)
– Bus de 8 bits de datos, 16 bits de direcciones
– Pueden tener: EEPROM/OTPROM, RAM, E/S digitales, timers,
A/D, PWM, acumuladores de pulsos, comunicación serie
síncrona y asíncrona
– Serie baja 68HC05
– 683xx: microcontrolador con un 68xxx como núcleo
¿ Porqué PIC?
No porque esta familia sea mejor que otras, sino porque presentan diversas
características que los hacen especialmente interesantes:

- Facilidad de uso.
- Gran cantidad de información disponible en libros, revistas
e Internet.
- Herramientas de desarrollo muy asequibles.
- Bajo precio y fácil disponibilidad.

En muchos casos la elección de una versión adecuada de PIC es la mejor


solución para resolver un problema. Otras familias de microcontroladores
son más eficaces en aplicaciones concretas, especialmente si predomina
una característica especial.
Gamas de PIC’s
Gama alta
mejorada

s
bit
16 PIC24 , (DsPIC)
75, (84) instrucciones,
hasta 16,(40)MIPS

PIC18 Gama alta


32 niveles de pila17 vectores de interrupción, 75
instruciones de 16 bits, 10 MIPS
its

PIC16*
Gama media
8b

8 niveles de pila, 4 vectores de interrrupción


35 instrucciones de 14 bits, 1 timer 8 bit y 2 de 16bit, hasta 5MIPS

PIC 10 , PIC 12* Gama básica


2 niveles de pila y 33 instrucciones de 12 bits, 1 timer de 8bits
Microcontroladores (Familias III)
• PIC (MicroChip)
– Arquitectura Harvard (direccionamiento separado para datos
e instrucciones)
• solapamiento de instrucciones [PIPELINE -> SEGMENTACIÓN]
(ejecución actual y búsqueda de la siguiente.)
• Estructura ortogonal.
– Primer microcontrolador RISC
– 16Fxx línea más popular del fabricante
• 35 instrucciones
• 8 bits de datos
• 14 bits de instrucción (hasta 8K instrucciones)
• Pueden tener: EEPROM/OTPROM, RAM, E/S digitales, timers,
A/D, PWM, acumuladores de pulsos, comunicación serie síncrona
y asíncrona
Comparativa
Modelo 12C508 16F84A 16F88 16F877 18F6722
Mem. Bytes 768 1792 7168 14336 128K
Prog. Palabras 512x12 1024x14 4096x14 8192x14 64Kx16
Mem. Bytes EEP 0 64 256 256 1024
Datos Bytes RAM 25 68 368 368 3936
Conversión A/D No No 7(10bits) 8(10bits) 12(10bits)
Líneas de E/S 6 13 16 33 54
Comparador Analog No No 2 2 2
Temporizadores 1-8bits+ 1- 8bits 1-16bits+2 1-16bits+2 3-16bits+2
WTD +WDT 8bits+WDT 8bits+WDT 8bits+WDT

Nº de pin’s 8 18 18 40 64
PWM No No Si(10bits) Si Si
Frec. Max. 4 Mhz. 20Mhz. 20Mhz. 20Mhz. 40Mhz
Precio 2,04€ 5,17€ 3,81€ 10,85€ 23,75€
Modo de conexionado del oscilador:

Oscilador XT Oscilador RC
C1=C2=22pF ó 33pF C1 de 20pF como mínimo
Cristal ? 4MHz (PIC16F84A-04) 5K? ? R1 ? 100K?
La memoria de programa
El espacio marcado como "Espacio de
Memoria de Usuario" es donde irá el
programa, desde la dirección 0000h hasta la
3FFh (3FFh en decimal es 1023, que mas la
dirección 0000h hace 1024 direcciones, es
decir, 1Kbyte).
"Reset Vector" es la primera dirección
(0000h) a la que se dirige el PIC al
encenderlo o al resetearlo y donde debe
estar siempre la primera instrucción.
"Vector de Interrupción" es la dirección
(0004h) a la que se dirige el PIC cuando se
produce una interrupción, esto es, un evento
que permite sacar al PIC de la ejecución
normal del programa para ejecutar una
subrutina de atención a la interrupción.
"PC" (Contador de Programa) es un registro
de 13 bits que apunta a la dirección de la
memoria de programa que contiene la
instrucción a ejecutar.
"Niveles de la pila de 1 a 8" son los niveles
de la pila, que se utiliza cuando se ejecutan
subrutinas.
La memoria de datos RAM
- La memoria RAM no sólo se usa para almacenar las
variables que puedan utilizarse en el programa, también se
utilizan una serie de registros para configurar y controlar el
PIC.

- La memoria esta dividida en dos bancos, el banco 0 y el


banco 1, para seleccionar un banco u otro se utiliza un bit
(RP0) del registro de estado (STATUS). Generalmente se
trabaja con el banco 0.
Cada banco se divide a su vez en dos áreas:
- RFS (Registros de Funciones Especiales)

- RGP (Registros de Propósito General)


El área RFS (Registros de Funciones Especiales) controla


el funcionamiento del dispositivo. Estos registros se
emplean para el control del funcionamiento de la CPU y de
los periféricos (direcciones desde la 00h hasta la 0Bh y
desde la 80h hasta la 8Bh).

-El área RGP (Registros de Propósito General) comprende


los registros que podemos utilizar como variables de trabajo
a partir de la dirección 0Ch hasta la 4Fh (68 bytes de
SRAM). Puede accederse directamente o bien
indirectamente haciendo uso del registro FSR.

- El área RGP así como algunos registros especiales son los


mismos en los dos bancos del mapa de memoria del PIC.
Interrupciones
Registro INTCON
Registro OPTION
Manejo de una interrupción
unsigned cnt;

void interrupt() {
cnt++; // Incrementar valor cnt
TMR0 = 96; //en cada interrupción
INTCON = 0x20; // Activar T0IE, borrar T0IF
}//~

void main() {
OPTION_REG = 0x84; // Preescaler a TMR0
TRISB = 0; // PORTB como salida
PORTB = 0xFF; // iniciar PORTB
TMR0 = 96;
INTCON = 0xA0; // Habilitar interupción TMR0
cnt = 0; // Resetear cnt

do {
if (cnt == 400) {
PORTB = ~PORTB; // Negar PORTB
cnt = 0; // Resetear cnt
}
} while(1);
}//~!
Cálculo de retardos con TMR0

T. total = 4 x Tosc x (256-TMR0)xPredivisor

Tosc = 1 / fclock
Formato de una instrucción (I)

Ejemplo: Addwf f,d

Ejemplo: bcf f,b


Formato de una instrucción (II)

Ejemplo: addfw k
call k
RAM 16F84 RAM 16F877
Display alfanumérico LCD
Librería LCD (interface 4 bits)

Lcd_Config
void Lcd_Config(unsigned short *port, unsigned short RS, unsigned short EN,
unsigned short WR, unsigned short D7, unsigned short D6, unsigned short D5,
unsigned short D4);
Lcd_Config(&PORTD,1,2,0,3,5,4,6);

Lcd_Init
Lcd_Init(&PORTB);

Lcd_Out
void Lcd_Out(unsigned short row, unsigned short col, char *text);
Lcd_Out(1, 3, "Hello!");
Lcd_Custom_Cmd
void Lcd_Custom_Cmd(char out_char);
Lcd_Custom_Cmd(Lcd_Clear);
LCD Command Purpose
LCD_FIRST_ROW Move cursor to 1st row
LCD_SECOND_ROW Move cursor to 2nd row
LCD_THIRD_ROW Move cursor to 3rd row
LCD_FOURTH_ROW Move cursor to 4th row
LCD_CLEAR Clear display
LCD_RETURN_HOME Return cursor to home position, returns a shifted display to
original position. Display data RAM is unaffected.

LCD_CURSOR_OFF Turn off cursor


LCD_UNDERLINE_ON Underline cursor on
LCD_BLINK_CURSOR_ON Blink cursor on
LCD_MOVE_CURSOR_LEFT Move cursor left without changing display data RAM
LCD_MOVE_CURSOR_RIGHT Move cursor right without changing display data RAM
LCD_TURN_ON Turn LCD display on
LCD_TURN_OFF Turn LCD display off
LCD_SHIFT_LEFT Shift display left without changing display data RAM
LCD_SHIFT_RIGHT Shift display right without changing display data RAM
Librería LCD a medida

Lcd_Custom_Config
void Lcd_Custom_Config(char * data_port, char D7, char D6, char D5, char
D4, char * ctrl_port, char RS, char WR, char EN);
Lcd_Custom_Config(&PORTD,3,2,1,0,&PORTB,2,3,4);
Lcd_Custom_Out

Lcd_Custom_Cmd
Manejo de display LCD

char *text = "S.T.R. 2007";

void main() {
TRISB = 0;
TRISC = 0; // PORTB y PORTC Salida
Lcd_Custom_Config(&PORTC,7,6,5,4,&PORTB,0,1,2);
Lcd_Custom_Cmd(Lcd_CURSOR_OFF); // Ocultar cursor
Lcd_Custom_Out(1, 1, text); //Imprimir texto
}
Conversión A/D (I)
Hasta 8 canales de entrada
Conversión por método de aproximaciones sucesivas
10 bits de resolución
Voltaje alto y bajo de referencia seleccionable por software
Posibilidad de ejecución en modo SLEEP
Conversión A/D (II)

4 registros básicos:

2 registros configuración:
ADCON0
ADCON1

2 registros datos:
ADRESH y ADRESL
Registro de configuración (I)
Registro de configuración (II)
Registro de datos
Conversión A/D

TRISA = 0xFF;
ADCON1 = 0x80;
ADCON0 = 0x81;
Comando: Adc_Read( ) Æ Inicializa el convertidor A/D
para trabajar como oscilar RC, y como parámetro se le pasa el canal
que queramos convertir, devolviendo un entero con el resultado de la
conversión.

unsigned Adc_Read(unsigned short channel);


temp = Adc_Read(0);
Interfaz Serie
• Posibilidad de configuración para
comunicación:
– full-duplex asíncrona.
– Sincrona como Master
– Síncrona como Slave

• Utilizaremos el modo asíncrono


Interfaz Serie
• MODO ASINCRONO:
– codificación standard NRZ
• 1 bit inicio 8-9 de datos y 1 bit de paro.
– formato standard de 8 bits ( configurable )
– se transmite primero el bit LSB
– paridad no soportada por HW pero puede
calcularse por SW y almacenarse en bit 9
Interfaz Serie
DIAGRAMA DEL BLOQUE DE TRANSMISION
Interfaz Serie
• PROGRAMACION:
– 1) Inicializar registro del Generador de baudios
(SPBRG) y el bit de alta velocidad si necesario
(BRGH)
Interfaz Serie
– 2) Modo Asíncrono
• Clear bit SYNC
– 3) Habilitar puerto serie
• Set bit SPEN
– 4) Interrupciones habilitadas
• Set bit TXIE
– 5) Si se quiere 9º bit de datos
• Set bit TX9
Interfaz Serie
– 6 ) Habilitar transmision
• Set bit TXEN (habilita el bit TXIF)
– 7) Si se ha seleccionado 9º bit
• Cargar bit en TX9D
– 8) Cargar el registro TXREG con los datos:
• empieza automáticamente la transmisión
// ejemplo para simular en placa de prototipos
// PICDEM2 + PIC16F877

unsigned int temp;


char txt[5];
void main(){
ADCON1 = 0x8E;
TRISA = 0x11;

Lcd_Custom_Config(&PORTD,3,2,1,0,&PORTA,3,2,1);
Lcd_Custom_Out(1, 1, "valor conversion:");
do {
temp = Adc_Read(0); // Almacena valor de la conversion
WordToStr(temp*5/1020, txt);
delay_ms(100);
Lcd_Custom_Out(2, 1, txt);
}while(1);
}
/*
* Project name:
ADC_USART (enviar al puerto serie el valor del ADC)
*/

unsigned short temp_res;


void main() {
USART_Init(9600); // Inicializar puerto serie (9600 baud rate, 1 stop bit,
...
ADCON1 = 0; // Todos los pin analógicos y VDD es Vref
TRISA = 0xFF; // PORTA entrada

do { // leer ADC y enviar los 8 bits al puerto serie


temp_res = ADC_Read(0) ;
USART_Write(temp_res);
} while (1);
}
Ejercicio nº 1 (flujograma)
P ra c t ic a 0 1

-D e fin ir va ria b le s
-P a --> E n t ra d a
-P b --> S a lid a

L e e r P u e rt o A (R a 0 )

No Si
P 1 (R a 0 ) e s t a
p u ls a d o ?

A pagar Led L1
E nc ender Led
(R b 0 )
L 1 (R b 0 )
Compilar

Explorador
de código

Ventana de edición

Configuración del proyecto

Resultado
Proceso de trabajo
• Ejecutar el compilador.
• Crear un proyecto nuevo, o abrir uno existente.
– Proyect -> new proyect.
• Configurar parámetros del proyecto.
– Nombre del proyecto, directorio de trabajo…
– Seleccionar el Microcontrolador.
– Elegir la frecuencia de trabajo del mismo.
– Activar bits de configuración.
• Solo activar WDT_OFF.
• Escribir el código fuente.
• Construir el proyecto (build) y comprobar que esta libre de
errores.
– En el subdir de trabajo se generan 4 nuevos ficheros: *.asm, *.lst, *.mcl y
*.hex
• El fichero *.hex generado es el ejecutable que emplearemos
para simular en proteus, y posteriormente grabarlo en el
microcontrolador.
Comandos entrada/salida (I)

TRISx Donde x = A, B, C D ó E
-Define un puerto o un pin como entrada o salida.
-Un 1 define el pin como entrada y un 0 como salida.
- Ejemplo: TRISA = 0xFF; TRISB = 129; TRISE = % 11110001;

PORTx Donde x = A, B, C D ó E
-Asigna un valor a un puerto.
-Ejemplo: PORTB = %10000111; PORTA = 0xF8; PORTC = ~PORTB

PORTx.Fy Donde x = A, B, C D ó E
e y = 0..7
-Asigna un valor binario a un pin.
-Ejemplo: PORTB.F2 =1; PORTA.F0 =0;
Comandos entrada/salida (II)

var = PORTx
-Lee el puerto x y lo asigna a var
-Ejemplo: temp = PORTB
- temp sera de tipo byte.

Var = PORTx.Fy
-Lee el pin y del puerto x y lo asigna a var.
-Ejemplo: temp = PORTA.F2;
Ejercicio 1
void main(){
TRISB = 0; // inicializamos el puerto B y el D como salida.
TRISD = 0; // 0 --> Salida, 1 --> entrada
PORTB = 0;
PORTD = 0;
do {
PORTB = 0xFF; // equivale a 255 todo el puerto a 1
PORTD = 0; // Sería correcto PORTB = 255; ó PORTB = % 11111111;
delay_ms(1000); // Retardo de 1 seg.
PORTB = 0;
PORTD = 0xFF;
delay_ms(1000);
} while(1);
}
PIC 16F88
PIC 16F88
Microcontrolador Pic 16F88

Frecuencia típica 4 Mhz


Clock
Frecuencia máxima 20 Mhz

Memoria Flash (programa) 4096


de 14 bits
Memoria
Memoria RAM 384

Memoria EEPROM 256

Temporizadores Tmr0, Tmr1, Tmr2

Comparadores 2

Periféricos PWM hasta 10 bits 1


Convertidores A/D 10 bits 7
Comunicación serie USART
SPI
Oscilador interno de 32 Khz a 8 MHZ Si

Fuentes de interrupción 10

Patillas de E/S 16
Características
Rango de tensión 2.0–5.5 V

Encapsulados 18 pin DIP, SOIC, 20 pin SSOP

You might also like