Está en la página 1de 10

TECNOLÓGICO​​NACIONAL​​DE​​MÉXICO

INSTITUTO TECNOLÓGICO DE TIJUANA


DEPARTAMENTO DE INGENIERÍA ELECTRÓNICA Y BIOMÉDICA

Ingeniería Biomédica

Microcontroladores

Práctica 7. Uso de temporizador 0 del PIC16F877A como contador de eventos.

Unidad 2

ELABORADO POR:

Bejarano Lozada Elias 20213057

Jacobo Mendoza Miroslava 21212669

Vazquez Aldeco Kennia Michelle 21212183

FACILITADOR:

Angel Corral Dominguez

Tijuana BC., a 25 de Abril del 2024.


Índice

Introducción……………………………………………………………………………2

Objetivo

Marco teórico

PIC 16F877A.

Lenguaje ensamblador…………………………………………………………….3

Configuración y uso de temporizadores……………………………………………4

Timer 0……………………………………………………………………5

Timer de 1 segundo

Procedimiento y resultados

Código en ensamblador……………………………………………………………6

Implementación virtual………………………………………………………….…7

Construcción física

Conclusiones………………………………………………………………………………..8

Referencias…………………………………………………………………………………..9

1
1. Introducción

En este informe se detalla el desarrollo de una práctica enfocada en la programación en


lenguaje ensamblador para crear un programa que utiliza el temporizador 0 del
PIC16F877A como contador de eventos. En cuanto a la programación de temporizadores
en microcontroladores, estos son esenciales para aplicaciones que requieren gestión del
tiempo, ofreciendo mayor precisión y versatilidad que simples delays. El PIC16F887
cuenta con tres temporizadores: Timer 0, Timer 1 y Timer 2.

Su diseño RISC simplifica el proceso de programación en lenguajes como


ensamblador y C, lo que lo hace especialmente adecuado para la enseñanza y desarrollo de
prototipos en campos como la automatización y la electrónica. Además, su amplia
disponibilidad de recursos educativos en línea lo convierte en una opción popular entre
estudiantes y aficionados.

2. Objetivo

Crear un sistema basado en el PIC 16F877A que utilice el temporizador 0 y su entrada al


microcontrolador para contar los eventos del pin de entrada.

3. Marco teórico

3.1 PIC 16F877A.


El PIC16F877A es uno de los microcontroladores PIC más populares de la empresa
Microchip. Tiene un poco más de memoria y pines de entrada/salida que los
microcontroladores de gama básica (como el PIC16F84A). Posee un CPU del tipo RISC
(Conjunto Reducido de Instrucciones) que cuenta únicamente con 35 instrucciones
distintas, lo que lo hace muy fácil de programar tanto en lenguaje ensamblador como en C
y es por lo tanto ideal para la enseñanza.

Es un microcontrolador programable, por lo que puede usarse en una amplia gama


de aplicaciones en automatización, proyectos escolares, desarrollo de prototipos e incluso
en productos comerciales. Este PIC en particular es muy popular en la comunidad de

2
estudiantes y aficionados por que es sumamente sencillo de programar y se encuentra una
gran cantidad de información sobre él en internet. [1]

Figura 1.- Datasheet del microcontrolador PIC16F877A.

Figura 2.- PIC 16F877A físico


3.2 Lenguaje ensamblador.

El lenguaje ensamblador es un lenguaje de programación de bajo nivel que está muy cerca
del lenguaje de máquina, es decir, el código binario que vimos en la anterior entrada.

A diferencia de los lenguajes de alto nivel como C++ o Java, que son más fáciles de
entender para los humanos, el lenguaje ensamblador está diseñado para ser más fácil de
entender para el procesador. El lenguaje ensamblador es un lenguaje de programación que

3
utiliza mnemónicos para representar las instrucciones que se ejecutarán en el procesador.
Estos mnemónicos son traducidos por el ensamblador a su equivalente en código binario.
[2]

Figura 3.- Ejemplo de un código en lenguaje ensamblador.

3.3 Configuración y uso de temporizadores

Los temporizadores o Timers son una de las características más importantes para un
programador de sistemas embebidos. Cada aplicación que diseñamos involucra de alguna
manera una aplicación de tiempo, como encender o apagar algún dispositivo después de un
intervalo de tiempo específico.
A diferencia de simplemente usar el delay_ms() del CCS C, los timers son mucho
más versátiles y precisos, dado que con el macro de delay_ms() lo que hacemos es detener
la ejecución del PIC, sin embargo con el timer, podemos continuar nuestra ejecución y
realizar el conteo o temporización en segundo plano. El microcontrolador PIC16F887 tiene
3 temporizadores:
★ Timer 0 (8 bits).
★ Timer 1 (16 bits).
★ Timer 2 (8 bits).
En esta entrada vamos a tratar de entender cómo podemos configurarlos usando el
compilador CCS C PIC C.

4
3.3.1 Timer 0
El Timer0 pic también llamado RTCC se puede cargar con un valor cualquiera entre 0 y
255 y puede ser incrementado a través del Reloj interno y dividido por un valor que se
puede escoger entre los que se indican a continuación. Esto se conoce como el valor del
preescalador (Valor de Preescaler), presentado en Figura

Figura 4.- Ejemplo de preescalador, es decir, velocidad de microcontrolador dividido por algún número de
potencia 2.
Todo microcontrolador requiere un circuito externo que le indique la velocidad a la que
debe trabajar. Este circuito, que se conoce como oscilador o reloj, es muy simple pero de
vital importancia para el buen funcionamiento del sistema. El PIC16F887 puede utilizar
cuatro tipos de osciladores diferentes, siendo estos:

★ RC. Oscilador con resistencia y condensador.


★ XT. Cristal.
★ HS. Cristal de alta velocidad.
★ LP. Cristal para baja frecuencia y bajo consumo de potencia.

Si se trabaja el Microcontrolador con un cristal de 4 Mhz, esta frecuencia se divide


internamente por 4, es decir realmente trabaja a 1MHz, o sea que cada ciclo de reloj dura
aproximadamente 1 microsegundo.
3.3.2.- Timer de 1 segundo

Para generar un retardo de un segundo usando el timer del PIC, con preescaler de 256, se
procede de la siguiente manera:

5
X = Este valor puede ser cualquiera de los indicados al principio, el que se elija será con el
que se seguirá trabajando en la programación. En este caso el RTCC escogido es 256.

El valor anterior, es decir 3906 debe ser igual a la multiplicación entre el valor inicial del
timer 0 y el valor del contador a decrementar.

3906= valor inicial del timer * valor del contador a decrementar. [2]

4. Procedimiento y resultados

4.1 Código en ensamblador

El código que se utilizó fue el siguiente:

Listado 1. Estructura de un programa en lenguaje ensamblador para el PIC16F877A, código en lenguaje


ensamblador.

6
El código en lenguaje ensamblador configura un microcontrolador PIC16F877A para usar
un oscilador externo, desactivar el watchdog timer, el power-up timer, la protección de
código y el modo de bajo voltaje. Luego, establece el puerto B como salida y lo limpia. Se
configura el registro OPTION_REG para habilitar el Timer0 con una prescaler de 1:2. El
programa luego lee el valor del Timer0 y lo envía al puerto B continuamente.

4.2 Implementación virtual

Para verificar el correcto funcionamiento del código, se procede a construir el circuito


correspondiente, considerando los pines críticos utilizando el software Proteus. El circuito
de prueba se muestra en la Figura 5.

Figura 5.- Circuito para el programa en lenguaje ensamblador de Listado 1.

4.3 Construcción física

Posterior a verificar el funcionamiento de manera virtual, el siguiente paso es llevar este


diseño de manera física. Para llevar a cabo esta tarea, se requiere disponer de ciertos
componentes, tales como un un botón pulsador, un cristal de cuarzo, capacitores con
valores entre 15 y 30 pF, en este caso se utilizó de 22pF,, resistencias de 10 kΩ y 330Ω, 8
LEDs y una fuente de alimentación que suministre 5V para alimentar al PIC16F877A.

7
Figura 6.- Construcción física para la aplicación de uso de temporizador 0 del PIC16F877A como contador de
eventos.

Conclusiones

Bejarano Lozada Elias 20213057


La configuración del oscilador o reloj es crucial para el funcionamiento correcto de un
microcontrolador, determinando la velocidad de operación del sistema. El PIC16F887
ofrece la opción de utilizar cuatro tipos de osciladores: RC, XT, HS y LP. Por ejemplo, si se
utiliza un cristal de 4 MHz, la frecuencia real de operación del microcontrolador será de 1
MHz, lo que significa que cada ciclo de reloj durará aproximadamente 1 microsegundo.
Jacobo Mendoza Miroslava 21212669
Los temporizadores son esenciales en sistemas embebidos para gestionar tareas
relacionadas con el tiempo, ofreciendo una mayor versatilidad y precisión que simples
retardos. El microcontrolador PIC16F887 cuenta con tres temporizadores: Timer 0 de 8
bits, Timer 1 de 16 bits y Timer 2 de 8 bits. Estos temporizadores pueden ser configurados
con valores de pre-escalado para adaptarse a las necesidades específicas de temporización
del proyecto.
Vazquez Aldeco Kenia Michelle 21212183
El lenguaje ensamblador, aunque más cercano al lenguaje de máquina y menos intuitivo
que los lenguajes de alto nivel como C++ o Java, ofrece una comprensión directa y

8
detallada de las instrucciones que el procesador ejecuta. Utiliza mnemónicos que son
traducidos a código binario por el ensamblador, permitiendo una programación precisa y
eficiente.
Referencias

[1] Geek Factory, «PIC16F877A Microcontrolador PIC 8 bits Microchip - Geek Factory», Geek Factory, 12
de febrero de 2024.
https://www.geekfactory.mx/tienda/componentes/integrados/pic16f877a-microcontrolador-pic-8-bits-microchi
p/

[2] “Timer PIC”. Control Automatico Educación. Accedido el 18 de abril de 2024. [En línea]. Disponible:
https://controlautomaticoeducacion.com/microcontroladores-pic/timer-pic/

También podría gustarte