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.
output_b(display[c-48]);
Alıntı yapılan: sadogan - 01 Ağustos 2021, 01:26:17output_b(display[c-48]);
O 48 in mantiği nedir kardesim
kardeşim oldu ama nasıl old anlamadm. 48 ne işe yarıyor
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.
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. 🤔🤔
Ascii de '0' = 0x30h = 48d
'1' = 0x31 = 49d
48d cıkardıgında acii desimal formatındakı sayı 10 sayı sistemine dönüyor.
https://commons.wikimedia.org/wiki/File:ASCII-Table-wide.svg
buna bir göz at.
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
C-48 yazinca neden ascii koddaki degerlerini basiyor onu anlayamadim. Mantiken c eksi 48 olmuyor mu.
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.
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