En todos las preguntas suponer un PIC16F876 (28pines

Anuncio
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:________________
Descargar