Autor Tema: Presentar un valor de una funcion  (Leído 2023 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado balcab

  • PIC10
  • *
  • Mensajes: 4
Presentar un valor de una funcion
« en: 30 de Octubre de 2006, 09:10:20 »
Hola, bueno estoy intentando iniciarme en mundo de los pics y de la programacion en C. Solamente he programado en pascal, y me esto me esta costando mas de lo esperado.

Tengo montado el circuito de REDPIC "Lo mínimo para comunicarnos vía RS232", el montaje funciona bien.

//************************************************************
// Propósito:  Testea la UART a 9600 baudios
// Procesador: PIC16F876 con un crital de 4 MHz
// Hardware:   MAX232
// Software:  CCS PCM
//************************************************************
#include <16F876.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#use delay(clock=4000000)
#use rs232(baud=9600, bits=8, parity=E, xmit=pin_C6, rcv=pin_C7) //paridad even parity, 8 bits datos, y 2 bits stop
#include <STDLIB.H> //se incluye esta librería para poder generar un numero pseudo-aleatorio
#include <STRING.H>  //se incluye esta libreria para el manejo de cadenas
//#define RAND_MAX 50 //genera el numero aleatorio
#include <MATH.H>
temperatura(){ //calcula el valor de la temperatura entre 0.0ºC - +70ºC, resolucion 0.1ºC
   int temp;
   srand(70); //srand(n) genera el valor pseudoaleatorio entre 0 y n
   temp=rand();
   return temp;
}
void main() { //void main es el programa principal, llama a las demás funciones
   int temp;
   printf("PIC16F876A a la espera"); // Envío mensaje de "estoy vivo"

   while(true) {
   
     if (0x0D==getc()){ //0x0D es la tecla enter
        temp=temperatura();
        printf(temp);
     }
   }
}
//*******************************************

Bueno aqui pongo el código para que me digan los errores que tengo. Creo una funcion para que me genere un numero aleatorio, cuando pulse la tecla enter debería de devolverme ese valor y mostrarmelo en el hiperterminal.

Espero que me echen una mano para ver como llamo a la funcion.

SAlu2 y gracias.

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
Re: Presentar un valor de una funcion
« Respuesta #1 en: 30 de Octubre de 2006, 13:04:39 »
Hola

Yo preguntaría así:
Código: [Seleccionar]
if(kbhit()) //Si hay caracter en el buffer
{
dato=getc();
if (dato==0x0D){ //0x0D es la tecla enter
temp=temperatura();
printf(temp);
}
}
Para mi es mejor cargar lo que hay en el puerto en una variable y ya despues la manipulas a tu gusto. Espero te sirva.

Saludos
« Última modificación: 30 de Octubre de 2006, 13:06:48 por badtzdizzy »

Desconectado balcab

  • PIC10
  • *
  • Mensajes: 4
Re: Presentar un valor de una funcion
« Respuesta #2 en: 30 de Octubre de 2006, 14:16:06 »
Gracias por la ayuda, pero mi problema es que el dichoso pic no me muestra en el hiperterminal el valor de la función, solamente muestra el mensaje "PIC16F876A a la espera", y despues no hace nada mas.

Deberia mostrar un valor al pulsar la tecla enter?, si alguien pudiera darme una idea de cual puede ser el problema se lo agradecería.

SAlu2

Edito para decir que solucionado el problema, para representar el valor entero se hace así printf("%U", temp).

Tengo otro problema y es que la funcion temperatura debería generar un numero pseudoaletorio, es decir, siempre que pulso enter me devuelve el mismo valor. Solamente varía si desconecto el pic de la alimentacion y lo vuelvo a conectar, entonces me da otro valor.

¿Saben como se puede hacer para que se genere el numero aleatorio cada vez que pulse enter?
« Última modificación: 30 de Octubre de 2006, 19:52:18 por balcab »