Gecikmeler buton yada pot ile nasıl kontrol edilebilir?

elektro41

Üye
Katılım
2 Eyl 2009
Mesajlar
7
Puanları
1
Yaş
29
Merhaba arkadaşlar delay_ms komutunu adc kullanarak pot ile yada buton ile kontrol etmek istiyorum nasıl yapabilirim.
2 adet buton ile olacak, yükselt butonu gecikmeyi düşürcek böylece program hızlanacak, düşür butonu ise gecikmeyi arttırcak böylece program yavaşlayacak, ama kademeli bir şekilde olması gerekiyor. Pot ile imkanı varsa onada değinin lütfen.
Açıklayıp örneklerseniz sevinirim.

Yazdığım kod bu;

#include <16F877.h>
#Use delay(clock=4000000)


void main()


{
set_tris_b(0x00);
output_b(0x00);
set_tris_c(0x00);
output_c(0x00);

basla:

output_b(0b11111111);
delay_ms(500);
output_b(0x00);
delay_ms(300);
output_c(0b11111111);
delay_ms(500);
output_c(0x00);
delay_ms(300);

goto basla;
}
 
Ben assembly kullanıyorum diğer dillerden hiç anlamam, sadece şöyle bir öneride bulunabilirim eğer delay_ms(500) yerine delay_ms(degısken)şeklinde bir kullanım mevcutsa program içerisinde 2 buton tanımlayıp bu iki butonu sürekli tarayıp butonlara basıldığında hangi butonsa degısken değerini arttırığp azaltabilirsiniz, bu olmuyorsa delay_ms(500) yi bir döngü içerisine koyup bu döngünün tekrar sayısını yine butonlarla arttırılıp azaltılan gecikme_tekrar adlı değişkenle sağlarsınız, dili bilmediğim için ancak bu kadar, assembly olsaydı daha net yardımcı olabilirdim.
 
Potun değerini okuyabiliyorsan. Bir sayısal değişkene (int) zaman değerini potdan aldığın değere matematiksel olarak bağlarsanız. Ve Loop un içine bir fonksiyon tanımlayıp gecikme değer değişkeni ile ilişkilendirirseniz istediğiniz Scan time ı elde edebilirsiniz. Burada önemli nokta Sistemin sayısal yada analog değerlerin işlenmesi kesinlikle LOOP un içinde ve herhangi bir fonksiyonun içinde olmamalıdır. Kısaca bir fonksiyonun çalışma hızını ayarlayabilirsin işlemcininki sabittir.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…