0% encontró este documento útil (0 votos)
4 vistas5 páginas

Time Counter

La práctica se centra en la configuración y uso de los puertos de entrada y salida del microcontrolador ATmega para controlar dispositivos y leer señales digitales mediante programación en C. Se implementaron ejercicios prácticos que fortalecieron la comprensión del funcionamiento de los registros DDRx, PORTx y PINx, así como la interacción entre hardware y software. Los estudiantes desarrollaron competencias en el diseño y programación de sistemas embebidos, sentando las bases para aplicaciones más complejas en telecomunicaciones y automatización.

Cargado por

allaucad39
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas5 páginas

Time Counter

La práctica se centra en la configuración y uso de los puertos de entrada y salida del microcontrolador ATmega para controlar dispositivos y leer señales digitales mediante programación en C. Se implementaron ejercicios prácticos que fortalecieron la comprensión del funcionamiento de los registros DDRx, PORTx y PINx, así como la interacción entre hardware y software. Los estudiantes desarrollaron competencias en el diseño y programación de sistemas embebidos, sentando las bases para aplicaciones más complejas en telecomunicaciones y automatización.

Cargado por

allaucad39
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

{

UNIVERSIDAD NACIONAL DE CHIMBORAZO

FACULTAD DE INGENIERIA

GUÍA DE PRÁCTICAS VERSIÓN: 1


PERIODO ACADÉMICO: 2026 1S
Página 1 de 5
CARRERA: DOCENTE: SEMESTRE: CUARTO
TELECOMUNICACIONES LEONARDO RENTERIA PARALELO: A
NOMBRE DE LA ASIGNATURA: CÓDIGO DE LA LABORATORIO A UTILIZAR:
MICROPROCESADDORES Y ASIGNATURA: ELECTRONICA
MICROCONTROLADORES. TEP120344

Práctica No.: Tema: Duración (horas) No. Grupos No. Estudiantes (por
Periféricos E/S Grupo)
2
4
4

Objetivos de la Práctica:
Configurar y utilizar los puertos de entrada y salida digitales del microcontrolador ATmega para controlar
dispositivos externos y leer señales digitales mediante programación en lenguaje C.
Equipos, Materiales e Insumos:

- Microcontrolador ATmega (ATmega328P / ATmega16 / ATmega32)


- Placa de desarrollo o circuito mínimo
- LEDs
- Resistencias (220 Ω – 330 Ω)
- Pulsadores
- Switches
- Protoboard y cables
- Programador ISP (USBasp)
- Microchip Studio

Introducción:
Los microcontroladores constituyen una de las tecnologías más importantes en el desarrollo de sistemas
electrónicos modernos, debido a su capacidad para controlar y procesar información proveniente de diferentes
dispositivos. Una de sus principales características es la posibilidad de interactuar con el entorno mediante los
periféricos de entrada y salida (E/S), los cuales permiten recibir señales de elementos externos, como pulsadores
y switches, así como controlar dispositivos de salida, entre ellos LEDs, relés y otros actuadores. Gracias a esta
capacidad, los microcontroladores son ampliamente utilizados en aplicaciones de automatización,
instrumentación, telecomunicaciones y control industrial.

En la presente práctica se trabajó con el microcontrolador ATmega, realizando la configuración de sus puertos
digitales mediante programación en lenguaje C utilizando Microchip Studio. Se implementaron diferentes
ejercicios que permitieron configurar pines como entradas y salidas, controlar el encendido y apagado de LEDs,
leer el estado de pulsadores y switches, y desarrollar una aplicación capaz de visualizar el resultado de la suma de
dos números binarios ingresados mediante interruptores. Estas actividades permitieron comprender el
funcionamiento de los registros DDRx, PORTx y PINx, fundamentales para el manejo de los puertos digitales del
microcontrolador.
El desarrollo de esta práctica permitió fortalecer los conocimientos teóricos y prácticos relacionados con la
programación de sistemas embebidos, comprendiendo la interacción entre el hardware y el software para el
control de dispositivos electrónicos. Además, se verificó experimentalmente el correcto funcionamiento de los
circuitos implementados, consolidando las competencias necesarias para el diseño y desarrollo de aplicaciones
basadas en microcontroladores.

Marco Teórico:
Microcontroladores AVR:
Los microcontroladores AVR son dispositivos electrónicos programables que integran en un solo circuito una
unidad de procesamiento (CPU), memoria y periféricos de entrada y salida. Son ampliamente utilizados en
sistemas embebidos debido a su bajo consumo de energía, facilidad de programación y capacidad para controlar
dispositivos electrónicos. En este proyecto se utiliza un microcontrolador de la familia AVR para implementar un
contador digital mediante el uso de un temporizador configurado como contador externo.

Puertos de Entrada y Salida (GPIO):


Los puertos de entrada y salida, conocidos como GPIO (General Purpose Input/Output), permiten la comunicación
entre el microcontrolador y el entorno. Cada pin puede configurarse como entrada para recibir señales externas
o como salida para controlar dispositivos como LEDs, relés o motores.
La dirección de cada pin se configura mediante los registros DDR (Data Direction Register). Un valor de '1'
configura el pin como salida y un valor de '0' como entrada. El estado lógico de los pines se controla mediante los
registros PORT y PIN.

Temporizador/Contador Timer0:
El Timer0 es un periférico de 8 bits capaz de funcionar tanto como temporizador, utilizando el reloj interno del
microcontrolador, como contador, empleando pulsos provenientes de una fuente externa. En este proyecto se
configura en modo contador para registrar cada pulso recibido en la entrada T0 (PD4).
El registro TCNT0 almacena el valor actual del conteo y puede representar valores entre 0 y 255. La configuración
del modo de funcionamiento se realiza mediante los registros TCCR0A y TCCR0B.

Contador Externo:
Cuando el Timer0 trabaja en modo contador externo, incrementa automáticamente el contenido del registro
TCNT0 cada vez que detecta un flanco de subida o de bajada en el pin T0, dependiendo de la configuración
seleccionada. En esta práctica se utiliza el conteo por flanco ascendente, es decir, cuando la señal cambia de nivel
lógico bajo (0) a alto (1).
Este mecanismo permite contabilizar eventos externos sin necesidad de que el programa supervise
continuamente el estado del pulsador.

Registro TCNT0:
El registro TCNT0 (Timer/Counter Register 0) contiene el valor del contador de 8 bits. Cada pulso detectado
incrementa automáticamente este registro. Cuando alcanza el valor máximo de 255 y recibe un nuevo pulso, el
contador vuelve a cero, produciéndose un desbordamiento (overflow).

Rebote Mecánico del Pulsador:


Los pulsadores mecánicos presentan un fenómeno conocido como rebote (debounce), el cual ocurre debido a
que los contactos internos no cambian de estado instantáneamente al presionarlos o soltarlos. Como
consecuencia, el microcontrolador puede detectar múltiples pulsos durante una sola pulsación.
Para minimizar este problema, es común implementar un retardo por software utilizando funciones como
"_delay_ms()", permitiendo que los rebotes desaparezcan antes de aceptar una nueva pulsación.

Visualización Binaria mediante LEDs:


Los LEDs constituyen una forma sencilla de visualizar información digital. En este proyecto, el valor almacenado
en el contador se representa en formato binario utilizando ocho LEDs. Cada LED corresponde a un bit del número
almacenado, donde un LED encendido representa un nivel lógico alto (1) y un LED apagado representa un nivel
lógico bajo (0). Esta representación permite observar directamente el incremento del contador en código binario.

Lenguaje de Programación C para Sistemas Embebidos:


El lenguaje C es uno de los más utilizados para la programación de microcontroladores debido a su eficiencia,
velocidad de ejecución y acceso directo a los registros del hardware. Mediante el uso de bibliotecas como
"<avr/io.h>" y "<util/delay.h>", es posible configurar periféricos internos, controlar puertos de entrada y salida e
implementar retardos necesarios para aplicaciones de control digital.

Puertos digitales en AVR


Los puertos de entrada/salidas digitales permiten al microcontrolador interactuar con el mundo exterior, ya sea
recibiendo señales desde sensores (entrada) o controlando actuadores, LEDs o relés (salida). En los
microcontroladores Atmel AVR, los puertos se manejan a través de registros específicos que permiten configurar
la dirección y el estado de los pines.
Cada puerto está compuesto por 8 pines digitales, identificados como Px0 a Px7 (donde X = A, B, C, D según el
puerto). Por ejemplo:

Puerto P0 P1 P2 P3 P4 P5 P6 P7
PORTB PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7

Cada puerto se controla mediante 3 registros principales:


Registro Función
DDRx Configura el pin como entrada (0) o salida (1)
PORTx Escribe un valor lógico o activa pull-up
PINx Lee el estado del pin
x representa el puerto: B, C, D, etc.

La configuración de pines es la siguiente:


Modo salida
• Escribimos 1 en DDRx
• El pin puede entregar 5V (alto) o 0V (bajo)
Modo entrada
• Escribimos 0 en DDRx
• El pin puede leer señales externas
• Si PORTx = 1, se habilita resistencia pull-up interna

Modo DDRx PORTx Función


Salida 1 0 → bajo / 1 → alto Control de actuadores o LEDs
Entrada 0 0 → flotante / 1 → pull-up Lectura de sensores o botones

Procedimiento:

1. Arme el circuito de la figura. Considere Vcc, Gnd y RST.


B0

U1
30 12
PD0/RXD/PCINT16 PB0/ICP1/CLKO/PCINT0
31 13
B3 32
PD1/TXD/PCINT17 PB1/OC1A/PCINT1
14
PD2/INT0/PCINT18 PB2/SS/OC1B/PCINT2
1 15
PD3/INT1/OC2B/PCINT19 PB3/MOSI/OC2A/PCINT3
2 16
PD4/T0/XCK/PCINT20 PB4/MISO/PCINT4
LED 0 9 17
PD5/T1/OC0B/PCINT21 PB5/SCK/PCINT5
10 7 22pF
PD6/AIN0/OC0A/PCINT22 PB6/TOSC1/XTAL1/PCINT6
11
PD7/AIN1/PCINT23 PB7/TOSC2/XTAL2/PCINT7
8 X1
330 CRYSTAL
20 23
AREF PC0/ADC0/PCINT8
18 24
AVCC PC1/ADC1/PCINT9
330 25 22pF
PC2/ADC2/PCINT10
19 26
ADC6 PC3/ADC3/PCINT11
22 27
ADC7 PC4/ADC4/SDA/PCINT12
330 28
PC5/ADC5/SCL/PCINT13
LED 3 29
PC6/RESET/PCINT14

330 ATMEGA328P

2. Crear nuevo proyecto y crear un código para encender y apagar los 4 leds cada 100ms. Agrega las librerías
de retardo y configura correctamente la frecuencia de oscilador

3. Verificar el funcionamiento del código anterior con el uso del osciloscopio.


4. Cambiar el código anterior para encender el led correspondiente de acuerdo con el botón presionado.
5. Remplace los botones por switches y cree un código que permita visualizar la suma de dos números de
dos bits ingresados y cuyo resultado se muestre en los LEDs.

Conclusiones:
La práctica realizada permitió comprender de manera integral el funcionamiento de los periféricos de entrada y
salida del microcontrolador ATmega, así como la importancia que tienen dentro del desarrollo de sistemas
embebidos. Mediante la configuración de los registros DDRx, PORTx y PINx se logró establecer correctamente el
comportamiento de cada pin, permitiendo controlar dispositivos de salida como los LEDs y leer el estado de
dispositivos de entrada como pulsadores y switches. Esto permitió evidenciar que la correcta configuración de los
puertos digitales es un paso fundamental para garantizar el funcionamiento adecuado de cualquier aplicación
basada en microcontroladores.

Durante el desarrollo de la práctica también se fortalecieron los conocimientos sobre programación en lenguaje
C aplicada a sistemas embebidos, comprendiendo la relación existente entre el software y el hardware del
microcontrolador. Se verificó que las instrucciones programadas permiten manipular directamente los registros
internos del dispositivo, facilitando el control de los diferentes periféricos y logrando que el sistema responda de
acuerdo con las condiciones establecidas en el programa. Asimismo, se observó la importancia de realizar una
adecuada conexión del circuito y de verificar experimentalmente su funcionamiento para identificar posibles
errores de programación o de montaje.

Finalmente, esta práctica permitió reforzar las habilidades adquiridas en la asignatura de Microprocesadores y
Microcontroladores, desarrollando competencias tanto en el diseño como en la implementación de sistemas
digitales básicos. Los conocimientos obtenidos constituyen una base importante para prácticas posteriores, en las
que se emplearán otros periféricos del microcontrolador, como temporizadores, interrupciones, comunicación
serial y conversores analógico-digitales, contribuyendo al desarrollo de aplicaciones de mayor complejidad en el
área de las telecomunicaciones y la automatización.
Códigos:

#include <avr/io.h>
int main(void)
{
DDRB = 0xFF;
DDRD &= ~(1 << 4);
TCCR0B = (1 << CS02) | (1 << CS01);
while (1)
{
PORTB = TCNT0;
}
return 0;
}

Resultados:
Al realizar esta práctica los estudiantes configuran y utilizan los puertos de entrada y salida digitales del
microcontrolador ATmega para controlar dispositivos externos y leer señales digitales mediante programación en
lenguaje C.

Anexos:
Referencias bibliográficas:
[Link]
ATmega328P_Datasheet.pdf
Fecha de Revisión y Aprobación: 01/04/2026

_____________________ __________________

Firma Director de Carrera Firma Docente

También podría gustarte