Upload
mabenra
View
52
Download
0
Embed Size (px)
Citation preview
COMPONENTES ELECTRÓNICOS -- ENUNCIADOS DE EJERCICIOS 1
EJERCICIO 6.1
Escribir un programa que sume dos valores inmediatos (p.e. los decimales 12 y 7)
EJERCICIO 6.2
Escribir un programa que resuelva la ecuación: (A + B) - C
EJERCICIO 6.3
Escribir un programa que sume dos números de 16 bits A y B.
EJERCICIO 6.4
Escribir un programa que reste dos números, A - B, de 16 bits cada uno.
EJERCICIO 6.5
Escribir un programa que compare dos números A y B. Si son iguales, el resultado
debe ser 0. Si A > B, el resultado debe ser la diferencia A - B, y si A < B el
resultado debe ser la suma A + B.
EJERCICIO 6.6
Escribir un programa para almacenar el valor 33 en 15 posiciones contiguas de la
memoria de datos, empezando en la dirección 0x30
EJERCICIO 6.7
Escribir un programa que convierta un número de 8 bits, escrito en binario
natural, en su equivalente en BCD.
EJERCICIO 6.8
Escribir un programa que convierta un número de 4 bits escrito en binario natural
en su equivalente en código Gray.
EJERCICIO 7.1
Escribir un programa que lea y obtenga en dos de los LEDs conectados al puerto
B, el estado lógico que presentan los pulsadores conectados a los terminales RA4 y
RB0, como indica la figura:
EJERCICIO 7.2
Escribir un programa que cuente el número de veces que se pulsó la tecla
conectada al terminal RA4 y que saque ese valor en binario natural por el Puerto
COMPONENTES ELECTRÓNICOS -- ENUNCIADOS DE EJERCICIOS 2
B. Este ejercicio se realizará como práctica de laboratorio con el hardware ICD-2, por
tanto, sólo se utilizarán los bits RB0 a RB3 que son los que tienen conectados diodos
LED para su observación. Como consecuencia, el contador es de 4 bits: de 0 a 15.El
esquema que tenemos en la placa ICD-2 es:
EJERCICIO 7.3
Escribir un programa que, dependiendo del estado de dos interruptores
conectados a RA4 y RB0, presente en el puerto D diferentes funciones lógicas cuya
tabla de verdad es:
RA4 RB0 RD7 RD6 RD5 RD4 RD3 RD2 RD1 RD0
0 0 1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1 0 1
1 0 0 0 0 0 1 1 1 1
1 1 1 1 1 1 0 0 0 0
EJERCICIO 8.1
Se desea generar un dado electrónico basado en un MCU PIC. Para ello se conecta un
display de 7 segmentos de cátodo común a los terminales del puerto D de un PIC
16F877A, como indica la figura. El oscilador es de cristal de 4 MHz. Escribir un
programa que active el dado al apretar un pulsador conectado a RA4 y que ilumine un
número aleatorio al apretar un pulsador conectado a RB0.
índice
COMPONENTES ELECTRÓNICOS -- ENUNCIADOS DE EJERCICIOS 3
EJERCICIO 8.2
Escribir un programa que ilumine los LEDs conectados al puerto D según las
siguientes especificaciones:
- Inicialmente aparecen parpadeando los LED; si se aprieta un pulsador
conectado a la patilla RA4 se produce un desplazamiento de derecha a
izquierda o de izquierda a derecha en función de las veces que se pulse RA4.
Dicho desplazamiento debe comenzar al soltar el pulsador.
- En todo momento, en el instante en que se aprieta el pulsador conectado a
la patilla RB0, se pasa al parpadeo inicial.
La frecuencia del oscilador es de 4 MHz.
EJERCICIO 8.3
Obtener el código de la tecla que se pulsa en un teclado estándar conectado al
puerto B de un microcontrolador PIC 16F873, como indica la figura.
EJERCICIO 8.4
Se desea que al apretar el pulsador conectado a RA4 parpadeen los 8 LEDs
conectados en cátodo común a los 8 terminales del puerto D de un
microcontrolador PIC 16F877A (ver figura). Dicho parpadeo debe de
interrumpirse durante unos instantes si se aprieta el pulsador conectado al
terminal RB0. Inicialmente, los LEDs están apagados. El oscilador es de 4MHz.
COMPONENTES ELECTRÓNICOS -- ENUNCIADOS DE EJERCICIOS 4
EJERCICIO 9.1
Escribir un programa que realice un parpadeo de 160 ms en el encendido/apagado
de ocho LEDs conectados en cátodo común al Puerto D de un microcontrolador
PIC 16F877A operando en modo XT con un oscilador de 4 MHz.
EJERCICIO 9.2
Debido a un accidente de circulación se han colocado cuatro señales luminosas a cada
lado de la calzada para que sirvan de advertencia a los conductores que circulan por esa
ruta (ver figura). El control del encendido/apagado se realiza mediante un
microcontrolador PIC 16F877A y unos drivers conectados a los terminales del puerto D,
como indica la figura.
El sistema debe arrancar con todas las lámparas apagadas. Al apretar el pulsador
conectado a RA4, debe comenzar la siguiente secuencia de luces: L0, L2, L4, L6, L1,
L3, L5 y L7, es decir, primero las de la derecha y luego las de la izquierda. Al finalizar
la secuencia, el ciclo debe repetirse indefinidamente. El oscilador es XT de 4 MHz y el
ciclo completo debe durar (aproximadamente) 1 segundo.
No es necesario refrescar el WDT (perro guardián) y, si se utilizan interrupciones, no es
necesario salvar registros mientras se atienden.
EJERCICIO 9.3
Una variedad del ejercicio anterior consiste en hacer que las luces se enciendan por
parejas y en secuencia, es decir, L0 y L1, después L2 y L3 apagándose L0 y L1, después
L4 y L5 apagándose L2 y L3, y finalmente L6 y L7 apagándose L4 y L5, para
posteriormente repetirse el ciclo. Para dar tiempo a ser observadas, el ciclo de encendido
desde que se enciende la pareja L0 - L1 hasta que vuelve a encenderse debe ser de
(aproximadamente) 0,5 seg.
COMPONENTES ELECTRÓNICOS -- ENUNCIADOS DE EJERCICIOS 5
EJERCICIO 9.4.-
Una variedad del ejercicio 9.3 es la siguiente: que cuando cada pareja de lámparas se
encienda no se apague la anterior. Cuando finalice la temporización de L6/L7 (con las
otras 6 lámparas también encendidas), deben apagarse todas un tiempo y comenzar de
nuevo el ciclo.
No es necesario refrescar el WDT (perro guardián) y, si se utilizan interrupciones, no es
necesario salvar registros mientras se atienden.
EJERCICIO 9.5
Mediante un microcontrolador PIC 16F84 operando en modo RC con un oscilador de 4
MHz, se desea controlar una máquina taladradora con las siguientes especificaciones:
- Al apretar el pulsador de arranque conectado al terminal RA0 se inicia el ciclo
de funcionamiento con un descenso rápido del taladro.
- Cuando la parte inferior del portabrocas activa el sensor conectado al terminal
RA2 (pone RA2 a "0"), se activa un relé que hace que la broca gire.
Simultáneamente el descenso del taladro debe ser lento.
- Cuando la parte inferior del portabrocas activa el sensor conectado al terminal
RA3 (pone RA3 a "0"), se considera que la pieza está taladrada y el taladro debe
subir con rapidez manteniendo el giro de la broca.
- Cuando el taladro en su regreso alcanza el final de carrera que está conectado al
terminal RA1 (pone RA1 a "0") debe detenerse la subida del taladro y
COMPONENTES ELECTRÓNICOS -- ENUNCIADOS DE EJERCICIOS 6
desactivarse el relé del giro de la broca. Además, debe activarse una señal
acústica que avise del fin de la operación.
- El nuevo ciclo comienza al apretarse de nuevo el pulsador de arranque
EJERCICIO 9.6
Para una determinada aplicación se necesita que los 8 segmentos de un display
conectado al puerto D de un microcontrolador PIC 16F877A parpadeen
simultáneamente con una frecuencia de 1 Hz (aproximadamente), es decir, 0,5
segundos encendidos y 0,5 segundos apagados. El display debe iniciarse apagado y el
parpadeo debe comenzar al apretar un pulsador conectado al terminal RA4, como indica
la figura. El parpadeo debe detenerse al apretar otro pulsador conectado al terminal RB0
(ver figura). La inicialización del sistema se consigue mediante otro pulsador conectado
a la patilla MCLR (que no se analizará).
Escribir un programa en ensamblador que cumpla las especificaciones sabiendo que el
oscilador es de tipo XT de frecuencia 4 MHz y que los dos pulsadores no pueden
apretarse a la vez. No es necesario refrescar el perro guardián y, si se utilizan
interrupciones, no es necesario salvar registros mientras se atienden.
COMPONENTES ELECTRÓNICOS -- ENUNCIADOS DE EJERCICIOS 7
EJERCICIO 9.7
Se necesita que al apretar un pulsador conectado al terminal RB0 de un
microcontrolador PIC 16F877A, un diodo LED conectado al terminal RD3 parpadee
con una frecuencia de 0,1 seg, es decir, 0,1 seg encendido y 0,1 seg apagado. El
parpadeo debe detenerse al apretar otro pulsador conectado a RA4. El oscilador es de
cristal de cuarzo de 4 MHz.
Se pide: escribir un programa fuente que realice dicha función.
EJERCICIO 9.8
Para una determinada aplicación se necesita un cronómetro que debe medir 3 segundos
y que debe operar de la siguiente forma: inicialmente, en el display debe verse el
número "3". Al apretar el pulsador conectado a RA4, y transcurrido 1 segundo, debe
aparecer el número "2". Transcurrido otro segundo, debe aparecer el número "1" y
transcurrido otro segundo el número "0". Cuando debería verse un hipotético "-1", el
display debe apagarse y quedar dispuesto para un nuevo ciclo.
Para realizarlo se utilizará un microcontrolador PIC 16F877A con un oscilador de tipo
XT de frecuencia 4 MHz. El display es de cátodo común, es decir, los segmentos a, b,
c,....g se encienden con "1" en los respectivos terminales RD.
EJERCICIO 9.9
Para el circuito de la figura, inicialmente el display debe aparecer apagado. Al apretar el
pulsador conectado a RA4 deben ir apareciendo sucesivamente las letras: "H", "O", "L",
"A" de forma que cada una de ellas se vea durante un cuarto de segundo
(aproximadamente). Tras aparecer la A, deben volver a verse las letras indefinidamente.
COMPONENTES ELECTRÓNICOS -- ENUNCIADOS DE EJERCICIOS 8
El oscilador es de cristal y de frecuencia 4 MHz. El display es de cátodo común (los
segmentos a, b, c,....g se encienden con "1" en los terminales RD). Se pide: escribir un
programa fuente que cumpla con las especificaciones indicadas.
EJERCICIO 9.10
Se desea gobernar con un microcontrolador PIC 16F877A las luces situadas sobre el
techo de una UVI móvil (L0, L1, ... L7). Estas luces están conectadas a través de sendos
drivers a los terminales del PORTD de forma que L0 está conectada a RD0, L1 está
conectada a RD1 y así sucesivamente hasta L7 que está conectada a RD7, como indica
la figura. Se pretende que al accionar el pulsador conectado a la patilla RA4 del
microcontrolador (ver figura), las luces se activen iluminándose en primer lugar L0 y L4
y una vez transcurridos aproximadamente 0,2 segundos L0 y L4 se apaguen y se
iluminen L1 y L5 para que, transcurridos otros 0,2 seg, se apague L1 y L5 y se
enciendan L2 y L6. Tras otros 0,2 seg. deben apagarse L2 y L6 y encenderse L3 y L7 de
forma que, tras estar otros 0,2 seg. encendidas, el ciclo finaliza y deben encenderse de
nuevo L0 y L4. De esa forma se obtiene, mirando desde encima, un efecto visual de
movimiento de luz de izquierda a derecha en las luces delanteras y de derecha a
izquierda en las traseras. El oscilador es de cristal de cuarzo de 4 MHz.
EJERCICIO 9.11
Se desean controlar con un microcontrolador PIC 16F877A los intermitentes de un
automóvil (los dos de la derecha conectados a RD0 y RD6 y los dos de la izquierda
conectados a RD1 y RD7 a través de sendos buffers) de forma que el ciclo completo
dure 0,5 seg., es decir, aproximadamente 0,25 seg. encendidos y 0,25 seg. apagados. La
pareja de intermitentes que está parpadeando en cada momento viene determinada por
una señal digital exterior al microcontrolador que está conectada a RA4 de forma que si
COMPONENTES ELECTRÓNICOS -- ENUNCIADOS DE EJERCICIOS 9
esa señal es un "1" funcionan los intermitentes de la izquierda y si es "0" los de la
derecha. El oscilador es de cristal de cuarzo de 4 MHz.
EJERCICIO 9.12
Se desean controlar con un microcontrolador PIC 16F877A las luces de avería de un
automóvil (los cuatro intermitentes parpadeando simultáneamente) de forma que el ciclo
completo dure 1 seg., es decir, aproximadamente 0,5 seg encendidos y 0,5 seg apagados.
El parpadeo debe comenzar cuando se apriete un determinado pulsador. El oscilador es
de cristal de cuarzo de 4 MHz.
EJERCICIO 9.13
Para una determinada aplicación es necesario generar un parpadeo de aproximadamente
0,5 seg. (es decir, 0,25 seg. encendido y 0,25 seg. apagado) en un diodo LED conectado
al terminal RB3 de un microcontrolador PIC 16F877A, como se puede observar en la
figura.
Dicho parpadeo debe comenzar al apretar el pulsador conectado al terminal RA4. Una
vez comenzado, el pulsador no tiene ningún efecto. El parpadeo se detiene mediante
otro pulsador externo conectado al terminal de reset (MCLR) del PIC (no se analizará).
La frecuencia del oscilador es de 1 MHz.
Se pide: escribir un programa en ensamblador que realice las especificaciones indicadas.
EJERCICIO 9.14
Se desea que cuando se apriete el pulsador conectado a RA4 (ver figura), los LEDs
conectados a PORTD, inicialmente apagados, realicen el barrido indicado, es decir,
primero enciende el conectado a RD7, tras 20 ms enciende también el conectado a RD6,
y así sucesivamente hasta encender los 8. Una vez transcurridos otros 20 ms (con todos
encendidos) deben comenzar a apagarse sucesivamente, es decir, en primer lugar se
apaga el conectado a RD7, tras 20 ms se apaga también el conectado a RD6 y así
sucesivamente hasta apagarse todos. Transcurridos otros 20 ms, el sistema debe repetir
el ciclo si se aprieta de nuevo el pulsador. El oscilador es de 4 MHz.
COMPONENTES ELECTRÓNICOS -- ENUNCIADOS DE EJERCICIOS 10
Se pide: escribir un programa en ensamblador que realice las secuencias mencionadas.
No es necesario refrescar el WDT y, si se utilizan interrupciones, no es necesario salvar
registros mientras se atienden.
EJERCICIO 9.15
Se desea que, cuando se apriete el pulsador conectado a RA4, en los LEDs conectados a
PORTD se realice un barrido de izquierda a derecha seguido de otro de derecha a
izquierda, como indica la figura, estando en cada situación durante 30 ms. Una vez
finalizadas las dos secuencias, el sistema debe quedar listo para repetirlas si se vuelve a
apretar el pulsador. El oscilador es de 4 MHz. Inicialmente las luces deben estar
apagadas.
Se pide: escribir un programa en ensamblador que realice las secuencias mencionadas.
No es necesario refrescar el WDT y, si se utilizan interrupciones, no es necesario salvar
registros mientras se atienden.
COMPONENTES ELECTRÓNICOS -- ENUNCIADOS DE EJERCICIOS 11
EJERCICIO 9.16
El marcador de un polideportivo donde se juega a baloncesto necesita añadir un display
de 7 segmentos donde se observe la cuenta descendente de las décimas de segundo,
como indica la figura. Dicho display estará controlado por un PIC 16F877A, cuyo
oscilador es de 4 MHz, y se activará cuando la cifra de menos peso de los segundos
alcance el valor "0", momento en el cual envía un "0" al terminal RA4 del PIC.
Transcurrida una décima de segundo, debe verse en el display el "9". Transcurrida otra
décima de segundo, el "8" y así sucesivamente. Cuando en el display aparezca el "0",
debe permanecer encendido y simultáneamente activarse una bocina (indicadora del
final del partido) conectada al terminal RD7 durante 1 segundo, transcurrido el cual, el
sistema debe quedar listo para un nuevo ciclo.
EJERCICIO 9.17 Para aumentar el nivel de ventas, un comerciante presenta una oferta que anuncia mediante un
rótulo rectangular de 1m x 0,8 m situado en el escaparate de su tienda. Para atraer la atención,
coloca en el perímetro del rótulo 8 bombillas cuyo encendido/apagado se controla (a través de
drivers) con los terminales del PORTD de un MCU PIC 16F877A, como indica la figura.
Se desea que inicialmente las 8 bombillas estén apagadas y que, al apretar el pulsador
conectado a RA4, se enciendan en secuencia y en el sentido de las agujas del reloj durante 0,5
seg. aproximadamente (deben llegar a encenderse las 8 bombillas). Una vez finalizado este
ciclo, deben parpadear las 8 simultáneamente durante unos 4 seg. aproximadamente,
COMPONENTES ELECTRÓNICOS -- ENUNCIADOS DE EJERCICIOS 12
transcurridos los cuales volverán a la secuencia y así indefinidamente. El oscilador es de cristal
de 4 MHz.
Se pide: escribir un programa en ensamblador que efectúe dicho control. No es
necesario refrescar el WDT y, si se utilizan interrupciones, no es necesario salvar
registros mientras se atienden.
EJERCICIO 9.18
Se desea realizar un pequeño juego electrónico basado en un MCU PIC 16F877A. Se
trata de acertar qué LED, de entre los cuatro conectados a los terminales RB3 - RB0,
permanecerá encendido tras apretar el pulsador conectado al terminal RA4. En cada
momento debe de estar encendido solamente uno de esos cuatro LEDs, pero el jugador
no debe de saber cuál es. Al apretar dicho pulsador, quedará encendido uno de ellos. La
frecuencia del oscilador es de 4 MHz.
EJERCICIO 9.19
Para una determinada aplicación es necesario cronometrar 4 segundos y la cuenta debe
observarse en 4 diodos LED conectados a los terminales RB3 - RB0 del puerto B de un
microcontrolador PIC 16F877A. Inicialmente, deben estar encendidos los 4 LEDs. Al
apretar el pulsador conectado a RA4, y transcurrido 1 segundo, debe apagarse el LED de
más peso, es decir, el conectado a RB3. Transcurrido otro segundo, debe apagarse
también el LED conectado a RB2. Transcurrido otro segundo, el conectado a RB1 y
transcurrido otro segundo deben quedar apagados los 4 LEDs. Tras otro segundo, el
sistema debe quedar dispuesto para un nuevo ciclo.
La frecuencia del oscilador es de 4 MHz.
COMPONENTES ELECTRÓNICOS -- ENUNCIADOS DE EJERCICIOS 13
EJERCICIO 9.20.- Se desea que cuando se apriete el pulsador conectado a RA4 se
realice un barrido de izquierda a derecha seguido de otro de derecha a izquierda, como
indica la figura, estando en cada situación durante 30 ms. Una vez finalizadas las dos
secuencias, el sistema debe quedar listo para repetirlas si se vuelve a apretar el pulsador.
El oscilador es de 4 MHz. Inicialmente las luces deben estar apagadas.
Se pide: escribir un programa en ensamblador que realice las secuencias mencionadas.
No es necesario refrescar el WDT y, si se utilizan interrupciones, no es necesario salvar
registros mientras se atiende