Академический Документы
Профессиональный Документы
Культура Документы
CARRERA:
INGENIERIA ELECTRNICA
EQUIPO:
Sala de Cmputo.
RESPONSABLE / EQUIPO:
ACCESORIOS:
Protoboard
Display 7 segmentos
Fuente DC de 5V 1
Cable Multipar 1
Microc Pic 16F877A
Transistor PNP 3906
Cuarzo 20MHz
Pulsantes
Resistencias
Capacitores
DOCENTE:
Ing. Luis Serpa
PRCTICA:
Contador
CTEDRA O MATERIA
REVISIN N: 1
RELACIONADA:
Sistemas Microprocesados EDICIN: 1
II
NMERO DE ESTUDIANTES
POR EQUIPO O PRCTICA:
Jos Ortiz
Rommel Vintimilla
FECHA:
18 de octubre de 2016
TEMA: Contador De 00 A 99
OBJETIVO GENERAL:
Realizar un contador de 00 a 99, con pulsante de encendido y pulsante de paro,
continuar.
OBJETIVOS ESPECFICOS:
Realizar la programacin respectiva para que el mdulo CCP funcione como un
timmer.
SUSTENTO TERICO:
1.1.1. Interrupciones en el PIC16F877A.
Se puede definir a las interrupciones como los cambios que se producen en las
trayectorias del flujo de un programa que son causados por agentes externos que
pueden tener mayor prioridad.
Cuando se ejecuta una interrupcin el microcontrolador detiene el programa que
se est ejecutando y salta a un vector de interrupcin almacenado previamente.
[7]
Una interrupcin puede ser realizada mediante diferentes fuentes posibles como:
Desbordamiento del temporizador TIMER0.
Activacin de la interrupcin por el pin RB0/INT.
Cambio de estado de los pines ms significativos del puerto B.
1.2.1.Interrupcin
La interrupcin del TMR0 se genera cuando el TMR0 registra desbordamientos de FFh a 00h.
el desbordamiento establece el bit TMROIF. la interrupcin se puede enmascarar borrando el
bit TMROIF. El bit TMROIF debe ser limpiado en el software por el mdulo Timer0 de
interrupcin.
La interrupcin TMR0 no puede activar el procesador de su estado de Sleep ya que el
temporizador es shunt-off durante el Sleep. En la ecuacin (1) se puede calcular el valor real
del TMRO con una interrupcin deseada.
interTM R 0=4
1
( 256V al TMR 0 )Presc (1)
F .Oscilador
PROCEDIMIENTO:
1. CONSIDERACIONES DE DISEO
Para el manejo de los diferentes mdulos del PIC, estos deben estar bien configurados
y programados para realizar las siguientes funciones, consideraciones y/o
restricciones:
1.2.2.
Flujograma
Anlisis de resultados:
Con la correcta programacin de los mdulos del PIC, as mismo grabado en nuestro pic16F877A
se pude comprobar el correcto funcionamiento de todas las condiciones de diseo y as mismo
comparando con el simulador tanto en fsico como en digital la prctica tiene un correcto
funcionamiento.
Es de gran importancia saber el funcionamiento de cada instruccin de esta manera se puede
programar el microcontrolador etapa por etapa y comprobando el funcionamiento del mismo.
Se debe comprobar individualmente el correcto funcionamiento de los elementos de esta manera
nos resulta ms fcil encontrar algn fallo en la prctica.
Conclusiones
BIBLIOGRAFA:
[1] Disponible en hoja de informacin Microchip PIC16FF87XA 28/40/44-Pin Enhaced
Flash Microcontrollers
[2] Disponible en sitio web http://www.aquihayapuntes.com/ indice-practicas-pic-enc/uso-del-tmr1-como-temporizador.html
[3] Disponible en sitio web http://www.aquihayapuntes.com/indice-practicas-pic-
en-c/uso-del-tmr0-como-temporizador.html
[4] Disponible en sitio web
http://www.circuitoselectronicos.org/2011/04/temporizador-timer-2-en-los.html
[5] Disponible en PDF El Microcontrolador PIC16F877 Resumen de hoja de datos
[6] PIC16F877A - http://www.utp.edu.co/~eduque/arquitec/PIC16F877.pdf
[7]INTERRUPCIONES Microchip Tenchnlogy Inc. Datasheet PIC16F877A: hoja de
datos (publicado) DS40044A, 2009.
[8]TMR0 Microchip Tenchnlogy Inc. Datasheet PIC16F877A: hoja de datos (publicado)
DS40044A, 2009.
[9]OSCILADOR - http://ramon-gzz.blogspot.com/2012/04/osciladores-en-pic.html
[10] RESET - https://piedrasincas.wordpress.com/tag/circuito-para-reset-manual/.
[11] DIPSWICHT - http://electronicaradical.blogspot.com/2015/04/dip-switchinterruptor-dip.html
[12]PULSANTE - https://es.wikipedia.org/wiki/Bot%C3%B3n_(dispositivo)
[13]BUZZER - https://es.wikipedia.org/wiki/Zumbador
ANEXOS:
// Code Protection bit (Block 0 (000800// Code Protection bit (Block 1 (002000// Code Protection bit (Block 2 (004000// Code Protection bit (Block 3 (006000-
// CONFIG5H
#pragma config CPB = OFF
// Boot Block Code Protection bit (Boot
block (000000-0007FFh) is not code-protected)
#pragma config CPD = OFF
// Data EEPROM Code Protection bit (Data
EEPROM is not code-protected)
// CONFIG6L
#pragma config WRT0 = OFF
001FFFh) is not write-protected)
#pragma config WRT1 = OFF
003FFFh) is not write-protected)
#pragma config WRT2 = OFF
005FFFh) is not write-protected)
#pragma config WRT3 = OFF
007FFFh) is not write-protected)
// Write Protection bit (Block 0 (000800// Write Protection bit (Block 1 (002000// Write Protection bit (Block 2 (004000// Write Protection bit (Block 3 (006000-
// CONFIG6H
#pragma config WRTC = OFF
// Configuration Register Write Protection
bit (Configuration registers (300000-3000FFh) are not write-protected)
#pragma config WRTB = OFF
// Boot Block Write Protection bit (Boot
block (000000-0007FFh) is not write-protected)
#pragma config WRTD = OFF
// Data EEPROM Write Protection bit
(Data EEPROM is not write-protected)
// CONFIG7L
#pragma config EBTR0 = OFF
(000800-001FFFh) is not protected
blocks)
#pragma config EBTR1 = OFF
(002000-003FFFh) is not protected
blocks)
#pragma config EBTR2 = OFF
(004000-005FFFh) is not protected
blocks)
#pragma config EBTR3 = OFF
(006000-007FFFh) is not protected
blocks)
// CONFIG7H
#pragma config EBTRB = OFF
// Boot Block Table Read Protection bit
(Boot block (000000-0007FFh) is not protected from table reads executed
in other blocks)
const unsigned char iVectorDatos[] = {0xC0, 0xF9, 0xA4, 0xB0,
0x99,0x92, 0x83, 0xF8, 0x80, 0x98}; // Vector con numeros para 7
segmentos
unsigned int uni=0;
unsigned int dec=0;
unsigned int flag=0,acu=0;
void interrupt isr()//Funcion de Interrupcion
{
if (TMR0IE && TMR0IF)
{
}// FIN de if Timer
TMR0=240;
TMR0IF=0;
return ;
}//fin de la interrupcion
void main() //Funcion Principal
{
TRISA=0b00001111;
TRISD=0;
TRISC=0b00001110; //Configuramos el registro Trisc como salda
TRISB=0;//Configuramos los bits como salida
PORTA=0;