Hi,
Mit dem PIC löst man das Entprellen mit einer Zeitschleife. 10 ms Entprellzeit sind für einen Tastendruck nicht viel. Daher stört es in der Regel nicht, wenn das Programm an dieser Stelle eben 10 ms auf der Stelle tritt.
Nun ja wo kann ich nachgucken wieviel Zyklen ein Befehl hat und wieviel µSek. ein Zyklus ist. Beim 80C535 kann ich mich noch errinern, das ich eine Befehlsliste hatte in der eine Extra Spalte für "Zyklen" gedruckt wurde und ein Zyklus wurde genau in 0,75µs abgearbeitet.
Wie sieht es bei den PICs aus? Nur so kann ich ja eine genau 10ms lange Warteschleife programmieren oder geht das auch anders?
Die Zeitschleife sollte als Unterprogramm abgelegt werden. Dadurch kann sie bei jedem Öffnen und Schließen des Tasters mit nur einem Befehl aufgerufen werden.
Reicht da ein "call" um das Unterprogramm aufzurufen oder kann ich das mit "goto" lösen?
Digger hat in meinem Thread "1.Programm" Delay Zeiten die an 8MHz angepasst sind eingebaut, hab ich aber auch nicht so wriklich verstanden wie man das macht und ob ich das verwenden kann?
->
Code:
;**********SUB _Routinen*************************
DEL1MS movlw D'198' ;t=(n-1)*5+2(call)+6(ret)+7(Kopf)
movwf count
nop
goto $+1
goto $+1
DLY1MS goto $+1
decfsz count,f
goto DLY1MS
return
DEL200MS movlw D'199'
movwf tempa
DLY200 call DEL1MS
decfsz tempa,f
goto DLY200
movlw D'132'
movwf count
TWEEK200 decfsz count,f
goto TWEEK200
nop
return
DELAY500 movlw D'250'
movwf tempa
DLY500 call DEL1MS
decfsz tempa,f
goto DLY500
movlw D'64'
movwf tweek
TWEEK500 decfsz tweek,f
goto TWEEK500
movlw D'250'
movwf tempa
DLY501 call DEL1MS
decfsz tempa,f
goto DLY501
movlw D'64'
movwf tweek
TWEEK501 decfsz tweek,f
goto TWEEK501
return
end
ich werd das erstmal alleien versuchen, wenn ich es nicht hinbekomme werd ich den ganzen Code posten. Vielen Dank ^^
EDIT::// @frank85 Hab gerade deinen Code getestet , es tut sich leider nix,
Lesezeichen