Вы находитесь на странице: 1из 10

MANUAL DE PROCEDIMIENTO

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.

Realizar los diagramas de flujo correspondiente a la prctica.

Simular el respectivo circuito en el software Proteus.

Verificar la funcionalidad del circuito y el programa en conjunto.

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.

Finalizacin de la escritura en la EEPROM de datos. [7]

1.2. Mdulo del Timer0.


El Timer0 es un temporizador/contador ascendente de 8 bits, cuando trabaja con el reloj del PIC
se le suele llama temporizador y cundo los pulsos los recibe de una fuente externa a travs del
pin RA4/TOCKI que se le llama contador. [1][3][5]
Caractersticas:
8-bits en contador.
Mdulo de escritura y lectura.
Prescaler de 8-bits de programacin.
Reloj de seleccin interno y externo.
Interrumpir el desbordamiento de FFH a 00h.
Edge de seleccin de reloj externo.

Figura 1. Diagrama de bloques del Timer0/WDT Prescaler

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:

El programa debe implementarse en el microcontrolador, as como en la simulacin


(Proteus).

Debern presentarse-adjuntarse diagramas de flujo, cdigo de programa y esquema


elctrico de simulacin.

1.2.2.

Flujograma

En este punto se realiza un diagrama de flujo, que es la representacin grfica de lo


que el software (programa) va a realizar; el cual incluye las debidas secuencias y
condiciones de funcionamiento para la programacin del mdulo CCP como timmer
industrial. (Anexo 2. Diagrama de Flujo).

2. DESARROLLO DEL CDIGO-PROGRAMA


Para el cdigo de programa que se grabar en el microcontrolador, se utiliza Lenguaje
C de MPLab.
El cdigo fuente a implementarse, debe incluir las funciones que permitan operar: un
dip swchit de 2 posiciones como selector para una salida en alto o en bajo. (Anexo 2.
Cdigo del Programa).
3. HARDWARE, SIMULACIN Y GRABACIN DEL MICROCONTROLADOR

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

Se ha logrado cumplir el objetivo de esta prctica de forma correcta gracias al uso


de los Timers presentes en PIC 16

Dado el poco conocimiento sobre el manejo de los mismos, el tiempo requerido


para la prctica fue mayor del establecido originalmente.
Para el correcto funcionamiento de la prctica se hizo necesario el uso de
funciones especficas, pero con los mismos componentes ya usados con
anterioridad.
La memoria usada fue de:

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:

Anexo 1: Esquema De La Prctica

Anexo 2: Diagrama De Flujo


#include <xc.h>
#include <delays.h>
//constantes
#define _XTAL_FREQ 4000000
// PIC18F4550 Configuration Bit Settings
#pragma config PLLDIV = 1
// PLL Prescaler Selection bits (No prescale
(4 MHz oscillator input drives PLL directly))
#pragma config CPUDIV = OSC1_PLL2// System Clock Postscaler Selection
bits ([Primary Oscillator Src: /1][96 MHz PLL Src: /2])
#pragma config USBDIV = 1
// USB Clock Selection bit (used in FullSpeed USB mode only; UCFG:FSEN = 1) (USB clock source comes directly
from the primary oscillator block with no postscale)
// CONFIG1H
#pragma config FOSC = XTPLL_XT // Oscillator Selection bits (Internal
oscillator, XT used by USB (INTXT))
#pragma config FCMEN = OFF
// Fail-Safe Clock Monitor Enable bit (FailSafe Clock Monitor disabled)
#pragma config IESO = OFF
// Internal/External Oscillator Switchover
bit (Oscillator Switchover mode disabled)
// CONFIG2L
#pragma config PWRT = OFF
// Power-up Timer Enable bit (PWRT
disabled)
#pragma config BOR = ON
// Brown-out Reset Enable bits (Brown-out
Reset enabled in hardware only (SBOREN is disabled))
#pragma config BORV = 0
// Brown-out Reset Voltage bits (Maximum
setting)
#pragma config VREGEN = OFF
// USB Voltage Regulator Enable bit

(USB voltage regulator disabled)


// CONFIG2H
#pragma config WDT = OFF
// Watchdog Timer Enable bit (WDT
disabled (control is placed on the SWDTEN bit))
#pragma config WDTPS = 32768 // Watchdog Timer Postscale Select bits
(1:32768)
// CONFIG3H
#pragma config CCP2MX = OFF
// CCP2 MUX bit (CCP2 input/output is
multiplexed with RB3)
#pragma config PBADEN = OFF
// PORTB A/D Enable bit (PORTB<4:0>
pins are configured as digital I/O on Reset)
#pragma config LPT1OSC = OFF
// Low-Power Timer 1 Oscillator Enable
bit (Timer1 configured for higher power operation)
#pragma config MCLRE = ON
// MCLR Pin Enable bit (RE3 input pin
enabled; MCLR pin disabled)
// CONFIG4L
#pragma config STVREN = ON
// Stack Full/Underflow Reset Enable bit
(Stack full/underflow will cause Reset)
#pragma config LVP = OFF
// Single-Supply ICSP Enable bit (SingleSupply ICSP disabled)
#pragma config ICPRT = OFF
// Dedicated In-Circuit
Debug/Programming Port (ICPORT) Enable bit (ICPORT disabled)
#pragma config XINST = OFF
// Extended Instruction Set Enable bit
(Instruction set extension and Indexed Addressing mode disabled (Legacy
mode))
// CONFIG5L
#pragma config CP0 = OFF
001FFFh) is not code-protected)
#pragma config CP1 = OFF
003FFFh) is not code-protected)
#pragma config CP2 = OFF
005FFFh) is not code-protected)
#pragma config CP3 = OFF
007FFFh) is not code-protected)

// 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)

// Table Read Protection bit (Block 0


from table reads executed in other
// Table Read Protection bit (Block 1
from table reads executed in other
// Table Read Protection bit (Block 2
from table reads executed in other
// Table Read Protection bit (Block 3
from table reads executed in other

// 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;

// Configuracion entradas digitales


T0CON = 0b11000000; //Habilitamos el timer 0
// configuracion ipen
RCONbits.IPEN = 0; // Configuramos el Interrupt Priority Enable bit
// INTERRUPCIONES
INTCON = 0b11100000; // Habilitamos las interrupciones globales
//LATD |= 0b00011111;
TMR0 = 240; //Cargamos el timer con el valos
while(1)
{
if(PORTCbits.RC1==0)
{
while(PORTCbits.RC1==0);
flag=1;
}
if(PORTCbits.RC2==0)
{
while(PORTCbits.RC2==0);
acu++;
if(acu==1)
{
flag=0;
} else if(acu==2)
{
flag=1;
acu=0;
}
}
if(flag)
{
uni++;
if(uni>9)
{
uni=0;
dec++;
if(dec>9)dec=0;
}//
}
PORTB=iVectorDatos[uni];
PORTDbits.RD1=1;
Delay10KTCYx(1);
PORTDbits.RD1=0;
PORTB=iVectorDatos[dec];
PORTDbits.RD2=1;
Delay10KTCYx(1);
PORTDbits.RD2=0;
}//FInde while
}

Anexo 3 Cdigo del Programa

Вам также может понравиться