Download - Tema_1_Microcontroladores
Tema 1: “Microcontroladores”
Sistemas en Tiempo Real
Curso 2006 -2007Segundo cuatrimestre 2007
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, enlos teléfonos, en los hornos microondas, los televisores, los teléfonos móviles, las consolas de videojuegos...
Introducción
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 deintegració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.
MicrocontroladorMicrocontroladorSistema cerrado (un solo chip que integra:)
La CPULa 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.ComparadoresPWMConvertidores A/D y D/A.
Generador de impulsos de reloj que sincronizan el funcionamiento de todo el sistema.
Aumento de prestaciones: un mayor control sobre un determinado
elemento representa una mejora considerable en el mismo.
Aumento de la fiabilidad. • Menor riesgo de averías
• Menos ajustes
Disminución del tamaño del producto. • Menor volumen
• Mano de obra
• Stocks
Disminución del coste del producto.
Ventajas del uso de los Microcontroladores
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
• Cocina o Lavadora....................... 1o Horno.......................... 1o Frigorífico.................... 1o Lavavajillas................... 1
• Salón o TV............................. 2o Mando a distancia.............. 1o Video.......................... 1o DVD............................ 2 o Receptor TDT................... 1o Teléfono fijo.................. 1o Teléfono móvil................. 2
• Garaje o Puerta automática.............. 1o Alarma robo/incendio/gas....... 3
• Ascensor............................ 2
•Generalo Calefacción........... 1o Aire acondicionado.... 1o Video portero......... 2
•Automóvil o Frenos ABS............ 1o Climatización......... 1o Alarma antirrobo...... 1o Airbag................ 1 o Equipo música......... 1o Ordenador de viaje.... 1o Control motor......... 1 o Sistema seguridad..... 1
•PC y periféricos.............. 6
TOTAL: . . . . . . . . . . 38
Microcontroladores en el hogar
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).Experiencia previa.Documentación.Herramientas de desarrollo y precio.Disponibilidad.
Elección de modelo concreto de µCPrecio del microcontrolador.E/S y recursos internos.Consumo y velocidadMemoriaAncho de palabraDiseñ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) IIIArquitectura: 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 elcomputador 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).
• 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.
Características Arquitectura: Von Neumann
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.
Arquitectura HARVARD
Ejecuta SUB_1Búsqueda SUB_14. BSF PORTA,BIT3
SalirBúsqueda 43. CALL SUB_1
Ejecuta 3Búsqueda 32 .MOVWF PORTB
Ejecuta2Búsqueda 21. MOVLW 55h
Ejecuta 1Búsqueda 1Ejemplo:
Procesador segmentado (pipeline)
Arquitecturas: Von Neumann vs. Harvard
La arquitectura de von Neumann se caracteriza por disponer deuna 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.
– 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.
Microcontroladores (CPU)
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 podemosencontrar 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
Genera las señales que determinan la velocidad de trabajo del uC.
Suele estar integrado en el propio chip, solo necesita unos pocos componentes externos.
Cristales de cuarzo.Resonadores cerámicos.Circuitos R/C.Oscilador externo.
Existen uC, que incluso integran toda la circuiterianecesaria 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
Análisis y
Diseño
Edición
Compilación
Ensamblado
Corrección sintáctica
Implemen-
tación
Depuración
y prueba
Simulación lógica
Placa prototipo
Idea o proyecto
Requerimientos
Papel y lápiz
Herramientas gráficas
Ciclo de vida del proyectoCiclo de vida del proyecto
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.
• 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)
Lenguajes de programación
Editar código fuente
Compilar código fuente
Ensamblar código objeto
Entorno IDE(editor de textos)
MIKROC(Mikroe compiler)
Fichero ejecutable
MPASM, MIKROC
Proceso de implementaciProceso de implementacióónn
*.c
*.asm
*.dbg, .cof
*.hex
WINPIC800+ TE-20
ImplementaciImplementacióón y prueban y prueba
PRO
GR
AM
AC
IÓN
SIMULACISIMULACIÓÓN/CORRECCIN/CORRECCIÓÓNN
Foto placa
Placas de simulaciPlacas de simulacióón (programadores)n (programadores)
• 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 I)
• 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
Microcontroladores (Familias II)
¿ 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 predominauna característica especial.
Gamas de Gamas de PICPIC’’ss
PIC 10 , PIC 12*2 niveles de pila y 33 instrucciones de 12 bits, 1 timer de 8bits
PIC24 , (DsPIC)75, (84) instrucciones,
hasta 16,(40)MIPS
PIC1832 niveles de pila17 vectores de interrupción, 75
instruciones de 16 bits, 10 MIPS
PIC16*8 niveles de pila, 4 vectores de interrrupción
35 instrucciones de 14 bits, 1 timer 8 bit y 2 de 16bit, hasta 5MIPS
Gama alta
Gama altamejorada
Gama media
Gama básica
8bits
16bit
s
• 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íncronay asíncrona
Microcontroladores (Familias III)
Modelo 12C508 16F84A 16F88 16F877 18F6722Mem.Prog.
Bytes 768 1792 7168 14336 128KPalabras 512x12 1024x14 4096x14 8192x14 64Kx16
Mem.Datos
Bytes EEP 0 64 256 256 1024Bytes 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 54Comparador Analog No No 2 2 2Temporizadores 1-8bits+
WTD1- 8bits +WDT
1-16bits+2 8bits+WDT
1-16bits+2 8bits+WDT
3-16bits+2 8bits+WDT
Nº de pin’s 8 18 18 40 64PWM No No Si(10bits) Si SiFrec. Max. 4 Mhz. 20Mhz. 20Mhz. 20Mhz. 40MhzPrecio 2,04€ 5,17€ 3,81€ 10,85€ 23,75€
Comparativa
Oscilador RCC1 de 20pF como mínimo5K? ? R1 ? 100K?
Oscilador XTC1=C2=22pF ó 33pFCristal ? 4MHz (PIC16F84A-04)
Modo de conexionado del oscilador:
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 programa
- 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.
La memoria de datos RAM
Interrupciones
Registro INTCON
Registro OPTION
unsigned cnt;
void interrupt() {cnt++; // Incrementar valor cntTMR0 = 96; //en cada interrupciónINTCON = 0x20; // Activar T0IE, borrar T0IF
}//~
void main() {OPTION_REG = 0x84; // Preescaler a TMR0TRISB = 0; // PORTB como salidaPORTB = 0xFF; // iniciar PORTBTMR0 = 96;INTCON = 0xA0; // Habilitar interupción TMR0cnt = 0; // Resetear cnt
do {if (cnt == 400) {PORTB = ~PORTB; // Negar PORTB cnt = 0; // Resetear cnt
}} while(1);
}//~!
Manejo de una interrupción
T. total = 4 x Tosc x (256-TMR0)xPredivisor
Tosc = 1 / fclock
Cálculo de retardos con TMR0
Formato de una instrucción (I)
Ejemplo: Addwf f,d
Ejemplo: bcf f,b
Formato de una instrucción (II)
Ejemplo: addfw kcall k
RAM 16F84 RAM 16F877
Display alfanumérico LCD
Lcd_Configvoid 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_InitLcd_Init(&PORTB);
Lcd_Outvoid Lcd_Out(unsigned short row, unsigned short col, char *text);Lcd_Out(1, 3, "Hello!");
Lcd_Custom_Cmdvoid Lcd_Custom_Cmd(char out_char);Lcd_Custom_Cmd(Lcd_Clear);
Librería LCD (interface 4 bits)
Shift display right without changing display data RAMLCD_SHIFT_RIGHT
Shift display left without changing display data RAMLCD_SHIFT_LEFT
Turn LCD display offLCD_TURN_OFF
Turn LCD display onLCD_TURN_ON
Move cursor right without changing display data RAMLCD_MOVE_CURSOR_RIGHT
Move cursor left without changing display data RAMLCD_MOVE_CURSOR_LEFT
Blink cursor onLCD_BLINK_CURSOR_ON
Underline cursor onLCD_UNDERLINE_ON
Turn off cursorLCD_CURSOR_OFF
Return cursor to home position, returns a shifted display tooriginal position. Display data RAM is unaffected.
LCD_RETURN_HOMEClear displayLCD_CLEAR
Move cursor to 4th rowLCD_FOURTH_ROW
Move cursor to 3rd rowLCD_THIRD_ROW
Move cursor to 2nd rowLCD_SECOND_ROW
Move cursor to 1st rowLCD_FIRST_ROW
PurposeLCD Command
Lcd_Custom_Configvoid 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
Librería LCD a medida
char *text = "S.T.R. 2007";
void main() {TRISB = 0;TRISC = 0; // PORTB y PORTC SalidaLcd_Custom_Config(&PORTC,7,6,5,4,&PORTB,0,1,2);Lcd_Custom_Cmd(Lcd_CURSOR_OFF); // Ocultar cursorLcd_Custom_Out(1, 1, text); //Imprimir texto
}
Manejo de display LCD
Hasta 8 canales de entradaConversión por método de aproximaciones sucesivas10 bits de resoluciónVoltaje alto y bajo de referencia seleccionable por softwarePosibilidad de ejecución en modo SLEEP
Conversión A/D (I)
4 registros básicos:
2 registros configuración: ADCON0ADCON1
2 registros datos: ADRESH y ADRESL
Conversión A/D (II)
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 laconversió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 SerieDIAGRAMA DEL BLOQUE DE TRANSMISION
• PROGRAMACION:– 1) Inicializar registro del Generador de baudios
(SPBRG) y el bit de alta velocidad si necesario (BRGH)
Interfaz Serie
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 conversionWordToStr(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 VrefTRISA = 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 nEjercicio nºº 1 (1 (flujogramaflujograma))P rac t ic a01
-D e fin ir va ria b le s -P a --> E n t ra d a -P b --> S a lid a
Leer P ue rto A (R a0 )
P 1 (R a 0 ) es ta pu ls ado?
S iN o
E nc ende r Led L1 (R b0 )
A pagar Led L1 (R b0 )
Explorador de código
Compilar
Ventana de edición
Resultado
Configuración del proyecto
• 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.
Proceso de trabajo
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 ó Ee y = 0..7
-Asigna un valor binario a un pin.-Ejemplo: PORTB.F2 =1; PORTA.F0 =0;
Comandos entrada/salida (I)
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;
void main(){TRISB = 0; // inicializamos el puerto B y el D como salida.TRISD = 0; // 0 --> Salida, 1 --> entradaPORTB = 0;PORTD = 0;do {
PORTB = 0xFF; // equivale a 255 todo el puerto a 1PORTD = 0; // Sería correcto PORTB = 255; ó PORTB = % 11111111;delay_ms(1000); // Retardo de 1 seg.PORTB = 0;PORTD = 0xFF;delay_ms(1000);} while(1);
}
Ejercicio 1
PIC 16F88PIC 16F88
PIC 16F88PIC 16F88Microcontrolador Pic 16F88
ClockFrecuencia típica 4 Mhz
Frecuencia máxima 20 Mhz
Memoria
Memoria Flash (programa)de 14 bits
4096
Memoria RAM 384
Memoria EEPROM 256
Periféricos
Temporizadores Tmr0, Tmr1, Tmr2
Comparadores 2
PWM hasta 10 bitsConvertidores A/D 10 bits
17
Comunicación serieSPI
USART
Oscilador interno de 32 Khz a 8 MHZ Si
Características
Fuentes de interrupción 10
Patillas de E/S 16
Rango de tensión 2.0–5.5 V
Encapsulados 18 pin DIP, SOIC, 20 pin SSOP