Está en la página 1de 10

INSTITUTO DE EDUCACION SUPERIOR SANTA MARIA

MECATRONICA INDUSTRIAL

CÓDIGO : P03
Práctica N°2
ASIGNATURA : EFSRT
PRIMERA FASE Docente:
Lenguaje en C – Programación GPIO bit a bit Ing. Jaime Enrique Villegas Medina.

I. OBJETIVOS
a. Estudiar y analizar la programación GPIO bit a bit

II. HERRAMIENTAS
1. 1 PC
2. Libros de referencias
3. Apuntes y Guía de laboratorio.

III. BIBLIOGRAFIA
[1] Lenguaje en C:
https://www.iesm.edu.pe/einstituto2021/pluginfile.php/2370/mod_resource/content/1/
Lenguaje-C.pdf

[2] Guía de prácticas

Ing. Jaime Enrique Villegas Medina


PRÁCTICA N°2: IMPLEMENTACION DE SISTEMAS ELECTRONICOS PROGRAMABLES
IV. MARCO TEÓRICO

4.1 Operadores para el manejo de bits:

Alt + Símbolo Descripción


38 & AND bit a bit
124 | OR bit a bit
94 ^ OR exclusivo bit a bit
126 ~ Complemento a unos (inversor)

4.2 Ejemplo de operación AND:

PORTB = 0B00000011 A B A&B


0 0 0
PORTB = PORTB & 0B00000110 0 1 0
1 0 0
PORTB &= 0B00000110 1 1 1

0B00000011 &
0B00000110
-----------------
0B00000010

4.3 Ejemplo de operación OR:

PORTB = 0B00000011 A B A|B


0 0 0
PORTB = PORTB | 0B00000110 0 1 1
1 0 1
PORTB |= 0B00000110 1 1 1

0B00000011 |
0B00000110
-----------------
0B00000111

4.4 Ejemplo de operación XOR:

PORTB = 0B00000011 A B A^B


0 0 0
PORTB = PORTB ^ 0B00000110 0 1 1
1 0 1
PORTB ^= 0B00000110 1 1 0

0B00000011 |
0B00000110
-----------------
0B00000101

Ing. Jaime Enrique Villegas Medina


PRÁCTICA N°2: IMPLEMENTACION DE SISTEMAS ELECTRONICOS PROGRAMABLES

4.5 Ejemplo de NOT:

PORTB = ~0B00000011

Resultado 0B11111100

4.6 Desplazamiento a la derecha:

PORTB = 0B00000011

PORTB = PORTB >>1

PORTB >>=1

Resultado 0B00000001

4.7 Desplazamiento a la izquierda:

PORTB = 0B00000011

PORTB = PORTB <<2

PORTB <<=2

Resultado 0B00001100

4.8 Puertos de los AVR:

DDR: Configura los pines como entrada o salida


PORT: determina si la salida estará en nivel bajo o alto
PIN: para leer el registro

REGISTRO 0 1 DESCRIPCION
DDRB Entrada Salida Configura el puerto como entrada o salida
PORTB (in) Pull up off Pull up on Habilitación de las resistencias pull up
PORTB (out) Nivel low Nivel high Determina el nivel lógico en los bits del puerto
PINB Solo lectura Solo lectura Lee el estado del puerto

Se pueden configurar los registros en sistema binario, decimal o hexadecimal.

Binario Decimal Hexadecimal


DDRB=0b00000000; DDRB=0; DDRB=0x00;
DDRB=0b11111111; DDRB=255; DDRB=0xFF;
DDRB=0b01010101: DDRB=85; DDRB=0x55;

4.9 Ejemplo de configuración del Pin PB6 del puerto B:

PB6 Configuración del Puerto B Forma Abreviada Por desplazamiento Nombrando Bits
1 PORTB=PORTB|(0b01000000) PORTB|=64 PORTB|=(1<<6) PORTB|=(1<<PB6)
0 PORTB=PORTB&~(0b01000000) PORTB&= ~(0b01000000) PORTB&= ~(1<<6) PORTB&= ~(1<<PB6)

Ing. Jaime Enrique Villegas Medina


PRÁCTICA N°2: IMPLEMENTACION DE SISTEMAS ELECTRONICOS PROGRAMABLES

V. DESARROLLO:

5.1 Creación de un programa en Microchip Studio:

Crear un nuevo proyecto ejecutable indicando el nombre y el microcontrolador a utilizar en este caso
elATMega328p.

De esta manera se creará una plantilla básica donde se podrá crear tus primeros programas.

Como un ejemplo de configuración de los pines I/O, copiaremos el siguiente programa:

Ing. Jaime Enrique Villegas Medina


PRÁCTICA N°2: IMPLEMENTACION DE SISTEMAS ELECTRONICOS PROGRAMABLES

5.2 Depuración del código en Microchip Studio:

La depuración de código es un proceso donde se revisa si lo programado funciona tal y como fue pensado. Para esto
Microchip nos provee de un depurador (debugger) propio, que nos permite revisar línea por línea como va
funcionando nuestro código.

Para habilitarlo ingresamos al menú “Debug” y luego en “Start debugging and break”

Aparecerá una ventana avisándonos que no tenemos ningún dispositivo conectado, para lo cual utilizaremos un
simulador. Le damos clic en continuar y seleccionamos en “Selected debugger/programmer” la opción simulador.

Se observará que aparecerá resaltado en amarillo el inicio del código. A partir de esa línea se podrá revisar el
código mediante los botones de depuración.

Ing. Jaime Enrique Villegas Medina


PRÁCTICA N°2: IMPLEMENTACION DE SISTEMAS ELECTRONICOS PROGRAMABLES

Para poder observar mejor los cambios activaremos la ventana de los puertos I/O

Aparecerá una ventana llamada I/O, en la cual nos concentraremos en este ejemplo en el puerto B

Y mediante el botón “Step Into” iremos pasando línea por línea y analizando el funcionamiento del código.

Ing. Jaime Enrique Villegas Medina


PRÁCTICA N°2: IMPLEMENTACION DE SISTEMAS ELECTRONICOS PROGRAMABLES

5.3 Depuración del código en Proteus:

Abriremos el programa proteus y creamos un nuevo proyecto todo por defecto.

Nos vamos a la ventana de dispositivos mediante el siguiente botón

Dentro de la ventana que se nos abre, buscamos el microcontrolador ATMega328P

Ing. Jaime Enrique Villegas Medina


PRÁCTICA N°2: IMPLEMENTACION DE SISTEMAS ELECTRONICOS PROGRAMABLES

Agregamos una resistencia de 330 Ohmios y un led, desde la misma ventana de componentes, y armamos el
siguiente circuito.

Vamos a configurar nuestro microcontrolador para que pueda funcionar con el programa, haciendo doble clic en
él. Modificaremos lo que se ve marcado.

Procederemos a guardar el archivo en la misma carpeta del proyecto de microchip studio pero en la subcarpeta
de “debug”.

Ing. Jaime Enrique Villegas Medina


PRÁCTICA N°2: IMPLEMENTACION DE SISTEMAS ELECTRONICOS PROGRAMABLES

Vamos a abrir ahora el archivo “.elf” desde nuestro microcontrolador en proteus haciendo nuevamente doble clic
en el e ingresando a la opción “program file”.

Para poder ver en sí el programa funcionando utilizamos el archivo “.hex”.

Ing. Jaime Enrique Villegas Medina


PRÁCTICA N°2: IMPLEMENTACION DE SISTEMAS ELECTRONICOS PROGRAMABLES

VI. PRACTICA:

6.1 Crear un programa que permita encender y apagar dos leds, uno después de otro de manera
intermitente. Utilizar u pin del puerto D, y uno del puerto C.

Ing. Jaime Enrique Villegas Medina

También podría gustarte