13
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

Ejer Todos

  • Upload
    mabenra

  • View
    52

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ejer Todos

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

Page 2: Ejer Todos

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

Page 3: Ejer Todos

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.

Page 4: Ejer Todos

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.

Page 5: Ejer Todos

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

Page 6: Ejer Todos

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.

Page 7: Ejer Todos

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.

Page 8: Ejer Todos

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

Page 9: Ejer Todos

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.

Page 10: Ejer Todos

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.

Page 11: Ejer Todos

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,

Page 12: Ejer Todos

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.

Page 13: Ejer Todos

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