#include <16f877a.h> //pic a utilizar
#fuses XT,NOWDT,NOPROTECT,NOPUT //ordenes para el programador
#use delay(clock=20000000) //Fosc=2Mhz
#use standard_io(a)
#use standard_io(b)
void main()
{
int16 cont, time;
int digito1, digito2, digito3, digito4;
// 0 1 2 3 4 5 6 7 8 9
int display[10]={0x7e, 0x30, 0x6d, 0x79, 0x33, 0x5b, 0x5f, 0x70, 0x7f, 0x7b};
set_tris_a(0b00001);
set_tris_b(0);
while(input(PIN_A0)==0); //inicio...
for(cont=1; cont<=1000; cont++)
{
digito1=cont%10;
digito2=cont/10;
digito3=cont/100;
digito4=cont/1000;
output_high(PIN_A1);
output_b(display[digito1]);
delay_ms(5);
output_low(PIN_A1);
output_high(PIN_A2);
output_b(display[digito2]);
delay_ms(5);
output_low(PIN_A2);
output_high(PIN_A3);
output_b(display[digito3]);
delay_ms(5);
output_low(PIN_A3);
output_high(PIN_A4);
output_b(display[digito4]);
delay_ms(5);
output_low(PIN_A4);
if((cont>=0)&&(cont<=100))
time=200;
if((cont>100)&&(cont<=200))
time=180;
if((cont>200)&&(cont<=300))
time=160;
if((cont>300)&&(cont<=400))
time=140;
if((cont>400)&&(cont<=500))
time=120;
if((cont>500)&&(cont<=600))
time=100;
if((cont>600)&&(cont<=700))
time=80;
if((cont>700)&&(cont<=800))
time=60;
if((cont>800)&&(cont<=900))
time=40;
if((cont>900)&&(cont<=1000))
time=20;
delay_ms(time);
}
}
wenassss.... primero que nada miraria la sentencia while(input(PIN_A0)==0);Es exactamente lo mismo.
no se escribe asi....
solo escribe while(!input(PIN_A0))
de esa forma el buqcle se petetira mientras PIN_A0 de como valor logico un 0...
y while(input(PIN_A0)) significa que se repetira el bucle while mientras PIN_A0 sea =1
Muchas gracias por la ayuda Suky! :)
Ya me estoy metiendo en el mundo de las interrupciones y los timer...empece con programitas muy basicos para ver como se comportan y como se habilitan/deshabilitan los flags, y te digo que estoy aprendiendo!!!
Tengo pensado usar dos timers en el programa: el TIMER0 para contabilizar los 10 segundos y el TIMER1 para refrescar los displays y las luces q tengo que manejar, que te parece?
No bien avance con el codigo lo pego!
Un abrazo, gracias por la explicacion.
:lol: