UNIVERSIDAD TECNOLOGICADE CIUDAD JUAREZ
Microcontroladores Microchip con MPLAB(PIC16F886)
UTCJ 2
PIC16F886
JRJ
UTCJ 3
PIC16F886
JRJ
Parámetro Valor Tipo de memoria de programa Flash Memoria de programa (KB) 14 Velocidad de CPU (MIPS) 5 RAM (Bytes) 368 EEPROM de datos (bytes) 256
Periféricos de comunicación digital 1-A/E/USART, 1-MSSP(SPI/I2C)
Periféricos Captura/Compara/PWM 1 CCP, 1 ECCP
Timers 2 x 8-bit, 1 x 16-bit
ADC 11 ch, 10-bit Comparadores 2 Rango de temperatura (°C) -40 to 125
Rango de voltaje de operación (V) 2 to 5.5
Conteo de terminales 28
UTCJ 4
PIC16F886
JRJ
UTCJ 5
Tarjeta DEMO de 28 pin
Esta tarjeta es una placa de circuito impreso de demostración para PICs de 28 terminales.Cuenta con un PIC16F886, cuatro LEDs, un botón pulsador y un potenciómetro.Tiene varios puntos de prueba para accesar a las terminales de E/S del microcontrolador y una área generosa para prototipos.
JRJ
UTCJ 6
Tarjeta DEMO de 28 pinDispositivos soportados
JRJ
UTCJ 7
Tarjeta DEMO de 28 pin
JRJ
UTCJ 8
Tarjeta DEMO de 28 pin
JRJ
UTCJ 9
¿Qué es REAL ICE?
Es un emulador en circuito que es controlado por una PC corriendo el software MPLAB. La aplicación puede variar desde desarrollo de software hasta integración de hardware para pruebas de manufactura a servicio de campo.Soporta desarrollo de hardware y software para microcontroladores PIC y controladores de señal digital dsPIC que están basados en la capacidad de programación serial (ICSP).JRJ
UTCJ 10
Uso de MPLAB + REAL ICE
• Como emulador/depurador (debugger)– Permite la ejecución del programa del PIC
controlada desde la computadora. (Breakpoints, por paso)
• Como programador– Graba el programa en el PIC y puede ejecutarse sin
el MPLAB REAL ICE.
JRJ
UTCJ 11
Conexión para tarjetas de aplicación
JRJ
UTCJ 12
Conexión para tarjetas de aplicación
• No usar resistencias pull-ups en las terminales PGC/PGD. Dividen los niveles de voltaje debido a que estas líneas tienen resistencias de 4.7 kΩ en el emulador.
• No usar capacitores en las terminales PGC/PGD. Previene transiciones rapidas en la líneas de datos y reloj durante las comunicaciones de programación y depuración.
• No usar capacitores en la terminal MCLR. Previene transiciones rapidas del VPP. Una resistencia pull-up es suficiente.
• No usar diodos en las terminales PGC/PGD. Previene la comunicacion bidireccional entre el emulador y el dispositivo objetivo.JRJ
UTCJ 13
Uso de MPLAB + REAL ICE
1. Abrir MPLAB2. Seleccionar el PIC16F886 (Configure > Select Device)3. Crear un proyecto. (Project > Project Wizard)
a. Device: PIC16F886b. Toolsuite:HI-TECH C Compilerc. Proyecto: practica1.mcp
4. Crear el archivo fuente, guardarlo como «main.c» y agregar al proyecto
5. Establecer los valores de configuración del PIC (Configure > Configuration bits)
JRJ
UTCJ 14
Uso de MPLAB + REAL ICE
JRJ
UTCJ 15
Uso de MPLAB + REAL ICE
6. Compilar proyecto7. Conectar el MPLAB REAL ICE a la computadora y
a la tarjeta demo8. Conectar la tarjeta demo a la fuente de +5V9. Seleccionar el depurador (Debugger > Select tool
> REAL ICE)a. Programar el microcontroladorb. Correr el programa (continuo o por pasos)c. Comprobar el circuitod. Salir del depurador (Debugger > Select tool > None)
JRJ
UTCJ 16
Uso de MPLAB + REAL ICE
11.Seleccionar el programador (Programmer > Select tool > REAL ICE)
a. Programar el microcontroladorb. Salir del programador (Programmer > Select tool
> None)c. Desconectar la tarjeta demo del REAL ICE.d. Comprobar el funcionamiento del circuito.
JRJ
UTCJ 17
PRACTICAS
1. Activar salidas digitales2. E/S digitales3. Retardos4. Entradas analógicas
JRJ
UTCJ 18
1. Activar salidas digitales
• Enviar un numero binario (5) de 4 bits al puerto B.
JRJ
UTCJ 19
1. Código fuente#include <htc.h>
void main()
// Configura PORTB como salidas digitales
ANSELH=0;
TRISB=0;
PORTB=0;
for(;;)
PORTB=0x05;
JRJ
UTCJ 20
2. E/S digitales
• El interruptor conectado a RB4 controlará el encendido del led de RB0, y se apagará al presionar el boton conectado en RB5.
• El interruptor de RB6 controlará el LED de RB1.
JRJ
UTCJ 21
2. Código fuente#include <htc.h>
void main()
ANSELH=0; // Configura PORTB como salidas digitales
TRISB=0b11110000;
PORTB=0;
for(;;)
if (RB4==0) // Boton Start Enciende Led
RB0=1;
if (RB5==0) // Boton Stop Apaga Led
RB0=0;
RB1=!RB6; // El valor inverso de RB6 se refleja en RB1
JRJ
UTCJ 22
2. Circuito
JRJ
UTCJ 23
3. Retardos
• Encender los 4 LEDs de la Tarjeta Demo en secuencia.
JRJ
UTCJ 24
3. Código fuente#include<htc.h>
#define _XTAL_FREQ 8000000
void main()
ANSELH=0; // Configura PORTB como salidas digitales
TRISB=0b11110000;
PORTB=0;
for(;;)
PORTB=0b00000001;
__delay_ms(200); __delay_ms(200); __delay_ms(200); __delay_ms(200);
PORTB=0b00000010;
__delay_ms(200); __delay_ms(200); __delay_ms(200); __delay_ms(200); PORTB=0b00000100;
__delay_ms(200); __delay_ms(200); __delay_ms(200); __delay_ms(200);
PORTB=0b00001000;
__delay_ms(200); __delay_ms(200); __delay_ms(200); __delay_ms(200);
JRJ
UTCJ 25
3. Código fuente#include<htc.h>
#define _XTAL_FREQ 8000000
void retardo1seg(void)
unsigned int i=0;
for(i=1;i<=5;i++)
__delay_ms(200);
void main()
ANSELH=0; // Configura PORTB como salidas digitales
TRISB=0b11110000;
PORTB=0;
for(;;)
PORTB=0b00000001;
retardo1seg();
PORTB=0b00000010;
retardo1seg();
PORTB=0b00000100;
retardo1seg();
PORTB=0b00001000;
retardo1seg();
JRJ
UTCJ 26
4. Entradas analógicas
• Mostrar el valor de voltaje de un potenciómetro de manera progresiva en 4 LEDs.
JRJ
UTCJ 27
4. Código fuente
#include <htc.h>
#define _XTAL_FREQ 8000000
void main()
unsigned int DATO=0;
// Configura RA0 como entrada analógica
ANSEL=0x01;
TRISA=0x01;
// Configura PORTB como salidas digitales
ANSELH=0;
TRISB=0;
PORTB=0;
// Configura ADC
// Resultado justificado a la izquierda ADFM=0
// Vref-=VSS
// Vref+=VDD
ADCON1=0;
JRJ
for(;;)
ADCON0=0b01000001;
//01------ Fosc/8
//--0000-- Canal A0 seleccionado
//-------1 ADC habilitado
__delay_us(20);
GODONE=1;
while(GODONE);
DATO=ADRESH;
if(DATO<30)
PORTB=0;
else if(DATO<60)
PORTB=1;
else if(DATO<120)
PORTB=3;
else if(DATO<160)
PORTB=7;
else
PORTB=15;
UTCJ 28
REFERENCIAS
• Hoja de datos de PIC16F886. http://ww1.microchip.com/downloads/en/DeviceDoc/41291F.pdf
• Tutoriales de programación en ensamblador y PICC. http://gooligum.com.au/tutorials.html
JRJ