hola necesito de su ayuda como hacer para concatenar el contador con el ciclo activo, no se me ocurre como hacer , subo el código , gracias
[
#include <16f886.h>
#device ADC=10
#use delay(internal = 8MHz)
#define LCD_DATA_PORT getenv("SFR:PORTC")
#include <flex_lcd.c>
#define LCD_RW_PIN PIN_C3
#define pin_decr PIN_a4
#define pin_incr PIN_a5
float conteo = 0;
int16 cont_r = 0, retardo;
int16 cont3;
int8 ciclo_activo=1;
void establecer_ciclo (int8 ciclo)
{
set_pwm1_duty(ciclo);
}
void mostrar_conteo (float conteo)
{
if(conteo < 10)
{
lcd_gotoxy(11,1);
printf(lcd_putc,"V:%0.1f ", conteo);
}
else
{
lcd_gotoxy(11,1);
printf(lcd_putc,"V:%0.1f ", conteo);
}
}
void voltimetro(void)
{
retardo = 150;
if(!input_state(pin_decr))
{
while(!input_state(pin_decr))
{
ciclo_activo --; // Disminuir el ciclo activo.
if (ciclo_activo <= 1) ciclo_activo = 0;
establecer_ciclo(ciclo_activo);
cont_r ++;
if(cont_r > 9) // Si "cont_r" llega a 10, se reduce el retardo.
retardo = 50;
else
retardo = 250;
conteo -= 0.1;
if(conteo <= 0)
{
conteo = 0;
cont_r = 0; // Para evitar el desborde por mantener el pulsador presionado.
}
mostrar_conteo(conteo);
delay_ms(retardo);
}
cont_r = 0; // Limpiar "cont_r" si no se entra al bucle.
}
if(!input_state(pin_incr))
{
while(!input_state(pin_incr))
{
ciclo_activo ++; // Incrementar el ciclo activo.
establecer_ciclo(ciclo_activo);
cont_r ++;
if(cont_r > 9) // Si "cont_r" llega a 10, se reduce el retardo.
retardo = 50;
else
retardo = 250;
conteo += 0.1;
if(conteo > 17)
{
conteo = 17;
cont_r = 0; // Para evitar el desborde por mantener el pulsador presionado.
}
mostrar_conteo(conteo);
delay_ms(retardo);
}
cont_r = 0; // Limpiar "cont_r" si no se entra al bucle.
}
}
void energia()
{
if(input(pin_B4)==0){
cont3++;
delay_ms(1);
if (cont3 >10) {
write_eeprom(03,ciclo_activo );
delay_ms(50);
cont3 = 0;
}
}
}
void volta()
{
if(input(pin_B4)==0){
cont3++;
delay_ms(1);
if (cont3 >10) {
write_eeprom(04,conteo );
delay_ms(50);
cont3 = 0;
}
}
}
void main (void)
{
ciclo_activo =read_eeprom(03);
establecer_ciclo(ciclo_activo);
setup_ccp1(CCP_PWM);
setup_timer_2(T2_DIV_BY_4,249,1); // 1000 Hz. @ 4 MHz.
set_pwm1_duty(1); // Ciclo activo al mínimo
setup_adc_ports(sAN1|san3|san11);
setup_adc(ADC_CLOCK_INTERNAL);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
enable_interrupts(int_ext);
ext_int_edge(0,L_TO_H);
enable_interrupts(global);
#ZERO_RAM
lcd_init();
mostrar_conteo(conteo);
while (TRUE)
{
voltimetro();
}
}]