SEMC 06/06/2006 5. Se escribe la subrutina WAIT para producir un retardo de 5ms (aproximadamente), que es llamada desde el programa principal. Los valores a introducir en (1) y (2) son: #include "p16f876.inc" org 0 En todos las preguntas suponer un PIC16F876 (28pines), con reloj implementado con un cristal de 4MHz, y con todos los SFRs en el valor por defecto tras un POR, excepto si se impone otra condición en el enunciado de la pregunta concreta 1. ¿Cuántas palabras de memoria de programa ocupa el siguiente código? #include "p16f876.inc" org 0 RETARDO LOOP a) b) c) d) macro val banksel OPTION_REG movlw 0x05 movwf OPTION_REG banksel TMR0 movlw 0x100-(val/D'64') movwf TMR0 bcf INTCON,T0IF movlw D'2' btfss INTCON,T0IF subwf PCL,F endm banksel 0x0 clrf INTCON ... ;resto programa call WAIT goto kk kk WAIT ;(1) ;(2) RETARDO D'10000' RETARDO D'10000' goto LOOP end 15 palabras 21 palabras 25 palabras Ninguno de los anteriores 2. El código de la pregunta anterior se usa para producir un retardo. ¿Cuál es el retardo aproximado desde la instrucción (1) hasta la siguiente instrucción después de (2)? a) 9,9 ms b) 6,4 ms c) 10 us d) 6 us 3. Si se usa el CCP1 para generar un PWM, la frecuencia mínima (diferente de cero) del PWM será: a) 244 Hz b) 3,9 KHz c) 65,5 KHz d) Ninguno de los anteriores 4. Si se substituye el cristal de 4MHz por uno de 20MHz, la frecuencia mínima del PWM será ahora: a) No cambia b) Cinco veces más pequeña (se divide por 5) c) Cinco veces mayor (se multiplica por 5) d) Ninguna de las anteriores X1 a) b) c) d) ;Subrutina banksel T1CON movlw 0x31 movwf T1CON banksel PIR1 movlw XXX movwf TMR1H movlw YYY movwf TMR1L bcf PIR1,TMR1IF btfss PIR1,TMR1IF goto X1 return XXX=0x02 XXX=0xFD XXX=0x13 XXX=0xEC ;(1) ;(1bis) ;(2) ;(2bis) ;(3) YYY=0x71 YYY=0x8F YYY=0x88 YYY=0x78 6. La anterior subrutina no temporiza a veces los 5ms deseados. Este problema se solucionará: a) Eliminando la instrucción (3) b) Poniendo la instrucción (3) justo antes de la (1) c) Cambiando el orden, de las instrucciones (1) y (1bis) por el de las instrucciones (2) y (2bis) d) Habilitando las interrupciones 7. Se define una tabla de 25 elementos (de la ‘A’ a la ‘Z’) más un último elemento (de valor 0). El programa inicializa un LCD y los puertos usados, y pretende sacar por ésta los valores de la tabla. Sin embargo no funciona como se espera, y saca sólo hasta un valor de la tabla, que és: INDEX CARACT NEXT CONT LCD INITLCD TABLA #include "p16f876.inc" equ 0x20 equ 0x21 org 0x0 call INITLCD clrf INDEX movfw INDEX call TABLA ;(2) movwf CARACT movf CARACT,F btfsc STATUS,Z goto CONT incf INDEX,F call LCD goto NEXT ... ;continua 9. Señalar la afirmación incorrecta, sobre el convertidor A/D a) El convertidor A/D puede terminar una conversión mientras el PIC está dormido b) Si inmediatamente después de finalizar la conversión de un canal, se empieza a realizar una nueva conversión de otro canal, la lectura de esta última conversión puede ser incorrecta c) Los canales configurados como analógicos, no pueden usarse como puertos digitales de salida d) Alguna de las anteriores es falsa 10. Señalar la afirmación incorrecta, sobre la memoria EEPROM y FLASH a) Si en la palabra de configuración WRT=1, un programa ejecutado en el PIC, y que se encuentra almacenada en la memoria de programa FLASH, puede auto-modificarse b) La memoria EEPROM de datos no se borra al apagar el PIC c) Si en la palabra de configuración CPD=0, la memoria EEPROM puede modificarse por el programa ejecutado por el PIC d) Cada vez que se borra y graba una palabra de datos en EEPROM, el PIC queda parado sin poder ejecutar nuevas instrucciones, durante unos 8ms ;Subrutina escribe a LCD el carácter contenido en CARACT ... ;Subrutina inicializa LCD y puertos ... org 0xFA addwf PCL,F retlw 'A' retlw 'B' retlw 'C retlw 'D' retlw 'E' retlw 'F' retlw 'G' retlw 'H' retlw 'I' ... retlw 'Z' retlw 0 ;(1) Tabla de 25+1 elementos ('A'-'Z' y 0) ;Elemento 0 ;Elemento 1 ;resto de elementos de la tabla ;Elemento 24 ;Ultimo elemento de valor 0 end a) b) c) d) Escribe hasta la ‘F’ Escribe hasta la ‘E’ Escribe hasta la ‘D’ Ninguna de las anteriores 8. El anterior problema se puede solucionar: a) substituyendo (1) por org 0x100 b) substituyendo (1) por org 0x1000 y añadiendo pagesel 0x1000 y pagesel 0x0 justo antes y después respectivamente de la instrucción (2) c) Las dos anteriores d) Ninguna de las dos anteriores A 1 2 3 4 5 6 7 8 9 10 B C D X X X X X X X X Nombre:_______________________________________ X X DNI:________________