TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Kamus23 en 03 de Julio de 2011, 20:07:43
-
jejejeje en verdad nose si esto lo puedo hacer o no... pero me esta dando problemas.. es algo asi... cada vez q alla un pulso alto en el pin RC2 entonces leo el valor del ADC, y lo guardo en una array o vector...
luego cuando desactivo el PIN RC0 entonces en la LCD deberia ver los diferentes valores de ADC que e guardado
#include <16f873A.h> //PIC A USAR
#fuses XT,NOWDT,NOPROTECT,NOLVP
#device adc=10 //Usa resolución de 8 bits
#include <math.h> //PARA OPERACIONES MATEMATICAS
#include <string.h> // para cadenas y otras cosas
#use delay(clock=20000000) //CRISTAL A UTILIZAR
#use standard_io(b)
#define use_portb_lcd //selecciono puerto b para el LCD
#include <LCD.c> //CONTROLADOR DEL LCD
//#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) //configurar el puerto serial
#define inicio PIN_C0
#define valvula PIN_C1
#define pulso PIN_C2
int16 temp1;
float temp;
char n;
float temporal[]="";
void main()
{
set_tris_c(0x05);// 00000101
// VARIABLES A USAR
output_c(0);
n=0;
lcd_init(); //INICIALIZA EL LCD
lcd_putc(" CONTROL VOLTAJE"); //IMPRIME EN PANTALLA
lcd_gotoxy(7,2); //COLOCA EL CURSOR EN COLUMNA 7 FILA 2
lcd_putc("ON - OFF"); //IMPRIME EN PANTALLA
delay_ms(1000); //ESPERA 5 SEGUNDOS
lcd_putc("\f"); //LIMPIA PANTALLA
inicio1:
while(input(inicio)){
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(RA0_RA1_ANALOG_RA3_REF);// INDICA RA0 Y RA1 ANALOGO CON REFERENCIA A RA3
// Setup_adc_ports(RA0_ANALOG_RA3_REF); //PONE PUERTO RA0 ANALOGO
set_adc_channel(0); // INDICA EL PIN A LEER RA0
delay_us(20);
if (input(pulso)){
n=n+1;
temp1=read_adc(); //LEE EL VALOR DEL PIN
temp=(0.002929 *temp1);
temporal[n]=temp;
lcd_gotoxy(1,1); //COLOCA EL CURSOR EN COLUMNA 1 FILA 1
lcd_putc("VOLTAJE..."); //IMPRIME EN PANTALLA
lcd_gotoxy(4,2); //COLOCA EL CURSOR EN COLUMNA 4 FILA 2
printf(lcd_putc," T=%f C",temp); //MUESTRA EN EL LCD EL VALOR DE TEMPERATURA
delay_ms (1);
}
}goto inicio2;
inicio2:
do{
n=n-1;
lcd_gotoxy(4,2);
printf(lcd_putc," T=%f C",temporal[n]); //MUESTRA EN EL LCD EL VALOR DE TEMPERATURA
delay_ms(2000);
}while(n>0);
}
PD: busque y busque en google y en el foro :mrgreen: :mrgreen: pero no consigue mucha info
-
Si se puede crear, pero hay que definir su tamaño. O sea float Valores[10].
Saludos!
-
osea que ajuro tengo q definir su tamaño?? lastima... bueno jejej gracias entonces sera asi...
-
El tipo de inicializacion q usaste solo es valido para arreglos de chars (strings). Podes hacer un array de float como dijo suky, o si lo queres hacer de forma dinamica, podes usar la funcion malloc.
#include <stdlibm.h>
...
...
float *temporal;
temporal=malloc(10*sizeof(float));Podes cambiar ese 10 por cualquier valor, inclusive una variable. Despues si queres liberar ese espacio de memoria, lo podes hacer con free()
saludos!!