Está en la página 1de 2

Programación de Dispositivos – Actividad de repaso

Programación de un microcontrolador

Introducción Teórica

Consultar datasheet del microcontrolador ATmega328P

PREGUNTAS DE CONOCIMIENTO GENERAL

Elementos básicos del código de programación de un microcontrolador


Contestar el siguiente cuestionario:
1. Indique cuales son los tipos de variables que pueden emplearse en la programación de un microcontrolador.
Señale el Identificador Tipo e Intervalo que podrían representar.
2. Indique con que comando puede definir las variables, pines digitales en entrada o salida en la cabecera del
código de programación. Muestre varios ejemplos.
3. Indique la diferencia entre variable local y variable global. ¿Cuál de los dos tipos de variable debería usar para
ahorrar el uso de memoria del microcontrolador y por qué?
4. Indique lo que se debe agregar en la sección Void setup () { }
5. Indique lo que se debe agregar en la sección Void loop () { }.
6. Indique cuántas y cuáles son las salidas/entradas digitales (IO) de las que dispone el microcontrolador
ATMEGA328P.
7. Indique cual es el pin que controla el LED interno que contiene la tarjeta Arduino Nano.
8. Indique la diferencia entre una entrada INPUT_PULLUP y una entrada declarada como INPUT. Y que beneficios
conlleva el uso de las resistencias Pull up seleccionadas de manera digital.
9. Indique la diferencia entre un display de ánodo y uno de cátodo común.
10. Indique los comandos utilizados para lectura y escritura de las I/O digitales.
11. ¿Qué valores de escritura recibe una salida digital? digitalWrite (i,?);
12. Indique las letras que se deben anteponer para representar la siguiente trama de bits en Hexadecimal dentro de
un código de programación: 1100 1111. Escriba como se podría sustituir.
13. Cuantas instrucciones aproximadas realiza el microcontrolador estudiado en 1 segundo.

Programación Básica de un microcontrolador

14. Del siguiente código indique que símbolos podría omitir:


if (contador==10) {contador=0;}

15. Del siguiente código indique con que variables podría reemplazar los números resaltados para declarar los 7
segmentos de un display como salidas:
#define seg_a 0
#define seg_b 1
#define seg_c 2
#define seg_d 3
#define seg_e 4
#define seg_f 5
#define seg_g 6
Página 1
Programación de Dispositivos – Actividad de repaso
void setup ()
{for(i=0;i<=6;i++) pinMode(i,OUTPUT);}

16. Teniendo en cuenta la declaración de salidas del numeral 15. Considere el siguiente código donde la función
pretende apagar en sentido antihorario cada uno de los segmentos de un display. Explique por qué el código no
funciona correctamente en la implementación e indique que debe modificar para obtener el funcionamiento
correcto.
void giro_antihorario(void){
unsigned char i;
for(i=seg_f;i>=seg_a;i--){
digitalWrite(i,HIGH);
if(i==seg_a) digitalWrite(seg_f,LOW);
else digitalWrite (i-1, LOW);
delay(retardo); //congela el uC 150ms=150000us=150000000ns (1 instrucción=62.5ns)
}}

17. El siguiente código implementa una función que enciende una secuencia de leds en las salidas digitales de un
microcontrolador. Escriba nuevamente el código con menor cantidad de líneas (sugerencia: usar la función for).
void led_onoff(int caso){ //La función led_onoff() es de ejecución por llamada
if (caso==0){
digitalWrite (LED1, HIGH); // 1er caso : leds ON
digitalWrite (LED2, HIGH);
digitalWrite (LED3, HIGH);
digitalWrite (LED4, HIGH);
digitalWrite (LED5, HIGH);
} else if (caso==1) {
digitalWrite (LED1, LOW); // 2do caso : led 1 ON el resto OFF
digitalWrite (LED2, LOW);
digitalWrite (LED3, LOW);
digitalWrite (LED4, LOW);
digitalWrite (LED5, LOW);
} else {
digitalWrite (LED1, HIGH); // 3er caso : impares OFF pares ON
digitalWrite (LED2, LOW);
digitalWrite (LED3, HIGH);
digitalWrite (LED4, LOW);
digitalWrite (LED5, HIGH);}}

18. Indique que hace falta en la siguiente sentencia de código y corríjalo:


if (caso==0) digitalWrite (LED1, LOW); digitalWrite (LED2, HIGH);

Página 2

También podría gustarte