Escolar Documentos
Profissional Documentos
Cultura Documentos
33- Construir un programa que lea una entrada binaria de 4 bits y realice su correspondiente
conversión a código GRAY.
34- Desarrollar un programa que realice la conversión de código GRAY a código binario en 8 bits
35- Diseñe un contador binario de 0 a 12, de tal forma que se incremente cuando se pulsa la tecla A
y se decremento cuando se pulsa la tecla B. Si son pulsados simultáneamente las dos teclas, el
contador se resetea a cero.
36- Construya un programa que simule el comportamiento de un Flip Flop tipo JK. El
comportamiento de este dispositivo se puede observar en la siguiente figura. Para este caso, el Flip
Flop responde a su señal de reloj en los flancos de subida.
37- Diseñar un programa que realice el corrimiento de un cero lógico en el puerto B de tal manera
que la secuencia se repita indefinidamente. La secuencia debe ser mostrada a través de LEDs
colocados en dicho puerto. Usar arreglos para desarrollar este programa.
38- En una aplicación industrial, un cilindro (A) acerca hacia la derecha un soporte en el que hay
colocada una pieza de cobre en forma de “L”. Allí, dos cilindros le harán en cada cara una marca
por presión. Primero se la hace el vertical (B) y luego el horizontal (C). Hechas las dos marcas, el
cilindro grande hace retroceder el soporte con la pieza. Para realizar la detección de sus posiciones,
los movimientos extremos de cada cilindro tienen asociados unos sensores finales de carrera; la
secuencia solo empieza una vez ha sido pulsado el interruptor de START y necesariamente los
cilindros se encuentren en su posición inicio.
Diseñar un programa para el microcontrolador 16F887 capaz de atender los requerimientos de la
situación expuesta anteriormente. La siguiente figura apoya el proceso de la máquina.
/* El siguiente programa hace uso de un teclado matricial 4x4 y una LCD 16x2
para crear una calculadora basica (suma, resta, multiplicacion y division)
de nuemros enteros de 3 digitos
*/
#INCLUDE <16F887.H>
#FUSES NOWDT, NOPUT, INTRC_IO, NOMCLR, NOPROTECT, NOBROWNOUT,NOWRT
#USE DELAY(internal = 8MHZ)
#INCLUDE <LCD.C>
#INCLUDE <KBD4X4.C>
#USE FAST_IO(B)
void main()
{
// se inician las rutinas para el manejo de la LCD y el teclado
kbd_init();
lcd_init();
port_b_pullups(255);
//Presentacion inicial en la LCD
lcd_gotoxy(3,1);
lcd_putc("calculadora");
delay_ms(1000);
lcd_putc("\f"); //Borra la LCD
lcd_gotoxy(1,1);
lcd_putc("dato1= ");
lcd_gotoxy(1,2);
lcd_putc("dato2= ");
while(true)
{
tecla = kbd_getc(); // Es leido el teclado
if (tecla != 0) // Si hay tecla oprimida se procede a identificarla
{
switch(tecla)
{
case 'D': //letra D, tecla de suma
operador = 1; //indica que la operacion es una suma
break;
case 'C': //Letra C, Tecla de resta
operador = 2; //indica que la operacion es una resta
break;
case 'B': //letra B, Tecla de multiplicacion
operador = 3; //indica que la operacion es una multiplicacion
break;
case 'A': // Letra A, Tecla de division
operador = 4; //indica que la operacion es una division
break;
case 0x2A: // Simbolo *. representa el igual (=) de la calculadora
// Se identifica la operacion que se debe realizar con los datos
if (operador == 1) // se realiza la suma de dato1 y dato2
resultado = dato1 + dato2;
if (operador == 2) // se realiza la resta de dato1 y dato2
resultado = dato1 - dato2;
if (operador == 3) // se realiza la multiplicacion de dato1 y dato2
resultado = dato1 * dato2;
if (operador == 4) // se realiza la division de dato1 y dato2
resultado = dato1 / dato2;