Foros del Web » Programación para mayores de 30 ;) » Programación General »

Convertir codigo de c++ a assembler

Estas en el tema de Convertir codigo de c++ a assembler en el foro de Programación General en Foros del Web. Hola a todos, tengo un problema para mi materia de microcontroladores que es el siguiente: Elaborar un programa que mida la frecuencia de una señal ...
  #1 (permalink)  
Antiguo 25/10/2012, 16:13
 
Fecha de Ingreso: octubre-2012
Mensajes: 1
Antigüedad: 12 años, 1 mes
Puntos: 0
Convertir codigo de c++ a assembler

Hola a todos, tengo un problema para mi materia de microcontroladores que es el siguiente:

Elaborar un programa que mida la frecuencia de una señal externa, ademas que genera una señal del doble de la frecuencia de entrada, utilizando el pin P1.6

La información se debe desplegar por medio de comunicación serial, a una velocidad de 1200bps (8N1). El cristal a utilizar será de 11.059MHz.


Además se debe encender un LED de color de acuerdo a lo siguiente:

Si la frecuencia medida es menor o igual a 100Hz, se enciende el LED VERDE

Si la frecuencia medida es mayor o igual a 300Hz, se enciende el LED
ROJO

De lo contrario, se enciende el LED AMARILLO.


Ejemplo:

Si la señal externa posee una frecuencia de 60Hz, en la Terminal Virtual se mostrará lo siguiente:

Frecuencia = 60Hz



Además se encenderá el LED VERDE y saldrá una onda cuadrada de 120Hz por el pin P1.6



NOTA:

No olvide configurar la velocidad en la terminal virtual a 1200bps.

Conecte la señal externa a alguna entrada del microcontrolador AT89C2051.

El osciloscopio sirve para ver la señal de entrada, si lo desean, lo pueden eliminar.

Los frecuencímetros se los utiliza para medir la frecuencia de entrada y de salida.


Para que aparezca un texto debajo de otro, utilice lo siguiente en el mensaje a enviar

mensaje: DB 'hola mundo',10,13,0

(10,13 son los códigos de Linefeed y Return), el 0 indica el fin de la cadena


Si este circuito se lo fuera a implementar, se debe conectar un cristal y un par de condensadores de 22pF.

Se que parte de la logica seria la siguiente:

if(pin>=100 && pin<=300)
{
if(pin==120)
{
//enciende led verde
//onda cuadrada de 120hz
}
//enciende led amarillo

}
else
{
if(pin<100)
{
//enciende led verde
}
else
{
//enciende led rojo
}
}

Pero obviamente no tengo los conocimientos para hacer la transformacion de c++ hasta assembler ademas de las interrupciones necesarias para lograr que enciendan los led's.

El trabajo debo entregarlo para mañana a medio dia de modo que cualquier tipo de ayuda que me puedan brindar seria bastante genial.
  #2 (permalink)  
Antiguo 26/10/2012, 13:11
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Convertir codigo de c++ a assembler

Ok, para eso necesitas un compilador para ese microcontrolador. Por ejemplo C51 de Keil.

Lo segundo es la lógica.

Para calcular la frecuencia tienes mas o menos este pseudo-código.
Código pseudocodigo:
Ver original
  1. ultimo_estado = PIN_DE_ENTRADA_DE_LA_SEÑAL
  2. while True:
  3.     estado_actual = PIN_DE_ENTRADA_DE_LA_SEÑAL
  4.     if estado_actual != ultimo_estado:
  5.         ultimo_estado = estado_actual
  6.         ultimo_contador_de_ciclos = contador_de_ciclos
  7.         contador_de_ciclos = 0
  8.         frecuencia_de_entrada = contador_de_ciclos / (frecuencia_del_micro / divisor_de_operaciones)
  9.         switch(frecuencia_de_entrada):
  10.             # Aqui la logica de los leds
  11.     if (ultimo_contador_de_ciclos / 2) == contador_de_ciclos:
  12.         toggle(PIN_DE_SALIDA_DE_SEÑAL)
  13.     contador_de_ciclos += 1

Entonces mas o menos esa sería la lógica.
  #3 (permalink)  
Antiguo 26/10/2012, 15:56
 
Fecha de Ingreso: octubre-2012
Ubicación: Montevideo, Uruguay
Mensajes: 2
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Convertir codigo de c++ a assembler

Capaz que lo que digo no te sirve de nada, no se nada de microcontroladores, pero, existen herramientas como el W32DASM que son desensambladores, te muestran el asm de cualquier .exe, sea este escrito en el lenguaje que sea ;)

Etiquetas: programa, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:00.