06/06/2006 En todos las preguntas suponer un PIC16F876

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