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
El Timer 1 como Contador/Temporizador
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="Cesareus, post: 1249718, member: 481174"] Hola a todos, estoy experimentando para hacer un temporizador al que se le pueda programar el tiempo de temporizado y el tiempo de encendido y apagado del dispositivo acoplado al microcontrolador. Estoy usando un 16f886, no tengo experiencia en el uso de los timer y evidentemente no me esta funcionado bien el programex, seguramente he obviado algunas cosas. Paso el programa por acá y adjuntos los archivos del compilador PCW y el esquema de proteus. Desde ya gracias por su ayuda y saludos a todos. cuando funcione y pula un poco el programa a Counter y a BLLCD los voy a usar para apagar el backlight del lcd. [CODE]#include <16F886.h> #device adc=8 #fuses INTRC_IO,WDT,PUT,MCLR,NOPROTECT,NOCPD,NOBROWNOUT #fuses NOIESO,NOFCMEN,NOWRT,NODEBUG,NOLVP #use delay(clock=4M) #define use_portb_lcd TRUE #include <lcd.c> #define SW1 PIN_A1 //PORTA RA1 #define SW2 PIN_A2 //PORTA RA2 #define SW3 PIN_A3 //PORTA RA3 #define SW4 PIN_A4 //PORTA RA4 #define SW5 PIN_A5 //PORTA RA5 #define bomba PIN_C4 //PORTA RC4 #define BLLCD PIN_C3 //luz backlight #use fast_io(A) // Configuración rápida del puerto A #use fast_io(B) // Configuración rápida del puerto B #use fast_io(C) // Configuración rápida del puerto C //******* Variables *******// int min=0, seg=0, tempo=10, onoff=10,suma=0, cont=0, counter=0; #int_TIMER1 void temp1s(void) { cont++; if (cont==2) { seg++; cont=0; } set_timer1 (3036); if (seg==59) { seg=0; min++; } } // ************** Programa Principal ************** // void main() { tempo=10; onoff=10; suma=0; set_tris_a(0x3E); set_tris_b(0x00); set_tris_c(0x00); setup_timer_1 (T1_INTERNAL | T1_DIV_BY_8); set_timer1 (3036); enable_interrupts(INT_TIMER1); enable_interrupts(global); lcd_init (); // Inicializa la libreria para manejar el LCD. output_high(BLLCD); printf ( LCD_PUTC, "\f" ); // Limpia la LCD. lcd_gotoxy(1,1); printf(lcd_putc,"Config Inicial"); delay_ms(500); while(true){ lcd_gotoxy(1,2); printf(lcd_putc,"TEMPO:%d",tempo); lcd_gotoxy(9,2); //Acomoda cursor LCD printf(lcd_putc,"onoff:%d",onoff); if(!input(SW1)){ tempo--; output_high(BLLCD); counter=0; } if(!input(SW2)){ delay_ms(1); tempo++; output_high(BLLCD); counter=0; } if(!input(SW3)) { delay_ms(1); onoff--; output_high(BLLCD); counter=0; } if(!input(SW4)) { delay_ms(1); onoff++; output_high(BLLCD); counter=0; } if(!input(SW5)) break; } while(true) { lcd_gotoxy(1,2); printf(lcd_putc,"Tempo:%d",tempo); lcd_gotoxy(9,2); printf(lcd_putc,"off:%d:",onoff); lcd_gotoxy(1,1); printf(lcd_putc,"min:%d:",min); if (min==tempo) { output_high(bomba); suma= min+onoff; lcd_gotoxy(8,1); printf(lcd_putc,"Bomba on"); lcd_gotoxy(1,1); printf(lcd_putc,"min:%d ",min); } if (min==suma) { output_low(bomba); lcd_gotoxy(8,1); printf(lcd_putc,"Bomba off ",); lcd_gotoxy(1,1); printf(lcd_putc,"min:%d:",min); min = 0; } delay_ms(200); counter++; } }[/CODE] [/QUOTE]
Verificación
Responder
Foros
Diseño digital
Microcontroladores y sistemas embebidos
El Timer 1 como Contador/Temporizador
Arriba