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?
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
teşekkürler
Blogumda böyle bir uygulama yapmıştım.
http://elektrokod.wordpress.com/2013/12/30/kronometre/ (http://elektrokod.wordpress.com/2013/12/30/kronometre/)
Faydalı olması dileğimle...