Micc final feb04_2010_soluc

4

Click here to load reader

description

ESPOL

Transcript of Micc final feb04_2010_soluc

Page 1: Micc final feb04_2010_soluc

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 solamentec) 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/8d) 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_TIMER2void TIMER2_isr (void) {

printf ("Interrupcion exitosa\r"); 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);

Page 2: Micc final feb04_2010_soluc

printf ("FIN"); while (1); }

a) TMR2 interrumpe cada 65.5 milisegundos.b) TMR2 interrumpe cada 4.0 milisegundos.c) TMR2 interrumpe cada 56.2 milisegundosd) 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 \n\r"); valor=suma(6,120); // se llama a la función suma printf("La suma es: %d\n\r", valor);

while(1); }El programa imprime en pantalla:a) La suma es: 126b) La suma es: 0c) La suma es: %126d) La suma es: %nr

11. El contenido de la localidad MIREG en SRAM del PIC 16F877 después de ejecutar:MIDATO EQU .12MIREG EQU 0x30FACTOR EQU .16MOVLW MIDATOADDLW FACTORMOVWF MIREG

es:a) 0x1C b) 0xC1 c) 0x3C d) 0xC3

12. El estado de las banderas C y Z después de ejecutar

Page 3: Micc final feb04_2010_soluc

MOVLW 0xFFADDLW 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 NOPDECFSZ CNT, FGOTO REPETIR

FIN GOTO FINInicialmente 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,0AQUÍ BSF PORTC,0

CALL DELAYBCF PORTC, 0CALL DELAYGOTO 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 programavoid 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 pantallaa) 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;

Page 4: Micc final feb04_2010_soluc

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 siguienteint 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 ("%u\n\r", 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 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17 x18 x19 x20 x