Professional Documents
Culture Documents
PIC16F886
JRJ
UTCJ
PIC16F886
Parmetro Tipo de memoria de programa Memoria de programa (KB) Velocidad de CPU (MIPS) RAM (Bytes) EEPROM de datos (bytes) Perifricos de comunicacin digital Perifricos Captura/Compara/PWM Timers ADC Comparadores Rango de temperatura (C) Rango de voltaje de operacin (V) Conteo de terminales Flash 14 5 368 256 1-A/E/USART, 1-MSSP(SPI/I2C) 1 CCP, 1 ECCP 2 x 8-bit, 1 x 16-bit 11 ch, 10-bit 2 -40 to 125 2 to 5.5 28 Valor
JRJ
UTCJ
PIC16F886
JRJ
UTCJ
JRJ
UTCJ
JRJ
UTCJ
JRJ
UTCJ
JRJ
UTCJ
Qu es REAL ICE?
Es un emulador en circuito que es controlado por una PC corriendo el software MPLAB. La aplicacin puede variar desde desarrollo de software hasta integracin de hardware para pruebas de manufactura a servicio de campo. Soporta desarrollo de hardware y software para microcontroladores PIC y controladores de seal digital dsPIC que estn basados en la capacidad de programacin serial (ICSP).
JRJ UTCJ 9
Como programador
Graba el programa en el PIC y puede ejecutarse sin el MPLAB REAL ICE.
JRJ
UTCJ
10
JRJ
UTCJ
11
No usar resistencias pull-ups en las terminales PGC/PGD. Dividen los niveles de voltaje debido a que estas lneas tienen resistencias de 4.7 k en el emulador. No usar capacitores en las terminales PGC/PGD. Previene transiciones rapidas en la lneas de datos y reloj durante las comunicaciones de programacin y depuracin. 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 JRJ UTCJ 12 bidireccional entre el emulador y el dispositivo objetivo.
4. Crear el archivo fuente, guardarlo como main.c y agregar al proyecto 5. Establecer los valores de configuracin del PIC (Configure > Configuration bits)
JRJ UTCJ 13
JRJ
UTCJ
14
Programar el microcontrolador Correr el programa (continuo o por pasos) Comprobar el circuito Salir del depurador (Debugger > Select tool > None)
UTCJ 15
JRJ
UTCJ
16
PRACTICAS
1. 2. 3. 4. Activar salidas digitales E/S digitales Retardos Entradas analgicas
JRJ
UTCJ
17
JRJ
UTCJ
18
1. Cdigo fuente
#include <htc.h> void main() { // Configura PORTB como salidas digitales ANSELH=0; TRISB=0; PORTB=0; for(;;) { PORTB=0x05; } }
JRJ
UTCJ
19
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
20
2. Cdigo 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; }
JRJ
UTCJ
21
2. Circuito
JRJ
UTCJ
22
3. Retardos
Encender los 4 LEDs de la Tarjeta Demo en secuencia.
JRJ
UTCJ
23
3. Cdigo 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 24
3. Cdigo fuente
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(); } UTCJ }
JRJ
25
4. Entradas analgicas
Mostrar el valor de voltaje de un potencimetro de manera progresiva en 4 LEDs.
JRJ
UTCJ
26
4. Cdigo fuente
for(;;) {
#include <htc.h> #define _XTAL_FREQ 8000000 void main() { unsigned int DATO=0; // Configura RA0 como entrada analgica 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;
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; }
JRJ
UTCJ
}
27
REFERENCIAS
Hoja de datos de PIC16F886. http://ww1.microchip.com/downloads/en/De viceDoc/41291F.pdf Tutoriales de programacin en ensamblador y PICC. http://gooligum.com.au/tutorials.html
JRJ
UTCJ
28