switch sorunu ve floating type

Başlatan target, 25 Aralık 2006, 11:15:40

target

arkadaşlar c ile 8051 proğramlama uzerine çalışıyorum. timer/counter1 çıkışını sayaç olarak ayarladım, ve  kare dalga oluşturmak için buton kullandım(5V -10K- C1 pini-Buton-ground). fakat butona her bastığımda sayaç 3 , 5 bazende 10 sayı birten artıyor(lcd de değerini izliyorum) bunu engellemek için 100nFlık bir kapasitor koydum fakat ilk başta duzelir gibi olsada biraz sonra tekrar bozuldu, benim için tek tek artması önemli değil, her butona bastığımda eşit sayıda artış gormek istiyorum. bunu nasıl yapabilirim? (buton yerine switch desem daha doğru olurdu)

ikinci olarakta floating point üzerine çalışmam gerekiyor, özellikle c ile programlamada bu konuda bana kaynak gosterebilirmisin.

edit: 3. bir konu daha var kafamı karıştıran, 8051 ile grafik lcd sürüyorum, ve lcd yi disable yaptığımda backligt led inde sonmesini istiyorum, bu yuzden LCDnin enable pinini bir direnç aracılığıyla A pini (3.3 volt)girişine bağladım. 8051 in ilgili bacağını 0 yaptığımda LCD disable oluyor fakat backligt led yanmaya devam ediyor sanırım iligili pin 0 da olsa 1 de olsa akım çekilmeye devam ediyor, nedenini anlayamadım.

ise

butonların oksitlenmiş.  programı bas bırak şeklinde düzenlersen daha iyi olur.

if(Buton1) while(!Buton1);
veya

if(Buton1 && !Buton1Girdi)
{
Buton1Girdi=1;
...
...
}

if(!Buton1)
{
Buton1Girdi=0;
....
...
}

Bu şekilde yapabilirsin

target

ise hocam fakat ben sadece kare dalgayı saydırmak istiyorum.
void counter1_init (void)
{
    EA = 0;                

    TR1 = 0;       
	TL1 = 0x00;
	TH1 = 0X00;		
    TMOD &= 0x0F;          	  
    TMOD |= 0x50;    

    TR1 = 1;              
    EA = 1;             	
}


bu şekilde sayacı başlatıp, C1 pinine kare dalga üreteci olarakta 5v-buton-ground bağlıyorum.proğramda belli aralıklara sayaca bakıp kaça kadar saydığını görüp sayacı tekrar sıfırlıyorum. dediğiniz şekilde sayacı proğamla kontrol etmek mumkun mu? yada basit olarak kare dalga uretmek için başka ne kullanılabilir?(sinyal jenaratörüm yok  :( )

target

1. sorun: 10 ohm-buton-100nF-ground şeklinde baglayarak cozdum, şimdi her butona basışta counter , 1 artıyor.

3.sorun: lcd disable ettiğimi zannediyordum ama oyle değilmiş, yazılımda hata vardı düzelttim oldu(dataout.Pd2|=0xFB yazmışım, dogrusu tabiki &=  :oops: )

floating point içinde işlemleri daha çok yapabiliyorsam byte, olmadı int, oda olmadı long uzerinden yapmaya calısacam, sadece kullanıcı arayuzunde araya virgul koyarak noktalı sayı elde etme mantığındayım su an.