Documente Academic
Documente Profesional
Documente Cultură
Ingeniería Biomédica1
RESUMEN
Por lo cual, en el curso se realizan diversos laboratorios que permiten llevar a la práctica los
temas vistos. En primera medida, se hará una descripción de los códigos implementados en
lenguaje C y programados en el entorno de programación atmel studio 7 para la
sistematización de un par de semáforos en 4 casos distintos, tal y como se especifica en la
guia de laboratorio propuesta por la docente.
PREGUNTAS Y RESULTADOS
a) Explique en detalle el funcionamiento del programa del punto 4.1. ¿Por qué es necesaria
cada librería en el código?
#ifndef F_CPU
#define F_CPU 16000000UL // 16 MHz clock speed
#endif
Primer programa invocado por el compilador. Se está preguntando si está definida F_CPU, si no está
definida se define F_CPU con una velocidad de reloj de 16MHz, esto debido a que en el caso del Arduino
Uno, el microcontrolador trabaja con un cristal el cual se encuentra a la frecuencia anteriormente
mencionada.
#include <avr/io.h>
Se incluye la librería de puertos entrada/salida
#include <util/delay.h>
int main(void)
{
//Puerto B (incluye pines 8 a 13, pin 13 es PB5)
DDRB |= 0x20;
Se establece para que una vez se acabe la instrucción vuelva a empezar la ejecución del código.
{
PORTB |= 0x20; //Encendemos el LED escribiendo un 1
Para que se encienda un led, se debe escribir un 1 en la posición o en el pin que se estableció como
salida, en este caso es el pin 5 del puerto B.
Para lo anterior se realiza una OR entre el puerto B que se encuentra en 0x00 y el valor de 0x20,
dando como resultado 0x20, la cual corresponde al pin 5 del puerto B. Se escribe un 1 en ese pin,
haciendo que el led encienda.
Para que se apague el led, se debe escribir un 0 en el pin de salida, que en este caso es el pin 5 del
puerto B.
Para lo anterior se realiza esta vez una AND entre el puerto B y 0xDF (Que corresponde en binario a
11011111), haciendo que en el pin 5 del puerto B se escriba un 0 y de esta manera el led se pueda
apagar.
}
}
#ifndef F_CPU
#define F_CPU 16000000UL // 16 MHz clock speed
#endif
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
En esta parte del código se hace uso del puerto B el cual tiene 6 pines, estos 6 pines corresponden a
los pines que van del 8 al 13 en el arduino, se usó este puerto debido a que los demás puertos ocupan 2
de sus pines para realizar operaciones ya designadas por el fabricante dentro de la tarjeta arduino
como en el caso del puerto D del microprocesador Atmega 328P en el cual dos de sus pines PD0 y
PD1 se destinan para la comunicación serial RX(recepción) y TX(transmisión) del arduino.
Se configura como salida, poniendo en alto(1) desde el PB0 al PB5 usando el comando DDRB.
DDRB |= 0B111111;
while(1) //Bucle infinito
Se crea un ciclo infinito con la finalidad de que el microprocesador se encuentre en “ocioso” y así este
ejecute de manera continua el código dentro de este ciclo, esto debido a que el debe de estar
realizando acciones de manera continua, ese es el modo de funcionamiento
Teniendo en cuenta que ciertos pines deben de ponerse en alto, es decir tener 5V en su salida con la
finalidad de que puedan energizar los leds y estos prendan, se procede a por medio de la secuencia
determinar cuales son los pines que se van a poner en alto(5v) y en bajo(0v), recordando que el primer
semáforo a encender esta representado por los 3 primeros bit menos significativos del puerto B
mientras que el segundo semáforo está representado por los 3 pines más significativos del puerto B.
Semáforo 1 color rojo (PB0) activo y Semaforo 2 color verde (PB6) activo
Semáforo 1 color rojo (PB0) activo y Semaforo 2 color amarillo (PB5) activo
Semáforo 1 color verde (PB2) activo y Semaforo 2 color rojo (PB3) activo
CONCLUSIONES
REFERENCIAS