hyper uzerinden 1ms -10000ms deger nasil aldirabilirim?

Başlatan alexsi, 29 Mart 2008, 18:28:55

alexsi

pic konusunda yardima ihtiyacim var.
pic16F877,4mhz kristal,Rs232 max232
olay su;
program CCS C kullanilarak hyper terminal uzerinden
1ms -10000ms arasindan bir deger girilecek entere basilacak.Girilen deger bu aralikta ise iki cikisi aralarinda 90 decere faz farki olacak sekilde girilen sayi degerinde cikis olarak aktif edecek.(duty cycle %50 %50).eger deger bu aralik disinda ise yeni deger girisi icin kullaniciyi uyararak yeni deger girisi yapmasi istenecek.yardimci olabilirmisiniz?
http://www.kontrolarge.com/ Bildiklerimiz öğrendiklerimiz kadardır. Ya bilmediklerimiz ..?

aliveli

1-10000 oldukça geniş bir alan ve 5 basamaklı bir sayı için oldukça çok işlem yapman gerekir
Gondereceğin bilgiyi iki basamaklı saniye cinsinden gönderirisen, gelen karakter bilgisini integer sayı biçimine dönüştürmen daha kolay olur.

alexsi

Alıntı yapılan: "aliveli"1-10000 oldukça geniş bir alan ve 5 basamaklı bir sayı için oldukça çok işlem yapman gerekir
Gondereceğin bilgiyi iki basamaklı saniye cinsinden gönderirisen, gelen karakter bilgisini integer sayı biçimine dönüştürmen daha kolay olur.

ustad iyi integer olarak bu sayi girilecek ancak timer kullanmam gerekiyor bunu nasil yapabilirim ?Bu araligi nasil hyperden pic`e integer olarak nasil yazdirabilirim.(hyper cunku ascii kodu olarak gonderecek).Nasil bu gelen sayiyi timeri kurmak icin yeniden kulanacagim bu gibi konularda yardimci olacak birileri yok mu? Yada baska bi fikri olan varsa onlara da acigiz.Cok acil yapmam lazim.
http://www.kontrolarge.com/ Bildiklerimiz öğrendiklerimiz kadardır. Ya bilmediklerimiz ..?

aliveli

dostum probemi daha açık ve tam yazarsan bir çözüm buluruz tam olarak amaç nedir?
ilk olarak şimdiye kadar yazdığın kodları buraya ekleki gerekli düzenlemeleri yapabilelim

Alıntı Yap1ms -10000ms arasindan bir deger girilecek entere basilacak.Girilen deger bu aralikta ise
Bu ne demek değeri sen zaten 1ms -10000ms arasında girmeyecekmisin ki "girilen değer arasında ise" demişsin

sonra bu timer'a gönderilecek dediğin veri terminalden elle mi girilecek
eğer elle girilecekse saniye cinsinden kendin ayarlayıp girebilirsin

1)yok illa 5 haneli olacak diyosan illaki örneğin "154" göndereceksen bile bunu 00154 şeklinde göndermen gerekir.

2)gönderdiğin bu bilgiyi s[5] gibi bir diziye doldur (s[0] en yüksek değerli (MSB) olur)(char s[5];)

3)daha sonra gelen ascii bilgiyi int yapmak için
timer=10000*(s[0]-48)+1000*(s[1]-48)+100*(s[2]-48)+10*(s[3]-48)+(s[4]-48)
yaparak timer'ı bulursun (timer burada long int olacak )

alexsi

sayi manuel hyperden girilecek. olay 1ms ile 10000ms arasindan bir deger girisi yapmak(sayi girildikten sonra sayinin Pic`e gitmesi icin enterlanmasi lazim aksi halde entere tusunu beklesin). fakat bu  10001 gibi bi sayi girildiginde ekrana "1-10000ms degerleri arasinda sayi girisi yapiniz" diyerek kullaniciyi hyperterminala gonderilecek yazi ile uyarmasi ve yeni bi sayi girisi yapilmasi icin programi veri alimi icin bekletmesi gerekir.Ha deger bu aralikta ise(1-10000ms) entere basilarak girilen sayi bisekilde hafiza tutulmasi ve girilen deger ornegin 1000ms(periyot) ise  pic`in 2 adet cikisini aralarinda 90 derece fazfarki olacak sekilde  cikis olarak yonlendirmek.
-------------------------------------------------------------------------------------
sinyal seklini aciklayici olsun diye Resim seklinde olusturdum.Nasil yukleyebilrim.Yardimci olursaniz onu da ekleyeyim.
http://www.kontrolarge.com/ Bildiklerimiz öğrendiklerimiz kadardır. Ya bilmediklerimiz ..?