7 segment displayde timer0 kullanarak sabit bir deger gosterme

Başlatan loves_oi, 16 Nisan 2014, 00:13:13

loves_oi

Merhaba , 7 segment'displayde timer0 kullanarak 000 gostermek istiyorum sabit olarak. Bunun için nasıl bir pseudo kod kullanabilirim? Su an 00 gosterebiliyorum , bir variable tutuyorum ,timer0 interrupt her gelisinde bu variable'ın comf unu alıyor dolayısıyla main'de bir display1 bir display2 ,bir display1 bir display2 çağırılıyor vs. süre çok kısa olacağı için sabit yanıyor gözüküyor
isr:
goto timer0

init:
clrf var

main:
btfss  var,0
call display1
btfsc   var,0
call  display2
goto main

timer0:
..
comf var
..
Bu şekilde sabit bir gösterim oluyor. Aynı şekilde 3 ünü göstermek için uğraş veriyorum. oradan oraya goto yazıyorum bir sürü routine yazıyourm hala olmadı. Uğraşmaya devam edersem olacak belki ama baya baya bi satır kod olacak Yani bu belki de bu kadar zor değildir bir kolay yolu vardır diye düşündüm. Var mı yoksa sırf bunun için 50 100 satır kod mu yazmalıyım?


Kabil ATICI

Bunun için değişken atayıp bir sayıcı yapıyorsun;

isr:
goto timer0

init:
clrf var
clrf ESay

main:
btfss  var,0
call display
goto main

timer0:
..
comf var
..
kod olarak değild akış olarak vereceğim
display
eğer Esay=0 ise
display1 çağır
display_ara git
eğer Esay=1 ise
display2 çağır
display_ara git
eğer Esay=2 ise
display3 çağır
display_ara git
eğer Esay=3 ise
display4 çağır
display_ara
Esay 1 artır
eğer Esay=4 ise
Esay sıfırla
geridön
böylece her timer kesmesi gelişinde sadece 1 display göstermiş olur
Burada Esay saydırılması için 1 artırarak da olabilir 1 azaltarakda bu tamamen senin seçimin

eşitlik için
movlw  0x00
xorwf    Esay,w    ;Esay ile w daki sayıyı xor la, sonucu w ya yaz
btfss     status,z     ;zero bayrağı 1 mi
goto   disp1  ;hayır
call display1
disp1
movlw  0x01
xorwf    Esay,w    ;Esay ile w daki sayıyı xor la, sonucu w ya yaz
btfss     status,z     ;zero bayrağı 1 mi
goto   disp2  ;hayır
call display2
disp2
movlw  0x02
xorwf    Esay,w    ;memo ile w daki sayıyı xor la, sonucu w ya yaz
btfss     status,z     ;zero bayrağı 1 mi
goto   disp3  ;hayır
call display3
disp3
ambar7