contador 0 a 9999

camoterisimogr

Bovino adolescente
#1
pues aki pidiendo ayuda al corral ya que necesito hacer un contador de 0 a 9999
utilizando un pic 16f877a y 4 displays anodo comun, ademas que cuente con dos pulsadores uno para iniciar el conteo y otro para reiniciar
y el problema es al momento de ingresar los pulsadores
espero su ayuda


:mota:
 

p_s_maniac

Bovino adolescente
#3
un codigo sencillo para esto pero en lenguaje c (no creo q sea dificil traducirlo a basic)
antes deberas definir un vector llamado segs[] donde pongas la codificacion para cada numero de los displays de 7 segmentos donde seg[1] haga q en el display se vea el 1 etc
se pueden usar el puerto c como salida a los puertos y el puerto d como habilitacion de anodos y los primeros bits del puerto b como entradas pa tus dos botones
asumo que sabes como se inicializan los puertos y las variables asi q omito esa parte (y ademas no me acuerdo)
Código:
cont=0; //valor de 0 a 9999, variable int
start=0;
reset=0;
status=0;
num=0;
uni=0;
dec=0;
cen=0;
mil=0;
while(1)
{
//se extrae digito por digitoel contador
mil=cont/1000;
cen=(cont/100)%10;
dec=(cont/10)%10;
uni=cont%10
// va a empezar mostrando el cero e ira aumentando de acuerdo a las cvariables
PORTD=1; //se habilita el primerdisplay
PORTC=segs[uni];//se saca por el display la unidad
PORTD=2; //se habilita el segundodisplay
PORTC=segs[dec];//se saca por el display la decena
PORTD=4; //supongo ya se entiende....
PORTC=segs[cen];
PORTD=8; 
PORTC=segs[mil];
//
if (status==1)
 {
 cont++;
 if (cont>9999)
  {cont=9999;}
 }
start=PORTB&0x01;
reset=PORTB&0x02;
if(start==0x01)
 {
 status=1;
  }
if(reset==0x02)
 {
 status =0;
 cont=0;
 
 }
}
 
Arriba