⚡ Descuentos en cursos en video - Lleva tu aprendizaje técnico al siguiente nivel y aprovecha precios especiales antes de que termine la oferta. 🔥 Aprovechar oferta ahora 🔥
Microcontroladores y sistemas digitales

Microcontroladores Contador 0-99 Con botones ascendente y descendente

Robot
Robot
2
hace 5 años
hace 5 años
#include <16f887.h> #fuses hs,wdt #use delay(clock=8000000) #byte trisb=0x86 #byte trisc=0x87 #byte trisd=0x88 #byte portb=0x06 #byte portc=0x07 #byte portd=0x08 byte display[10]={0x7B,0x0A,0xB3,0x9B,0xCA,0xD9,0xF9,0x0B,0xFB,0xDB}; byte display_2[10]={0x7B,0x0A,0xB3,0x9B,0xCA,0xD9,0xF9,0x0B,0xFB,0xDB}; int8 a; int8 b; void main(){ trisd=0x00; trisc=0xff; trisb=0x00; inicio: portd=display[0]; portb=display_2[0]; while(true){ if (bit_test(portc,1)==1){ delay_us(100); a++; p1: if(bit_test(portc,1)==1){ portd=display[a]; goto p1; } } if(a==10){ a=0; b++; portb=display_2[b]; } if((b==10)||(bit_test(portc,2)==1)){ a=0; b=0; goto inicio; } } } Se regresa a cero y no marca decenas, ayudaa
Jose Perez Perez
hace 5 años
hace 5 años
Buenas Noches, hiciste la simulaci&oacute;n o la prueba fue fisicamente? tienes un diagrama de flujo del programa?
Robot
Robot
2
hace 5 años

simulada,

Responder
Robot
Robot
2
hace 5 años

Pero lo que pasa es que regresa a cero y hay problemas con las decenas

Responder
Jose Perez Perez
hace 5 años

Prueba con este codigo, lo modifique para que pare en 99
#include <16f887.h>
#fuses hs,wdt
#use delay(clock=800000)
#byte trisb=0x86
#byte trisc=0x87
#byte trisd=0x88
#byte portb=0x06
#byte portc=0x07
#byte portd=0x08
byte display[10]={0x7B,0x0A,0xB3,0x9B,0xCA,0xD9,0xF9,0x0B,0xFB,0xDB};
byte display_2[10]={0x7B,0x0A,0xB3,0x9B,0xCA,0xD9,0xF9,0x0B,0xFB,0xDB};
int8 a;
int8 b;
int8 c;
void main(){
trisd=0x00;
trisc=0xff;
trisb=0x00;
c=0;
inicio:
portd=display[0];
portb=display_2[0];
while(true){
if (bit_test(portc,1)==1){
delay_us(100);
if(c==0)
{a++;}
else
{portb=display_2[b];}

Responder
Jose Perez Perez
hace 5 años

p1:
if(bit_test(portc,1)==1){
portd=display[a];
goto p1;
}
}
if(a==10){
a=0;
if(b<=9)
{b++;}
portb=display_2[b];
}
if((b==10)||(bit_test(portc,2)==1)){//ANTES b==10
a=9;//b=0
b=9;//a=0
c=1;
goto inicio;
}
}
}

Responder
Reparaciones similares solucionadas

¿Conoces una solución?

¡Aprende a reparar con estos cursos YoReparo!

4.93
(14)

Curso Reparación de Equipos de Audio de Alta Fidelidad

Maximiliano Resch
$ 60 USD
$ 20 USD
4.64
(11)

Curso Electrónica para Reparación de Placas

Santiago Cediel
$ 29 USD
$ 11 USD
4.64
(45)

Curso Tecnología Inverter - Fabricación de probadores y herramientas

Yamil Alarcón
$ 240 USD
$ 40 USD
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos?
Regístrate gratis