1. MICROCONTROLADORES: Final sobre 60 puntos.
TIEMPO: 1hora 20min. FECHA: Febrero 4 del 2010.
Nombre: ______________________________________________________Paralelo: ___________
· LLENE LA TABLA DE RESPUESTAS. CADA EJERCICIO VALE TRES PUNTOS
1. Para que el convertidor ADC del PIC16F877 pueda generar interrupciones al término de cada
conversión es necesario:
a) borrar ADIF, poner a uno los bits ADIE, GIE y PEIE.
b) borrar ADIE, poner a uno los bits ADIF, GIE y PEIE.
c) borrar PEIE, poner a uno los bits ADIE, GIE y ADIF.
d) ninguna de las anteriores.
2. Para grabar datos en la memoria FLASH se requiere:
a) Del registro EECON1 solamente.
b) Del registro EECON2 solamente
c) De los registros EECON1 y EECON2.
d) No es posible grabar datos en la memoria FLASH.
3. Su pantalla es un LCD 2x16 de 16 caracteres por línea. Asuma que el tiempo de espera entre
caracteres es igual a cero. El tiempo requerido para llenar la pantalla con caracteres ASCII transmitidos a
9600 bps (asuma 8 bits datos + un bit de inicio + un bit de parada) es:
a) 26.66 mseg b) 3.333 mseg c) 33.33 mseg d) Ninguna anteriores.
4. Si se lleva el PIC16F877 a modo reposo (ejecutar instrucción SLEEP) su convertidor ADC
puede seguir funcionando si:
a) se configura para que opere a la frecuencia Fosc/32.
b) se configura para que opere a la frecuencia FRC.
c) se configura para que opere a la frecuencia Fosc/8
d) ninguna de las anteriores.
5. El PIC16F877 está operando con un cristal de 10 MHz. El registro SPBRG del generador de
baudios del USART se carga con 6410 y el bit BRGH del registro TXSTA<2> se fija en 1(alta velocidad).
La frecuencia en bps del transmisor es:
a) 9600 bps b) 8960 bps c) 9615 bps d) ninguna anteriores
6. Considere el USART. La bandera TXIF=1 del registro PIR1 indica que:
a) el registro TXREG o buffer de datos del transmisor se encuentra lleno.
b) el registro TXREG o buffer de datos del transmisor se encuentra vacío.
c) el registro TSR se encuentra vacío.
d) ninguna de las anteriores.
7. Considere el siguiente segmento de programa donde TIMER2 interrumpe cada vez que desborda,
trabajando con un PIC16F877 a 4MHz. El TIMER 2 esta programado con un preescalador de 16, un
postescalador tambien de 16 y PR2=255.
int x=0;
#int_TIMER2
void TIMER2_isr (void)
{
printf ("Interrupcion exitosar");
x++;
}
void main()
{ setup_timer_2 (T2_DIV_BY_16, 255, 16);
enable_interrupts (INT_TIMER2);
enable_interrupts (GLOBAL);
while(x!=5); //espera por una interrupcion
disable_interrupts (global);
2. printf ("FIN");
while (1); }
a) TMR2 interrumpe cada 65.5 milisegundos.
b) TMR2 interrumpe cada 4.0 milisegundos.
c) TMR2 interrumpe cada 56.2 milisegundos
d) TMR2 interrumpe cada 16.3 milisegundos
8. La frecuencia FPWM máxima posible en un PIC16F877 operando con un cristal de 20 MHz y
Peescalador=1 es:
a) 1 MHz.
b) 1 KHz.
c) 250 KHz.
d) 5.0 MHz.
9. El segmento de código siguiente:
char c;
if (!ADFM) c=ADRESH;
else
{ c=ADRESH;
c=c<<6;
c=c | (ADRESL >>2);
}
a) Coloca en la variable c los 8 bits menos significativos del resultado de la conversión ADC.
b) Coloca en la variable c los 6 bits más significativos del resultado de la conversión ADC.
c) Coloca en la variable c los 8 bits más significativos del resultado de la conversión ADC.
d) Ninguna de las anteriores.
10. Considere el siguiente segmento de programa:
int suma (int a, int b) //esta funcion suma a+b.
{ int resultado;
resultado =a+b;
// return resultado;
}
void main (void)
{ int valor=0;
//printf ("Imprime la suma de dos numeros nr");
valor=suma(6,120); // se llama a la función suma
printf("La suma es: %dnr", valor);
while(1); }
El programa imprime en pantalla:
a) La suma es: 126
b) La suma es: 0
c) La suma es: %126
d) La suma es: %nr
11. El contenido de la localidad MIREG en SRAM del PIC 16F877 después de ejecutar:
MIDATO EQU .12
MIREG EQU 0x30
FACTOR EQU .16
MOVLW MIDATO
ADDLW FACTOR
MOVWF MIREG
es:
a) 0x1C b) 0xC1 c) 0x3C d) 0xC3
12. El estado de las banderas C y Z después de ejecutar
3. MOVLW 0xFF
ADDLW 1
es:
a) C=1, Z=1 b) C=1, Z=0 c) C=0, Z=1 d) C=0, Z=0
13. Considere el lazo repetir
…….
REPETIR NOP
DECFSZ CNT, F
GOTO REPETIR
FIN GOTO FIN
Inicialmente con que valor debe cargarse la variable CNT para que la instrucción NOP
se ejecute 256 veces.
a) 256 b) 255 c) 0 (cero) d) 1 (uno)
14. El PIC 16F877 opera con un cristal de 4 MHz. DELAY=4ms. El siguiente segmento de
programa genera una onda cuadrada simétrica en RC0.
BCF TRISC,0
AQUÍ BSF PORTC,0
CALL DELAY
BCF PORTC, 0
CALL DELAY
GOTO AQUÍ
La frecuencia de la onda cuadrada generada en la patita RC0 es:
a) 500 Hz b) 250 Hz c)125 Hz d) 60 Hz
15. El tiempo máximo programable para el desborde del “timer” WDT es:
a) 2304 ms b) 1152 ms c) 576 ms d) 144 ms
16. Considere el siguiente segmento de programa donde A es un arreglo de 5 enteros.
INT A [5]={1,2,3,4,5};
void main()
{ INT *P, I;
P=A+4;
FOR (I=0;I<5;I++)
PRINTF ("%u", *(P-I));
WHILE (1);
}
El programa visualiza en pantalla:
a) 1234 b) 12345c) 54321d) 4321
17. Considere el siguiente segmento de programa
void main (void)
{ int B[5]={5,10,15,20,25};
int *P;
P = B+2;
printf("%u",*P+3);
while (1);
}
El programa visualiza en pantalla
a) 20 b) 10 c) 15 d) 18
18. El programa principal invoca a la función incxx.
void incxx (int *n)
{*n+=10;}
void main()
{ int c[5]={1,2,3,4,5};
int *p;
incxx(c+1);
p=c+1;
4. printf ("%u",*p);
while(1);
}
El valor que printf visualiza en pantalla es:
a) 11 b) 12 c) 13 d) 2
19. Considere el programa siguiente
int a[5]={1,2,3,4,5};
void main(void)
{ int *p, i;
p=a;
for (i=0;i<5;i++)
printf (“??”,???); //para imprimir los elementos de a se requiere
} a) printf (“%d”,*p+i);
b) printf (“%d”,*(p+i));
c) printf (”*p+i”, %d);
d) printf (“*(p+i)”,%d);
20. Considere el programa siguiente:
void main()
{ int i;
for(i=1;1;i++)
{ if (getch()=='q') printf ("%unr", i);
else if (i==5) break;
}
printf ("FIN");
while(1);
}
Para imprimir FIN se requiere:
a) apretar q cinco veces seguido de otra tecla.
b) apretar q cuatro veces seguido de otra tecla.
c) apretar q tres veces seguido de otra tecla.
d) apretar q seis veces seguido de otra tecla.
*************************************************************************************
TABLA DE RESPUESTAS
#
Pregunta
a b c d
1 x
2 x
3 x
4 x
5 x
6 x
7 x
8 x
9 x
10 x
11 x
12 x
13 x
14 x
15 x
16 x
17 x
18 x
19 x
20 x