Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: sifirzero - 01 Ağustos 2021, 00:59:33

Başlık: keypad rakamlarnı sevensegment değer alamıyorum
Gönderen: sifirzero - 01 Ağustos 2021, 00:59:33
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.
Başlık: Ynt: keypad rakamlarnı sevensegment değer alamıyorum
Gönderen: sadogan - 01 Ağustos 2021, 01:26:17
output_b(display[c-48]);
Başlık: Ynt: keypad rakamlarnı sevensegment değer alamıyorum
Gönderen: sifirzero - 01 Ağustos 2021, 07:11:10
Alıntı yapılan: sadogan - 01 Ağustos 2021, 01:26:17output_b(display[c-48]);

O 48 in mantiği nedir kardesim
Başlık: Ynt: keypad rakamlarnı sevensegment değer alamıyorum
Gönderen: sifirzero - 01 Ağustos 2021, 09:32:13
kardeşim oldu ama nasıl old anlamadm. 48 ne işe yarıyor
Başlık: Ynt: keypad rakamlarnı sevensegment değer alamıyorum
Gönderen: RaMu - 01 Ağustos 2021, 09:51:58
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.
Başlık: Ynt: keypad rakamlarnı sevensegment değer alamıyorum
Gönderen: sifirzero - 01 Ağustos 2021, 12:41:18
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. 🤔🤔
Başlık: Ynt: keypad rakamlarnı sevensegment değer alamıyorum
Gönderen: sadogan - 01 Ağustos 2021, 14:16:09
Ascii de '0' = 0x30h = 48d
         '1' = 0x31  = 49d
48d cıkardıgında acii desimal formatındakı sayı 10 sayı sistemine dönüyor.
Başlık: Ynt: keypad rakamlarnı sevensegment değer alamıyorum
Gönderen: sadogan - 01 Ağustos 2021, 14:17:18
https://commons.wikimedia.org/wiki/File:ASCII-Table-wide.svg
buna bir göz at.
Başlık: Ynt: keypad rakamlarnı sevensegment değer alamıyorum
Gönderen: sifirzero - 01 Ağustos 2021, 15:23:48
Alıntı yapılan: sadogan - 01 Ağustos 2021, 14:17:18https://commons.wikimedia.org/wiki/File:ASCII-Table-wide.svg
buna bir göz at.

Saolsin kardesim arastirayim iyice. Tam anlayamadim
Başlık: Ynt: keypad rakamlarnı sevensegment değer alamıyorum
Gönderen: sifirzero - 01 Ağustos 2021, 17:38:10
C-48 yazinca neden ascii koddaki degerlerini basiyor onu anlayamadim. Mantiken c eksi 48 olmuyor mu.
Başlık: Ynt: keypad rakamlarnı sevensegment değer alamıyorum
Gönderen: sadogan - 01 Ağustos 2021, 22:21:04
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.
Başlık: Ynt: keypad rakamlarnı sevensegment değer alamıyorum
Gönderen: sifirzero - 02 Ağustos 2021, 00:10:18
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