İyi akşamlar hocam, size takıldığım bi yeri soracaktım,soru şu; 2 adet displayde kesme kullanarak 0-99 sayma işlemi gerçekleştiren programı INTERRUPT (kesme) kullanarak yapmak istiyorum. nasıl bi program yazmam gerekiyor? sizin projelerde tarama yöntemi ile yaptıklarınızı inceledim, ama kesme işe karışınca kafam çok karıştı. zaten yeni 7seg displayle uğraşmaya basladım birde ınterupt olunca iyice kafam karıştı.yardımcı olursanız çok sevinirim hocam, şimdiden teşekkürler
serkan ünaldı
Serkan ,
Ben de genelde kesme kullanarak taramalı display sürerim. Benim projelere yeniden bak istersen.
Ben sana yinede yapman gerekeni yazayım.
Öncelikle bir Timer0 kesmesi oluştur. Kemse süresi 1 ms yada 1500 us olsun.
Her kesme oluştuğunda ;
- Bir sayaç değişkenini bir artır. Sayac=0 ise birler hanesi displeyine sayac=1 ise onlar hanesi displeyine aşağıdakileri uygula. Sayac 3 ise sayacı yeniden sıfır yap.
- Bir önceki kesmede aktif edilen displayi söndür (ortak besleme ucunu kapat Anot yada katod)
- Yenisine yazılacak bilgiyi segmentelere ver
- Display aktif et
- kesmeden çık.
Buraya kadar yazdıklarımı anladı isen mesele yok demektir. Anlamadı isen bir kez daha anlatayım. Her 1-2ms de bir Timer kesmesi oluşturacaksın. Her kesmede bir tek displayi aktif edeceksin. Bunuda sayac değişkeni ile taip edeceksin
Hepsi bu kadar.
Ete
hocam kusura bakmayın ama anlamadım, okulda daha kesme konusunu anlatmadı hocamız, 2 adet display sürmeyi işliyoruz daha.gördüğüm konulara bağlı olarak 2 display'de sabit sayıyı gösterebiliyorum ama bi lookup tablosu yapıp o tablodakileri bi değişkene yükleme ve kesme konusunu bilmiyorum, okudum kesmeyi ama anlamadım :/ mantık olarak çalışmasını anladım bu tarama yönteminin ama uygulama olarak zayıfım hocam. programa göz atınca çoğu yeri anlayabiliyorum fakat bir komut var araştırdım bulamadım mantığınıda anlamadım.yardımcı olabilirmisiniz hocam, satır şu;
"PORTB=240 | BIRLER" bu satırda"|"ve"240" ne anlamda kullanılıyor, işlevi nedir hocam?
serkan ünaldı
PORTB=240 | BIRLER bir lojik operatör işlemidir. "|" işareti bit bazında OR işleminin işaretidir.
240 Sayısına binary olarak baktığımız zaman 240=%1111 0000 şeklinde bir sayı olarak görürüz.
Birler isimli değişkende birler basamağını rakam olarak tutuyor. Değeri en fazla dokuz olabilir. Diyelimki değeri 6.
Bu durumda PortB=%1111 0000 | %00000110 işleminin sonucu =%1111 0110 şeklinde bir değer olacaktırki buda 246 sayısına eşdeğerdir. Gördüğün gibi bu satır bu işlemi yapmaktadır.
Ete
şimdi bu %11110000 sayısına "|" işareti %00000110 sayısını mı ekliyor yanlış anlamadım değilmi hocam.peki bu 240'a karşılık gelen %11110000 sayısında 1'ler sabitmi? değişkense, değiştiğinde nasıl bi değişiklik olur programda?
Anlaşılan ikili (binary) sayı aistemini bilmiyorsun.
240 desimal sayısının ikili sistemdeki karşılığı %11110000 şeklinde yazılır. Birlerin yeri değişirse sayıda degisir. Sayi sistemlerine çalışman gerek. Ayrıca bir OR işlemi toplama yapar. Lojik işlemleri de calısmalısın.
Ete
ben kendimi yanlış ifade ettim galiba hocam. sayı sistemlerini tabiki biliyorum or komutunuda biliyorum ben ordaki 240 sayısın anlamı ne demek istemiştim, yani ordaki amacı ne?
Program onumde degil. Mutlaka sondaki o 4 adet "1" bir şeyleri kontrol ediyordur.
Ete
peki hocam ben biraz uğraşayım çalıştırmayı deneyim, olmadı size tekrar sorarım.herşey için teşekkürler hocam sagolun.iyi akşamlar
iyi akşamlar hocam ben size bahsettiğim konu hakkında bir çalışmayla uğraştım ama sadece en soldaki display birler hanesini sayıyor. çalışıp çalışmadığını görmek için bir tane LCD ekledim sayac çalışıyor. displayde onlar, yüzler, binler hanesini gösteremedim.yardımcı olurmusunuz hocam teşekkürler