Problemas al realizar un conteo

#1
hola a todos

tengo que realizar un proyecto para ingresar edad para ello utilizo 2 pulsadores para realizar el incremento y decremento de la edad pero quiero que empiece desde 18 hasta el 80 el problema es que tanto incremento como decremento solo llegan a 255 y no se que pueda ser espero alguien me pueda asesorar y ayudarme a resolver este problema

codigo:
Código:
#include <16f877a.h>              
#use delay(clock=4000000)   
#fuses xt,nowdt,noprotect     
#byte portd=6                      
#include <lcd.c>                
int valor=0;

void main(void)
{
lcd_init();                             
lcd_putc(" Entrenador\n");        
lcd_putc(" Inteligente");              
delay_ms(2000);                 
lcd_putc("\f");                     
lcd_putc("Ingresar Edad\n");         

while(true)
{

if(input(pin_A0)==0)  
{
valor++;                       
delay_ms(500);       

if(valor>=80)              
{                            
valor=0;
}
}
if(input(pin_A1)==0)   
{
valor--;                         
delay_ms(500);       

if(valor==0)          
{                    
valor=80;
}
}
lcd_gotoxy(2,2);                    
lcd_putc(" ");                         
printf(lcd_putc,"%3U",valor);       
}
}
 
Última edición por un moderador:
#2
Según entendí, puede ser así:
PHP:
void main (void)
{
   int8 edad = 18;
   lcd_init();                                              
   lcd_putc("\fIngresar Edad\nEdad:");         

while(true)
{
   if(!input(PIN_A0))  
   {                             
      if(edad > 79) edad = 17;
      edad++;
      delay_ms(500);
   }
   
   if(!input(PIN_A1))   
   {     
      if(edad < 19) edad = 81;          
      edad--;
      delay_ms(500);
   }
   
   lcd_gotoxy(6,2);                                           
   printf(lcd_putc,"%2u",edad);       
   }
}
 
#3
Según entendí, puede ser así:
PHP:
void main (void)
{
   int8 edad = 18;
   lcd_init();                                              
   lcd_putc("\fIngresar Edad\nEdad:");         

while(true)
{
   if(!input(PIN_A0))  
   {                             
      if(edad > 79) edad = 17;
      edad++;
      delay_ms(500);
   }
   
   if(!input(PIN_A1))   
   {     
      if(edad < 19) edad = 81;          
      edad--;
      delay_ms(500);
   }
   
   lcd_gotoxy(6,2);                                           
   printf(lcd_putc,"%2u",edad);       
   }
}
si asi es muchas gracias ya entendi como tenia que hacerle era desde el INT=18 desde ahi puedo poner mi comienzo
 
#4
Creo que tienes error de sintaxis, no coloques sentencias if dentro de otra sentencia if, y tienes error al comparar la variable valor con 0 y 80.
Preba esto,
Código:
...
while(true) {
if(input(pin_A0)==0) {
valor++;
delay_ms(500);
}
if(input(pin_A1)==0) {
valor--;
delay_ms(500);
}
if(valor>=80) valor=80;
if(valor<=0) valor=0;
...
 
#5
hola a todos, tengo un problema similar espero y alguien me pueda ayudar, estoy iniciando en lo que es la programación en lenguaje C con MikroC for Pic...Estoy tratando de hacer una barra de leds con el pic16f628a y estoy utilizando el registro de desplazamiento 74HC164...La primera secuencia que estoy tratando de hacer es que los leds prendan uno por uno, después de que prendan todos se apaguen y vuelva iniciar....pero no lo hace se apagan todos pero ya no vuelve iniciar espero y alguien pueda checar mi código y pueda decirme cual es el error, aquí les adjunto mi código de antemano gracias
Código:
int cont1;

void main() {
CMCON=0x07;           //Comparadores analogicos deshabilitados
TRISB=0;
TRISA=1;
RB0_bit=1             //Envia dato a registro de desplz.

while (1){
RB1_bit=0;            //Señal de relog
Delay_ms(200);
RB1_bit=1;
cont1++;              //Incr en una unidad
if(cont1>=9){
RB2_bit=1;
Delay_ms(30);
RB2_bit=0;
cont1=0;
}
}
}
tambien les adjunto la simulacion
 

Adjuntos

Última edición:

Temas similares

Arriba