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. Tiempo de ejecución del código, si fosc=20MHz: L1 banksel 0 movlw H'15' movwf 0x20 nop nop decfsz 0x20,F goto L1 nop bsf PORTB,0 a) b) c) d) 4’5µs 18’0µs 13’2µs Ninguno de los anteriores 5. Señalar la afirmación correcta, al ejecutar el siguiente código: org 0 bsf STATUS,RP0 clrf TRISC bcf STATUS,RP0 clrf PORTC incf PORTC,F movlw 0xF8 andwf INTCON,F movlw 0x88 iorwf INTCON,F sleep nop clrf PORTC a) El contenido del puerto C cambia cada vez que cambia RB7/PG0, y pasa modo de bajo consumo b) Los 8 bits del puerto C son limpiados al cambiar RB4, y pasa a modo de bajo consumo c) Se queda en modo de bajo consumo, solo hasta que se resetea el microcontrolador d) Ninguna de las anteriores es correcta 2. ¿A qué dirección salta el código al ejecutarse? 6. Se tiene un PIC sobre una placa impresa. En el siguiente programa aparece un problema, que está comentado. ¿Cómo se puede solucionar? org 0x17FE movlw 0xFF movwf PCLATH goto 0x52C a) b) c) d) clrf PORTB bsf STATUS,RP0 movlw 0xDF andwf TRISB,F bcf STATUS,RP0 bsf PORTB,5 btfss PORTB,5 call ERROR_PORTB5 ... 0x052C 0x1F2C 0x1D2C Ninguna de las anteriores 3. ¿Qué rango de registros borra el siguiente código? L1 FIN a) b) c) d) movlw 0x90 movwf FSR movlw 0x80 movwf STATUS movf FSR,W xorlw 0xF0 btfsc STATUS,Z goto FIN clrf INDF incf FSR,F goto L1 ... ;continua resto 0x190 a 0x1EF 0x090 a 0x0EF 0x010 a 0x07F Ninguna de los anteriores rlf 0x8F,F rlf 0x1F,W rlf ADCON1,F Ninguna de las anteriores ;PORTB<5>=1 ;Si PORTB<5>!=1 ; ERROR en PORTB<5> ;continua resto Nunca puede aparecer el problema Substituir movlw 0xDF y andwf TRISB,F por bcf TRISB,5 Conectando en RB5 una capacidad a masa, para evitar transitorios Ninguna de las anteriores respuestas es cierta 7. Se desea implementar con un PIC un sistema que usa un reloj de tiempo real, para controlar con exactitud la hora de encendido y apagado de un conjunto de luces, de forma que el resto del tiempo el sistema esté en modo de bajo consumo. ¿Qué alternativa es válida para esta aplicación? 4. Se tiene en una dirección de la memoria de programa de un PIC16F877 el código $0D9F. ¿A qué nemotécnico puede corresponder? a) b) c) d) a) b) c) d) ;PORTB<7:0>=0 a) Conectar un cristal de 4MHz (y sus capacidades cerámicas asociadas) en los pines OSC1 y OSC2, y programar adecuadamente el PIC para que se despierte cada vez que desborde Timer0 b) Dejar sin conexión OSC1 y OSC2, y conectar un cristal de 32’768KHz (y sus capacidades cerámicas asociadas) en los pines T1OSO y T1OSI. Programar adecuadamente el PIC para que se despierte cada vez que desborde Timer1 c) Conectar una resistencia y una capacidad en la pata OSC1 para obtener una fOSC conocida, y programar adecuadamente el PIC para que el WDT despierte al µC cada cierto intervalo de tiempo preciso d) Ninguna de las anteriores 8. Se tiene un PIC con un reloj implementado con un cristal de 1MHz. El siguiente programa debe ejecutar una rutina de servicio de interrupción cada segundo (con una muy pequeña tolerancia menor de 10µs). ¿Cuáles son los valores valorX, valorY adecuados? org 0 goto MAIN org 4 goto CADA_1s MAIN clrf INTCON movlw 0x30 movwf T1CON clrf TMR1L clrf TMR1H movlw 0x0B movwf CCP1CON movlw valorX movwf CCPR1L movlw valorY movwf CCPR1H bcf PIR1,CCP1IF bsf STATUS,RP0 bsf PIE1,CCP1IE bcf STATUS,RP0 movlw 0xC0 iorwf INTCON,F bsf T1CON,TMR1ON ... CADA_1s ... bcf PIR1,CCP1IF ... retfie a) b) c) d) 10. ¿Qué instrucciones se debe colocar en XXXXXX y en YYYYYYY para que se ejecute correctamente el código? cblock 0x50 DATO1,DATO2 endc org 0 ... L1 ;Resto de codigo ;Resto de codigo ;Resto de codigo valorX=D’18’, valorY=D’122’ valorX=D’238’, valorY=D’133’ No se puede hacer tal como está el resto de código Ninguna de las anteriores 9. El siguiente programa no se ensambla debido a un error. ¿Cómo se puede solucionar sin afectar el funcionamiento del programa? PUERTOB macro P1 movlw P1*2 movwf 0x20 L1 movf 0x20,W movwf PORTB decfsz 0x20,F goto L1 endm org 0 clrf PORTB bsf STATUS,RP0 clrf TRISB bcf STATUS,RP0 PUERTOB 0x10 PUERTOB 0x15 a) Substituir movlw P1*2 y movwf 0x20 por las cuatro sentencias: movf P1,W y movwf 0x20 y bcf STATUS,C y rrl 0x20,F b) Substituir PUERTOB 0x10 y PUERTOB 0x15 por las seis sentencias: movlw 0x10 y movwf P1 y call PUERTOB y movlw 0x15 y movwf P1 y call PUERTOB c) Substituir goto L1 por las dos sentencias: movlw 5 y subwf PCL,F d) Ninguna de las anteriores L2 L3 ;Resto de código movf DATO1,W subwf DATO2,W XXXXXX goto L1 call IGUALES ;Ejecuta si DATO1=DATO2 goto L3 YYYYYY goto L2 call MAYOR_DATO1 ;Ejecuta si DATO1>DATO2 goto L3 call MAYOR_DATO2 ;Ejecuta si DATO1<DATO2 nop a) XXXXXX=btfss STATUS,Z b) XXXXXX=btfss STATUS,Z c) XXXXXX=btfsc STATUS,Z d) Ninguna de las anteriores A YYYYYY=btfsc STATUS,C YYYYYY=btfss STATUS,C YYYYYY=btfss STATUS,C B C D 1 2 3 4 5 6 7 8 9 10 Nombre:_______________________________________ DNI:________________