CCS C ile display uygulama lütfen yardım

hocam kusura bakmayın bir kaç gündür internetle başım belada idi
hocam arttırma işlemini butonlarla yapıp geri sayma işlemeini bir dakika ara ile yapmam gerekiyor sadece arttırma butonu olsa da olur eksiltmeye gerek yok arttırma butonu ile arttırıp sonra bir dakika ara ile geri sayacak . bunu tek basamaklı sayıda yazdım çalışıyor ancak iki basamaklı sayı olunca tarama yaptırınca işler karıştı Ze tr hocam yukarıda ki geri sayma işlemini butonla değilde bir dakika ara ile nasıl yapacağız burdada bir yardım edermisiniz teşekkür ederim.
Vurucu 05 başarılar dilerim evet sınav dönemi şimdi ilginize teşekkür ederim.

--------------------------------------------------------------

değerli ustalar tek haneli display uygulamada sorun yok ancak iki basamaklı sayılar da tarama işlemei yaptırmak zorunda kalınca işler karıştı izleyeceğim metodu söylermisiniz

#include "C:\Documents and Settings\skyvision\Belgelerim\CCS S DENEME\displayuygulama\16f877ikilidisplay\Yeni Klasör (2)\main.h"
#use fast_io(a)
#use fast_io(b)
#define display_1 pin_a0
#define display_2 pin_a1
#define arttir pin_a2
#define azalt pin_a3

char birler=0,onlar=0,sayi=0;
const int digit[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x6f};


void main()
{

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
set_tris_a(0xfc);
set_tris_b(0x00);
output_low(display_1);
output_low(display_2);




while(true)

{

birler=sayi%10;
onlar=sayi/10;
output_high(display_2);
output_b(digit[birler]);
delay_ms(5);
output_low(display_2);
output_high(display_1);
output_b(digit[onlar]);
delay_ms(5);
output_low(display_1);


if(input(arttir))

{
delay_ms(10);// buton arkını önlemek için gecikme
sayi++;
if(sayi==100)
sayi=0;
birler=sayi%10;
onlar=sayi/10;

while(input(arttir))

{

output_high(display_2);
output_b(digit[birler]);
delay_ms(5);
output_low(display_2);
output_high(display_1);
output_b(digit[onlar]);
delay_ms(5);
output_low(display_1);

}
}

if(input(azalt)&&(sayi!=0))

{
delay_ms(10);
sayi--;
if(sayi==100)
sayi=0;// sayi sıfır olmadığı sürece döngüyü işle
birler=sayi%10;
onlar=sayi/10;
while(input(azalt))

{

output_high(display_2);
output_b(digit[birler]);
delay_ms(5);
output_low(display_2);
output_high(display_1);
output_b(digit[onlar]);
delay_ms(5);
output_low(display_1);// BURAYA KADAR SORUN YOK BUNDAN SONRA ARTTIR VEYA AZALT BUTONLARI İLE SEÇTİĞİM RAKKAMDAN GERİYE BİRER DAKİKA ARA İLE SAYMASINI İSTİYORUM NE YAPMALIYIM.

}
}
while(sayi>0)

{
for(;sayi<=99;sayi--)// BURADA DENEMEDİĞİM KALMADI İF DÖNGÜSÜYLEDE FOR DÖNGÜSÜYLEDE ANCAK YA COK HIZLI SAYDIĞI İÇİN GÖREMİYORUM YADA TARAMA SÜRESİ KADAR GÖREBİLİYORUM YARDIMLARINIZI BEKLİYORUM
{

birler=sayi%10;
onlar=sayi/10;

output_high(display_2);
output_b(digit[birler]);
delay_ms(10);
output_low(display_2);
output_high(display_1);
output_b(digit[onlar]);
delay_ms(10);
output_low(display_1);

}
}

hocam B portu ikili displaye tamamı displaylerin besleme uçları A0 1. display A1 de ikinci display eğer olursa arttır butonu A2 eksilt butonu A3 ama azalt ve eksilt olmasada olur.
tek basamak sayılarda sorun yok ancak 99 dan geriye 1 er dakika ara ile saydırmak istediğimde sorun başlıyor acemi olduğum için size ancak anlatabildim cizemedim

yardımlarınızı bekliyorum
 
Moderatör tarafında düzenlendi:
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…