uControl
Mayo 24, 2013, 08:19:37 *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?

Ingresar con nombre de usuario, contraseña y duración de la sesión
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: Duda programacion en C, uso de if y else  (Leído 1750 veces)
0 Usuarios y 1 Visitante están viendo este tema.
WILSTi
PIC10F
*
Desconectado Desconectado

Sexo: Masculino
Mensajes: 14



« : Febrero 18, 2012, 09:19:09 »

buenas,
hoy vengo a pedir ayuda, necesito que alguien me ayude a corregir ese código lo que nececito del codigo es lo siguiente

un programa que sume dos números entre 0 y 1790
si la suma es mayor que 1000 encienda un  led conectado al pb5, si es menor hacer parapadear 4 leds del puerto d

por ahora lo que he hecho es esto


#include <stdio.h>
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
int a,b,suma;//declaracion de variables
suma = a + b;// suma de dos variables

if(suma>1000);
{
DDRB=0x20;
PORTB=0x20;
}
else(suma<1000);
{
DDRD=0x0F;
PORTD=0x0F;
_delay_ms(10);

}
}

el micro que uso es el atmega8 gracias!
« Última modificación: Febrero 18, 2012, 09:19:48 por Suky » En línea
Suky
**----- ^^ ------**
Moderador
dsPIC
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5345


Con Qt...


WWW
« Respuesta #1 : Febrero 18, 2012, 09:21:13 »

Y que piensas que esta mal? Ya lo has compilado? Le has hecho un debug?
En línea

el_vpi
Moderador
PIC18F
*****
Desconectado Desconectado

Mensajes: 1122



« Respuesta #2 : Febrero 18, 2012, 10:35:42 »

me parece que la comparacion puesta en el else esta de mas. Porque si es mayor, hace lo primero y sino, obvio que es menor, y hara lo segundo.
En línea
xinthauro
PIC10F
*
Desconectado Desconectado

Mensajes: 28


« Respuesta #3 : Febrero 19, 2012, 01:46:49 »


no conozco mucho de los avr, pero bajo ese código no va a parpadear nada bajo las condiciones que quieres o te piden.

la siguiente parte de código no es que este mal escrito; pero de seguro esta lejos de lo que quieres conseguir; pues la sección de código que le sigue siempre se ejecutara,
if(suma>1000);
{
DDRB=0x20;
PORTB=0x20;
}

debes eliminar el punto y coma
if(suma>1000)
{
DDRB=0x20;
PORTB=0x20;
}

y coincido la comparación en el else no va, ademas del punto y coma
« Última modificación: Febrero 19, 2012, 01:54:01 por xinthauro » En línea
Leon Pic
Moderador
dsPIC
*****
Desconectado Desconectado

Sexo: Masculino
Mensajes: 5107


Cumulonimbus


WWW
« Respuesta #4 : Febrero 19, 2012, 10:20:58 »

Yo veo una sola condición que no se cumplirá, cuando suma sea igual a 1000.

La instrucción DDR, ¿configura los pines como salida? Si es así, no es necesario colocarlo dentro de una comparación o loop o una tarea repetitiva. Si estos pines van a tener una sola configuración, para ahorrar trabajo y tiempo al procesador, configurarlo antes para que solo se haga una vez.
En línea

Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.
jim_17
PIC10F
*
Desconectado Desconectado

Mensajes: 47


« Respuesta #5 : Febrero 19, 2012, 01:19:08 »

El programa que has hecho no hace nada.

1- no has configurado los valores de las variables a, b.

2- no has realizado ningun tipo de bucle (para el parpadeo por ejemplo).

3- no has hecho parpadear los 4 leds.

De manera orientativa podrias hacer algo parecido a esto:

#include <stdio.h>
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{

/* Cambia estos valors para modificar el resultado de salida */
unsigned int a = 600;  
unsigned int b = 800;

unsigned int suma = 0;

DDRB = 0x20; // Config PORTB PIN 5 como salida

/* Ahora aqui haz un bucle si quieres */

while (1){
suma = a+b;

if (suma>1000) {
PORTB = 0x20; // Enciende el led
}else{
    PORTB = 0x00;
    _delay_ms(1000);
    PORTB = 0x0F;
    _delay_ms(1000);
}

} // End while

} // End main
« Última modificación: Febrero 19, 2012, 06:44:19 por jim_17 » En línea

Share the world !

JIM17 Blog's

http://jimjim17.blogspot.com
gargolan
Amigo de uControl
PIC10F
******
Desconectado Desconectado

Sexo: Masculino
Mensajes: 91



WWW
« Respuesta #6 : Febrero 21, 2012, 02:01:08 »

Fundamental aprender detalles del lenguaje les dejo un link.
Sobre sentencias de control.
http://www.elrincondelc.com/cursoc/cursoc7.html#condicion

Curso C general en Español.
http://www.elrincondelc.com/cursoc/cursoc.html

Saludos.
En línea
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.18 | SMF © 2011, Simple Machines
SMFAds for Free Forums
XHTML 1.0 válido! CSS válido!
Página creada en 0.087 segundos con 28 consultas. (Pretty URLs adds 0.01s, 3q)
loggkey