ABYS
Üye
- Katılım
- 17 Nis 2008
- Mesajlar
- 219
- Puanları
- 1
Pic için örneğin şu şekilde bir program yazoruz.
#include ...
.....
....
void main(){
while(1){
,,,,,
,,,,
,,,,
}}
burada mikrokontolör while (1) içindeki kısmı sürekli olarak işlemesi gerekiyor diye biliyorum.
Bir while döngüsü içindeki satırların tamamı işlendikten sonra giriş çıkış registerlarındaki değerler alınıyor yada dışarı veriliyor. Sonra tekrar çevrimin başına geçiliyor diye biliyorum.
Döngünün içerisine sırasıyla
a=5;
a=4;
PORTB=a; yazarsak
hiç bir zaman PORTB de 5 değerini göremiyor olmamız gerekir. Ama işin içinde registerlar olursa ??? Yani a bir çıkış registerıysa(RB0 mesela).
örneğin 4x7 kollu göstergede 4 haneli bir sayı için bir göster fonksiyonu yazılmış olsun. bu goster fonksiyonu içinde sayıyı önce 1000'e bölüp binler hanesini sonra bunun 1000 katını sayıdan çıkarıp 100 e bölüp yüzler hanesini elde ediyoruz ve böyle devam ediyor. her hane belirlendikten sonra bunu göstergeye(çıkış registerına yazıp) gönderip bir bekleme işlemi yapıyoruz sonra göstergeyi sıfırlayıp diğer haneyi hesaplayıp gönderiyoruz. Bunların hepsi aynı çevrim içinde olduğuna göre nasıl oluyorda aynı porta yazdığımız değerlerden ilk yazılanlar kaybolmuyor.??
Delay işlemini ben daha önce DelayMs() fonksiyonu ile yada while(sayi--) gibi iki şekilde de yaptım.
#include ...
.....
....
void main(){
while(1){
,,,,,
,,,,
,,,,
}}
burada mikrokontolör while (1) içindeki kısmı sürekli olarak işlemesi gerekiyor diye biliyorum.
Bir while döngüsü içindeki satırların tamamı işlendikten sonra giriş çıkış registerlarındaki değerler alınıyor yada dışarı veriliyor. Sonra tekrar çevrimin başına geçiliyor diye biliyorum.
Döngünün içerisine sırasıyla
a=5;
a=4;
PORTB=a; yazarsak
hiç bir zaman PORTB de 5 değerini göremiyor olmamız gerekir. Ama işin içinde registerlar olursa ??? Yani a bir çıkış registerıysa(RB0 mesela).
örneğin 4x7 kollu göstergede 4 haneli bir sayı için bir göster fonksiyonu yazılmış olsun. bu goster fonksiyonu içinde sayıyı önce 1000'e bölüp binler hanesini sonra bunun 1000 katını sayıdan çıkarıp 100 e bölüp yüzler hanesini elde ediyoruz ve böyle devam ediyor. her hane belirlendikten sonra bunu göstergeye(çıkış registerına yazıp) gönderip bir bekleme işlemi yapıyoruz sonra göstergeyi sıfırlayıp diğer haneyi hesaplayıp gönderiyoruz. Bunların hepsi aynı çevrim içinde olduğuna göre nasıl oluyorda aynı porta yazdığımız değerlerden ilk yazılanlar kaybolmuyor.??
Delay işlemini ben daha önce DelayMs() fonksiyonu ile yada while(sayi--) gibi iki şekilde de yaptım.