CCS C ile 16f877A da key pad sorunu

Başlatan tamerugur, 08 Nisan 2012, 14:49:43

tamerugur

Arkadaşlar merhaba, çok acil bir key pad yapmam lazım, yaptığım key pad artık işimi görmüyor ve yazılımda tıkandım.

kısaca anlatayım,
ayarları gir butonuna basınca LCD de ayarları gir yazıyor, gerilim ayarla butonuna basınca gerilim=xx yazıyor. bu bilgiler eepromdan okunuyor.Arttır yada Azalt butonu ile değerler 1 arttıp yada azalıyor. "OK" butonuna basınca ayarlanan değer eeproma kaydediliyor.

Sorun-1: ben arttır yada azalt butonuna basınca değerler 1 değil 0.1 artıp yada azalmasını istiyorum ve girilen değerin eeproma o şekilde kaydedilmesini istiyorum beceremedim.

2. sıkıntımda zaman ayarlaya basınca lcd de "zaman=xx" yazıyor ve dakika cinsinden değerler arttı yada azalta basarak 1 değişiyor. "OK" butonuna basınca girilen değer eeproma kaydediliyor.
Sorun-2 ben bu zaman ayarını sadece dakika ve saniye cinsinden yapmak istiyorum ve zaman ayarla butonuna basınca "Zaman=xx:xx" şekline gelip ilk xx kısmı dakika digeri saniye olsun ve arttır yada azanlt butonuna basınca değerler 1 artsın yada azansın, OK butonuna basınca eeproma kaydedilsin.

yazdığım kodu ekliyorum düzeltmem ve eklemem gereken yeri yazarsanız çok sevinirim. Şimdiden teşekkür ederim. Saygılar.

unsigned long int v,tm,t1=15575,t0=61;
int8 ms=0,ms1=0;
unsigned int8 saniye=0,dakika=0,saat=0,saniye1=0,dakika1=0;
#int_timer0
void timer0_kesme()
{
   set_timer0(t0);
   ms1++;
   if (ms1==100)
   {
   ms1=0;
   saniye1++;
      if (saniye1==60)
      {
       saniye1=0;
       dakika1++;
      }
   }   
}
#int_timer1
void  timer1_kesme ()
{
    set_timer1(t1);   
    ms++;           
    if (ms==100)
    {
       ms=0;
       saniye++;
         if(saniye==60)
         {
         saniye=0;
         dakika++;
            if(dakika==60)
            {
               dakika=0;
               saat++;
               if(saat==24)
               {
                  saat=0;
               }
            }
         }
         
    }
}

void set()
{
bass:
      if(input(GERILIMAYAR)==1)
      {   
         delay_ms(10);         
         printf(lcd_putc,"\fGERiLiM AYARI ");
         delay_ms(1000);
         printf(lcd_putc,"\fGERiLiM=%u   ",read_eeprom(0));
         while(input(VOLTAYAR));
         delay_ms(10);
         
bas1:         
         if(input(ARTTIR)==1)
         {             
            delay_ms(10);
            v++;
            if(v>25)
            {
            v=0;
            }
            delay_ms(10);
            write_eeprom(0,v);           
            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fGERiLiM=%u   ",read_eeprom(0));             
            while(input(ARTTIR));
            delay_ms(10);
           
         }
         if(input(AZALT)==1)
         {
            delay_ms(10);
            v--;
            if(v==0)
            {
            v=25;
            }
            delay_ms(10);
            write_eeprom(0,v);
            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fGERiLiM=%u   ",read_eeprom(0));           
            while(input(AZALT));
            delay_ms(10);
         }
           
         if(input(OK)==1)
            {   
                delay_ms(10);                 
                printf(lcd_putc,"\fGERiLiM AYARLANDI ");
                delay_ms(1000);
                printf(lcd_putc,"\f");
                goto bass;
                while(input(OK));
                delay_ms(10);
            }
         
         goto bas1;
      }
     
        if(input(TIMER)==1)
      {   
         delay_ms(10);         
         printf(lcd_putc,"\fZAMAN AYARI ");
         delay_ms(1000);
         printf(lcd_putc,"\fZAMAN=%u   ",read_eeprom(1));
         while(input(TIMER));
         delay_ms(10);
         
bas3:         
         if(input(ARTTIR)==1)
         {             
            delay_ms(10);
            tm++;
            if(tm>250)
            {
            tm=0;
            }
            delay_ms(10);
            write_eeprom(2,tm);           
            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fZAMAN=%u   ",read_eeprom(1));             
            while(input(ARTTIR));
            delay_ms(10);
           
         }
         if(input(AZALT)==1)
         {
            delay_ms(10);
            tm--;
            if(tm==0)
            {
            tm=250;
            }
            delay_ms(10);
            write_eeprom(2,tm);
            lcd_gotoxy(1,1);
            printf(lcd_putc,"\fZAMAN=%u   ",read_eeprom(1));           
            while(input(AZALT));
            delay_ms(10);
         }
           
         if(input(OK)==1)
            {   
                delay_ms(10);                 
                printf(lcd_putc,"\fZAMAN AYARLANDI ");
                delay_ms(1000);
                printf(lcd_putc,"\f");
                goto bass;
                while(input(OK));
                delay_ms(10);
            }
         
         goto bas3;
      }
     
      if(input(SETT)==1)
         { 
            delay_ms(10);
            while(input(SETT));
            delay_ms(10);
            printf(lcd_putc,"\fV=%u     ",read_eeprom(0));
            printf(lcd_putc,"\nZAMAN=%udk    ",read_eeprom(1));
            delay_ms(2000);           
            return;
         }
           
      goto bass;
}

tamerugur

Yardımcı olabilecek kimse yokmu??? :( :( :(