Menú
Foros
Nuevos mensajes
Buscar en foros
Novedades
Nuevos mensajes
Nuevos recursos
Última actividad
Recursos
Últimas revisiones
Buscar recursos
Acceder
Registrarse
Novedades
Buscar
Buscar
Buscar sólo en títulos
De:
Nuevos mensajes
Buscar en foros
Menú
Acceder
Registrarse
Install the app
Instalar
Foros
Diseño digital
Microcontroladores y sistemas embebidos
Fuente con cronometro
JavaScript está desactivado. Para una mejor experiencia, por favor, activa JavaScript en el navegador antes de continuar.
Estás usando un navegador obsoleto. No se pueden mostrar este u otros sitios web correctamente.
Se debe actualizar o usar un
navegador alternativo
.
Responder al tema
Mensaje
[QUOTE="callecuatro1976, post: 1056121, member: 17716"] estoy armando esta fuente con cronometro con pic 16f883 lcd 4x16 funciona pero se tilda por momentos y se vuelve la cuenta lenta, subo el código en c [code]#include <16f883.h> #device ADC=10 #use delay (internal = 8MHz) #define use_portb_lcd true #fuses NOFCMEN, NOIESO,INTRC_IO,NOWDT,NOLVP,MCLR,NOPROTECT, #include <lcd420.c> #include <Button.c> #define pulsador pin_c3 int8 horas=0,minutos=0,segundos=0,milisegundos=0; #INT_TIMER1 void sid_Timer1 (void) { set_timer1(0xD8F0); // Recargar el Timer 1 para 10ms. @ 4MHz. if(++milisegundos > 99) // Incrementar "milisegundos" y Si "milisegundos" es mayor a 59... { milisegundos = 0; // Entonces limpiar "milisegundos" if(++segundos > 59) // Incrementar "segundos" y si "segundos" es mayor a 59... { segundos = 0; // Entonces limpiar "segundos" if(++minutos > 59) // Incrementar "minutos" y si "minutos" es mayor a 59... { minutos = 0; // Limpiar "minutos" if(++horas > 11) // Incrementar "horas" y si "horas" es mayor a 11... { horas = 0; // Limpiar "horas", "minutos" y "segundos" minutos = 0; segundos = 0; } } } } } void main(){ long int var1=0, var2=0; float valor,volt,valor2,amper; int1 flag = 0; int8 B0 = 0; int16 contador = 0; enable_interrupts(INT_TIMER1); enable_interrupts(GLOBAL); setup_adc_ports(sAN0|sAN3); setup_adc(ADC_CLOCK_INTERNAL ); //Se inicia la LCD lcd_init(); lcd_gotoxy(2,1); lcd_putc("Cargando datos"); delay_ms(1000); lcd_gotoxy(7,2); lcd_putc("LPK"); delay_ms(500); lcd_putc("\\f"); lcd_gotoxy(2,1); lcd_putc("Volt Amper"); delay_ms(1000); while (true) { set_adc_channel(0); delay_us(20); volt=0; for(var1=0;var1<500;var1++) { volt=volt+ read_adc(); delay_us(62); } valor = volt / 500; valor = valor * 50 / 1023; lcd_gotoxy(2,2); printf(lcd_putc,"%4.1f",valor); set_adc_channel(3); delay_us(20); amper=0; for(var2=0;var2<500;var2++) { amper=amper+ read_adc(); delay_us(62); } valor2 = amper / 500; valor2 = valor2 * 19 / 1023; lcd_gotoxy(11,2); printf(lcd_putc,"%4.1f",valor2); if (button(pulsador,0,255,10,B0,1)) // Si se presiona el pulsador... { while(!input(pulsador)) // Mientras esté pulsado... { ++contador; // Incrementar "contador" delay_ms(1); // Retardo de 1ms. if(contador == 3000) // Si "contador" llegó a 3000 (3 segundos)... { setup_timer_1(T1_DISABLED); // Deshabilitar Timer1 horas = 0; // Limpiar "horas" minutos = 0; // Limpiar "minutos" segundos = 0; // Limpiar "segundos" milisegundos = 0; // Limpiar "milisegundos" flag = 1; // Mantener "flag" en 1 (Para que el soltar el pulsador no avance el conteo) lcd_gotoxy(1,4); lcd_putc("00:00:00:00"); // Poner en ceros la pantalla. } } contador = 0; // Limpiar "contador" if(!flag) // Si "flag" = 0... { flag = 1; // Poner "flag" en 1 y setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); // Timer1 con sincronización interna y prescaler 1:1 set_timer1(0xD8F0); // Cargar el Timer 1 para 10ms. @ 4MHz. } else if(flag) // Pero si "flag" = 1... { flag = 0; // Poner "flag" en 0 y setup_timer_1(T1_DISABLED); // Deshabilitar Timer1 } } // Mostrar el tiempo en pantalla. lcd_gotoxy(1,4); printf(lcd_putc,"%02u:%02u:%02u:%02u",horas,minutos,segundos,milisegundos); } }[/code] ... [/QUOTE]
Verificación
Responder
Foros
Diseño digital
Microcontroladores y sistemas embebidos
Fuente con cronometro
Arriba