pic16f877 + keypad + iki tane 7-segment (yardim edin)

Başlatan suleymanq, 06 Mayıs 2013, 17:42:36

mehmet

#30
Alıntı yapılan: suleymanq - 22 Ekim 2013, 21:15:13
günlük hayatımızda * ve # olarak adlandırdığımız iki tuş 'artır' ve 'azalt' olarak kullanmak istiyorum yani (tus=10 ise azalt) ve (tus=12 ise artır)
ıf(tus=10){portc bir azalt)
if(tus=12){portc bir artır}
Bunu nasıl yapabilirim?

Portc ye gonderilecek değer için bir genel değişken
tanımlayın. Öneğin:
------------------------------------------
unsigned char G_Degisken;
...
...
...

if(tus == 10) G_Degisken--;
if(G_Degisken <= 0) G_Degisken = 0;
if(tus == 12) G_Degisken++;
if(G_Degisken >= 99) G_Degisken = 99;
...
...
---------------------------------------------

Tabi tuşlar için debounce gecikmesi unutulmamalıdır...

Kolaylıklar...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

Mr.Java

Alıntı yapılan: mehmet - 24 Ekim 2013, 22:54:02
Portc ye gonderilecek değer için bir genel değişken
tanımlayın. Öneğin:
------------------------------------------
unsigned char G_Degisken;
...
...
...

if(tus == 10) G_Degisken--;
if(G_Degisken <= 0) G_Degisken = 0;
if(tus == 12) G_Degisken++;
if(G_Degisken >= 99) G_Degisken = 99;
...
...
---------------------------------------------

Tabi tuşlar için debounce gecikmesi unutulmamalıdır...

Kolaylıklar...


Aslında mehmet abim delay fonksyonları yerine switch case içerisinde atsak programları ve tuşlar basıldığında bir sayaç eklesek sayacın durumuna göre basılan  tuşları algılasak kodun tam çevrim süresinde daha az zaman harcıyor olmaz mıyız ?Hem bu sayede multitasking'de yapmış oluruz kanımca.

suleymanq

#32
Güzel güzel anlatıyorsunuz da biz yapamıyoruz :'(
Şöyle bir soru sorsam daha basit: kodun mevcut halini değiştirmeden bir ek ile yapılabilecek bir iş mi acaba bu?

şöyle birşey de denedim olmadı
char keypad_oku() 
{
  
   output_d(0x00);
   tus=input_d();
   
   if(tus == 10) keypad_oku()--;
   if(keypad_oku()<=0) keypad_oku() = 0;
   if(tus == 12) keypad_oku()++;
   if(keypad_oku() >= 99) keypad_oku() = 99;
     
   if(tus==11){k=0;reset_cpu();}
   return tus;
}