PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie kann man die pausenzeit berechnen



Import-Script
01.02.2004, 18:32
Hallo, <BR> <BR>ich habe das beispiel lauflicht aus dem progstudio als vorbild genommen und ein eigenes kleines geschrieben. <BR> <BR>bloß mit dem rotationsbefehl. aber das läuft so schnell das es aussieht als w&uuml;rden alle led&#39;s leuchten. jetzt wollte ich eine kleine pause einf&uuml;gen damit es langsamer wird. aber wie kann ich das machen? <BR> <BR>soweit bin ich zur zeit, wie schon gesagt, habe erst mit der programmierung angefangen und das ist alles geklaut :-&#41; <BR> <BR>INCLUDE 89C2051.mc <BR> <BR>Anfang_des_Programmes: <BR> MOV PORT1,#FFh <BR> MOV A,#FEh <BR> <BR>Lauflicht: <BR> MOV PORT1,A <BR> RR A <BR> <BR>LJMP Lauflicht <BR> <BR>ich m&uuml;sste den doch einfach nur vor dem LJMP bissel beschäfftigen damit der länger braucht um zur&uuml;ckzuspringen und daher auch länger um zu rotieren. <BR> <BR>ich habe ein 24mhz quarz drin. <BR> <BR>jetzt meine frage. wie kann ich eine pause einbauen und wie kann ich die zeit berechnen, also das die pause 1sekunde ist oder so. <BR> <BR>thx Martin <BR> <BR>

Import-Script
01.02.2004, 18:42
Hallo <BR>Dazu gibt es eine extra Datei. Die nennt sich wait.asm Die bindest du in dein Programm ein. Dann rufst du mit einm call die entsprechende Pausenzeit auf. Mit einem Aufruf kannst du max. 0,5sec &uuml;berbr&uuml;cken. Brauchst du größere Pausen, kannst du nat&uuml;rlich mehrere Pausen &#34;kombinieren&#34;. Schau einfach mal in die wait.asm. <BR> <BR>INCLUDE 89C2051.mc <BR> <BR>Anfang_des_Programmes: <BR>MOV PORT1,#FFh <BR>MOV A,#FEh <BR> <BR>Lauflicht: <BR>MOV PORT1,A <BR>RR A <BR>call wait_1000000 <BR>LJMP Lauflicht <BR> <BR>INCLUDE wait.asm <BR>

Import-Script
01.02.2004, 18:53
hi <BR> <BR><a href="http://www.erikbuchmann.de" target=_top>www.erikbuchmann.de</a> <BR> <BR>der CodeGenerator den Du dort findest <BR>spuckt folgendes fuer Dich aus: <BR> <BR> <BR> <BR>; Warteschleife: 1000 ms <BR>; Anzahl Maschinenzyklen: 2000000 <BR>ws2: <BR> push PSW <BR> push 0 <BR> push 1 <BR> push 2 <BR> mov 2,#131 <BR>ws2_labelC2: <BR> mov 1,#71 <BR>ws2_labelC1: <BR> mov 0,#71 <BR>ws2_labelC0: <BR> nop <BR> djnz 0,ws2_labelC0 <BR> djnz 1,ws2_labelC1 <BR> djnz 2,ws2_labelC2 <BR> pop 2 <BR> pop 1 <BR> pop 0 <BR> pop PSW <BR> nop <BR> ret <BR> <BR>;---------------------------------------------- <BR> <BR>das unterprograemmchen wird mit call ws2 <BR>aufgerufen... <BR> <BR> <BR>INCLUDE 89C2051.mc <BR> <BR>Anfang_des_Programmes: <BR>MOV PORT1,#FFh <BR>MOV A,#FEh <BR> <BR>Lauflicht: <BR>MOV PORT1,A <BR>RR A <BR> <BR>call ws2 <BR> <BR>LJMP Lauflicht <BR> <BR>ws2: <BR> push PSW <BR> push 0 <BR> push 1 <BR> push 2 <BR> mov 2,#131 <BR>ws2_labelC2: <BR> mov 1,#71 <BR>ws2_labelC1: <BR> mov 0,#71 <BR>ws2_labelC0: <BR> nop <BR> djnz 0,ws2_labelC0 <BR> djnz 1,ws2_labelC1 <BR> djnz 2,ws2_labelC2 <BR> pop 2 <BR> pop 1 <BR> pop 0 <BR> pop PSW <BR> nop <BR> ret <BR> <BR>;-------------------------------------------- <BR> end &#40;nicht vergessen&#41; <BR> <BR>ed.<img src="http://progshop.com/elektronik/diskussion/clipart/wink.gif" border=0>. <BR> <BR>PS habe nichts getestet...nur generiert <BR>

Import-Script
01.02.2004, 19:05
Hallo, <BR> <BR>ja bei erik buchmann war ich schon, muss aber ehrlich sagen, da habe ich nicht kapiert wie es geht. also die pause funktion. und dann weiß ich nicht wie ich raus bekomme wie lange die pause funktion verlangsamt. <BR> <BR>die variante des progstudios ist am anfang erstmal einfacher. <BR> <BR>aber noch ne frage. warum muss das inlucde am ende stehen. ich habe mal gelernt das die include anweißungen am anfang stehen muss &#40; also in c&#43;&#43; &#41;. <BR> <BR>thx Martin

Import-Script
01.02.2004, 19:15
@ErikBuchmann-Routine: Vieeeel zu umständlich! <BR> <BR>Nimm doch die verschachtelte Verzögerungsschleife <BR> <BR>loop: <BR>MOV R0,#FFh <BR>loop0: <BR>MOV R1,#FFh <BR>loop1: <BR>DJNZ R1,loop1 <BR>DJNZ R0,loop0 <BR>RET <BR> <BR>Aufgerufen wird sie mit &#34;LCALL loop&#34;. Das ist schon alles.

Import-Script
01.02.2004, 19:21
Nochmal in der Zusammenfassung: <BR> <BR> <BR> <BR>INCLUDE 89C2051.mc <BR> <BR>MOV P1,#FFh <BR>MOV A,#FEh <BR> <BR>lauflicht: <BR>MOV P1,A <BR>RR A <BR>LCALL loop <BR>LJMP lauflicht <BR> <BR>loop: <BR>MOV R0,#FFh <BR>loop0: <BR>MOV R1,#FFh <BR>loop1: <BR>DJNZ R1,loop1 <BR>DJNZ R0,loop0 <BR>RET <BR> <BR> <BR>Probiere einfach aus. Den obenstehenden Code kannst per Copy&amp;Paste &uuml;bernehmen. Sollte funktionieren. <BR> <BR>

Import-Script
01.02.2004, 19:54
hi George, <BR> <BR>normalerweise benuetze ich auch die simplere version. <BR>&#62; ErikBuchmann-Routine: Vieeeel zu <BR>umständlich! <BR> <BR>was heisst umstaendlich...die routine macht <BR>dinge,die unter umstaenden nuetzlich sein koennen. <BR> <BR>bei 2 000 000 zyklen pro sekunde kein problem <BR> <BR>besser waere aber die timer und interrupts zu <BR>benuetzen damit der MC nicht nur loopt sondern <BR>andere aufgaben meistern kann. <BR> <BR>ed.<img src="http://progshop.com/elektronik/diskussion/clipart/happy.gif" border=0><img src="http://progshop.com/elektronik/diskussion/clipart/kiss.gif" border=0>. <BR> <BR>ps macht dein loop etwa 1 sekunde?

Import-Script
01.02.2004, 19:58
@Ed <BR>Keine Ahnung ob mein Loop 1 Sekunde macht, das hängt vom Quarz ab. Kann man aber auch damit hinbekommen. <BR>Sein Progrämmchen macht bisher nichts anderes als ein Licht &#34;laufen&#34; zu lassen. Da gibt es &#40;noch&#41; nichts zu PUSHen und POPen. Also was soll&#39;s? <BR> <BR>Was macht die Sonne? Die 11 Grad schon weg?

Import-Script
01.02.2004, 20:22
George, <BR> <BR>die sonne scheint und scheint und scheint.... <BR>die 11 Grad sind im Weinglas: prosit ! <BR> <BR>ED.<img src="http://progshop.com/elektronik/diskussion/clipart/lol.gif" border=0>.

Import-Script
01.02.2004, 21:33
ich weiß das mein programm nicht die spitze der programmiermöglichkeiten darstellt. das ist aber erst mein zweites programm was ich &uuml;berhaupt schreibe &#40; totaler newbie &#41;. <BR> <BR>das mit der sekunde ist vieelicht mal später wichtig. aber mit dem lauflicht will ich erstmal die grund lagen erlernen. <BR> <BR>thx martin

Import-Script
01.02.2004, 22:54
Läuft dein Licht denn jetzt wenigstens?

Import-Script
01.02.2004, 23:05
Ja, also im debugger. <BR> <BR>das experimentierboard muss ich noch zusammenbauen. <BR> <BR>ich habe mir aber gedacht. lieber jetzt schon anfange mit lernen , da kann ich dann wenn alles fertig aufgebaut ist gleich loslegen. <BR> <BR>

Import-Script
01.02.2004, 23:07
C oder C&#43;&#43; beginnt immer bei der main Funktion. auch wenn die am ende steht. Assembler hingegen fängt oben an. <BR>In der 89C2051.mc stehen &#34;nur&#34; zuweisungen. Die m&uuml;ssen am Anfang stehen, sonst weiss das Programm nicht wie es die Hardware im µC steuern soll. <BR>Schreibst du aber die wait.asm an den Anfang, wird die ganze Datei durchlaufen. Es gibt also erstmal eine lange Pause. Zusätzlich könnte das Programm abst&uuml;rzen, weil nach der ersten warteschleife ein RET Befehl kommt, owohl du vorher kein CALL verwendet hast.

Import-Script
01.02.2004, 23:10
PS: <BR>Dein lauflicht wird nicht mehr laufen, wenn du die 89c2051.mc ans Ende schreibst. Progstudio wird einen Fehler anzeigen. Probier´s ruhig mal aus.