Upload
nacarino-jasom
View
212
Download
0
Embed Size (px)
Citation preview
8/16/2019 LAB3_2016A
1/4
Microcontroladores
Ing. Flavio Condor De La Cruz 1
LABORATORIO N° 3
PROGRAMANDO EN LENGUAJE C
OBJETIVO
Conocer la estructura y las sentencias básicas para programar en lenguaje C elmicrocontrolador Atmega8.
FUNDAMENTO TEORICO
#include
Incluimos la librería avr/io que contiene la información de las entradas y salidas delmicrocontrolador.
#include
Esta librería es necesaria para poder utilizar los retardos de tiempo
int main (void)
El main es la función principal, es donde el programa inicia, siempre es necesario declarar lafunción main.
Funciones y macros útiles de la Librería “AVR-LIBC”
Dentro de la basta cantidad de funciones y macros implementadas en el paquetede librerías, hay funciones y macros que son muy utilizadas para facilitar la programaciónen microcontroladores, como operaciones orientadas a bits, bytes y words. Algunas de lasmás útiles son:
Macro _BV(bit):
Convierte un numero de bit a un valor de byte, por ejemplo _BV(4) devuelve 0x10 (16 endecimal), lo que hace esta macro es un corrimiento de un 1 a la izquieda “bit” veces paraponer a 1 el “bit” correspondiente en un byte. Es lo mismo que escribir
(1
8/16/2019 LAB3_2016A
2/4
Microcontroladores
Ing. Flavio Condor De La Cruz 2
Función _delay_ms(milisegundos):
Se encuentra en la librería y sirve para hacer retardo en milisegundos.
Macros bit_is_set(sfr,bit) y bit_is_clear(sfr,bit):
Verifican si el “bit” en el registro “sfr” es un 1 para bit_is_set() o un 0 para bit_is_clear(), devolviendo verdadero (1) si se cumple la condición.
Macros loop_until_bit_is_set(sfr,bit) y loop_until_bit_is_clear(sfr,bit):
La primer macro espera a que el “bit” en “sfr” se ponga a 1 para después continuar con elprograma, por el contrario la segunda macro espera a que el valor del “bit” en “sfr” sea 0.
Macros _SFR_IO_ADDR(sfr):
Devuelve un apuntador al registro especificado por “sfr”. Sirve para obtener la dirección deun registro SFR.
Estas son algunas de las funciones y macros más usadas en la programación demicrocontroladores AVR con el compilador GN avr-gcc y la avr-libc.
PROCEDIMIENTO
Simular e implementar lo siguiente
Ejercicio 1. Programa que enciende y apaga 8 leds conectados al puerto B, con untiempo en alto de 0.3 seg. y un tiempo en bajo de 0.5 seg.
Esquema
8/16/2019 LAB3_2016A
3/4
Microcontroladores
Ing. Flavio Condor De La Cruz 3
Programa
#include //Librería de entradas y salidas #include //Librería de retardos int main (void) //Inicio del programa
{ DDRB=0xFF; //Configura puerto B como salidawhile(1) //Iniciar bucle infinito
{ PORTB=0xFF; //Saca por el Puerto B el dato 11111111 _delay_ms(300); //Pausa de 300 milisegundos PORTB=0x00; //Puerto B = 00000000 _delay_ms(500); //Pausa de 500 milisegundos }
}
Ejercicio 2. Programa que enciende y apaga un led conectado al pin B0 del puerto
B, con un tiempo en alto de 200ms y un tiempo en bajo de 400ms.
Esquema
Programa
#include //Librería de entradas y salidas #include //Librería de retardos
int main (void) //Inicio del programa {
DDRB|=_BV(PB0); //Configura B0 como salida, el resto no se altera
while(1) //Iniciar bucle infinito { PORTB|=_BV(PB0); //Saca un 1 por el pin B0 _delay_ms(200); //Pausa de 200 milisegundos PORTB&=~(_BV(PB0)); //Saca un 0 por el pin B0 _delay_ms(400); //Pausa de 400 milisegundos }
}
8/16/2019 LAB3_2016A
4/4
Microcontroladores
Ing. Flavio Condor De La Cruz 4
Ejercicio 3. Programa que desplaza a la izquierda y a la derecha un dato por elpuerto D, este dato es el numero binario 00000001.
Esquema
Programa
#include //Librería de entradas y salidas de los AVR #include //Librería para usar los retardos "_delay_ms()" int main(void) //Inicio del programa {
DDRD=0xFF; //Configura el registro del puerto D como salidas PORTD=0x01; //Asignarle el valor de 0x01 (Hexadecimal) al puerto D while(1){ //Iniciar un ciclo while infinito
while( PORTD 1; //Recorrer el Puerto D un lugar a la derecha _delay_ms(200); //Esperar 200 milisegundos
}} //Terminar el while infinito
}
TRABAJO
Presentar un circuito implementado que haga 4 juegos de luces diferentes cada juego de luces debe ser activado por el estado lógico de dos pines. (Utilizar solo elpuerto D). En el informe presentar el programa y la simulación.