keypad rakamlarnı sevensegment değer alamıyorum

Başlatan sifirzero, 01 Ağustos 2021, 00:59:33

sifirzero

while (true)
{
c = kbd_getc();
delay_ms(1);
if(c != 0)
{
printf("\f%c",c);
output_b(display[c]);
delay_ms(100);
}
}

Merhaba arkadaslar buradaki c değirine herhangi bir rakam yazarsam sevensegment deger ookuyorum ama tuş takıma bastığımda değer okuyamıyorum. tuş takımını rs232 den ve lcd den deger okuyorum. bu konu hakkında yarımcı olurmusunuz.
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

sadogan


sifirzero

sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

sifirzero

kardeşim oldu ama nasıl old anlamadm. 48 ne işe yarıyor
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

RaMu

#4
kbd_getchar tuş takımından basılan rakamların Ascii karşılığını döndürüyor
1 için 0x31
2 için 0x32 gibi.
display () fonksiyonu dizisi 7 seg.te göstermek için rakamın 0~9 arası girilmesini istiyor.
Keypad okunan - 0x30 yaparsan display fonksiyonuna girilmesi gereken değeri buluyorsun.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

sifirzero

Alıntı yapılan: RaMu - 01 Ağustos 2021, 09:51:58kbd_getchar tuş takımından basılan rakamların Ascii karşılığını döndürüyor
1 için 0x31
2 için 0x32 gibi.
display () fonksiyonu 7 seg.te göstermek için rakamın 0~9 arası girilmesini istiyor.
Keypad okunan - 0x30 yaparsan display fonksiyonuna girilmesi gereken değeri buluyorsun.
Ramu kardesim ascii kod olarak devam ediyor ama c-48 48 den başla demek mi oluyor. 🤔🤔
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

sadogan

Ascii de '0' = 0x30h = 48d
         '1' = 0x31  = 49d
48d cıkardıgında acii desimal formatındakı sayı 10 sayı sistemine dönüyor.


sifirzero

sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

sifirzero

C-48 yazinca neden ascii koddaki degerlerini basiyor onu anlayamadim. Mantiken c eksi 48 olmuyor mu.
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

sadogan

#10
c=1;
c='1';
bunun farkını biliyormusun,
birisi onluk sistem de 1 diğeri  1 sayısının ascii formatta gösterimi yani 1+48 = '1'.
printf("\f%c",1+48); yaptığında ne yazıyor.
kullammakta olduugumuz decsimal  sayılarının ascii formatta karşılıkları kendisi deyil ,48 ile toplanmış hali.

Mesela 'A' nin ascii karşılığıda 65 dir. Tabloda hepsi var.
c=65;
printf("\f%c",c); yaptığında göreceksin.

sifirzero

Alıntı yapılan: sadogan - 01 Ağustos 2021, 22:21:04c=1;
c='1';
bunun farkını biliyormusun,
birisi onluk sistem de 1 diğeri  1 sayısının ascii formatta gösterimi yani 1+48 = '1'.
printf("\f%c",1+48); yaptığında ne yazıyor.
kullammakta olduugumuz decsimal  sayılarının ascii formatta karşılıkları kendisi deyil ,48 ile toplanmış hali.

Mesela 'A' nin ascii karşılığıda 65 dir. Tabloda hepsi var.
c=65;
printf("\f%c",c); yaptığında göreceksin.

Simdi anladim kardesim cok tesekkur ederim
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir