L_X
Üye
- Katılım
- 6 Eyl 2021
- Mesajlar
- 1
- Puanları
- 1
- Yaş
- 31
Merhaba
2 Digit bir displayi pic16f877A ile kullanmaktayım. Amacım önceden kullanıcının ayarladığı süreden sonra displayin geri sayması lakin 1 saniyede 1 sayı düşecek şekilde olmalı. Bu hususta delay_ms fonkisyonuyla kullandığımda tarama işlemi yüzünden display 1 sn kapalı kalıyor,bir anlık yanıp göstermesi gereken değeri gösteriyor ardından tekrar kapanıyor.
*Timer0 ı kullandım lakin sonuç alamadım.(belki de timer0 ı yanlış kullanmış olabilirim)
* RTOS un sağladığı multithread fonksiyonu sanırım işe yarayabilir fakat daha önce hiç RTOS ile çalışmadım
Bu hususta displayin sürekli çalışır durumda saniyede 1 geri saymasını nasıl sağlayabilirim?
ilgili kodlar:
for(int i=0;i<sayac;sayac--)
{
vbirler=sayac%10;
vonlar=sayac/10;
output_high(display_1);
output_d(display[vonlar]);
delay_ms(1);
output_low(display_1); // tarama işlemi low ile bittiği için 1 sn sönük kalıyor
output_high(display_2);
output_d(display[vbirler]);
delay_ms(1);
output_low(display_2); // tarama işlemi low ile bittiği için 1 sn sönük kalıyor
delay_ms(1000); //delay süresince başka işlem yapmadığı için taramadaki son register durumunu(low) koruyor.
İlginize şimdiden teşekkür ederim
2 Digit bir displayi pic16f877A ile kullanmaktayım. Amacım önceden kullanıcının ayarladığı süreden sonra displayin geri sayması lakin 1 saniyede 1 sayı düşecek şekilde olmalı. Bu hususta delay_ms fonkisyonuyla kullandığımda tarama işlemi yüzünden display 1 sn kapalı kalıyor,bir anlık yanıp göstermesi gereken değeri gösteriyor ardından tekrar kapanıyor.
*Timer0 ı kullandım lakin sonuç alamadım.(belki de timer0 ı yanlış kullanmış olabilirim)
* RTOS un sağladığı multithread fonksiyonu sanırım işe yarayabilir fakat daha önce hiç RTOS ile çalışmadım
Bu hususta displayin sürekli çalışır durumda saniyede 1 geri saymasını nasıl sağlayabilirim?
ilgili kodlar:
for(int i=0;i<sayac;sayac--)
{
vbirler=sayac%10;
vonlar=sayac/10;
output_high(display_1);
output_d(display[vonlar]);
delay_ms(1);
output_low(display_1); // tarama işlemi low ile bittiği için 1 sn sönük kalıyor
output_high(display_2);
output_d(display[vbirler]);
delay_ms(1);
output_low(display_2); // tarama işlemi low ile bittiği için 1 sn sönük kalıyor
delay_ms(1000); //delay süresince başka işlem yapmadığı için taramadaki son register durumunu(low) koruyor.
İlginize şimdiden teşekkür ederim