Hi,
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.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.
Wie sieht es bei den PICs aus? Nur so kann ich ja eine genau 10ms lange Warteschleife programmieren oder geht das auch anders?
Reicht da ein "call" um das Unterprogramm aufzurufen oder kann ich das mit "goto" lösen?Die Zeitschleife sollte als Unterprogramm abgelegt werden. Dadurch kann sie bei jedem Öffnen und Schließen des Tasters mit nur einem Befehl aufgerufen werden.
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?
->ich werd das erstmal alleien versuchen, wenn ich es nicht hinbekomme werd ich den ganzen Code posten. Vielen Dank ^^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
EDIT::// @frank85 Hab gerade deinen Code getestet , es tut sich leider nix,







Zitieren

Lesezeichen