Guten Tag an alle ich habe versuche ein klein Sprungtabelle zu schreiben, aber er will nicht funktionieren, ich frage euch ob jemand mir erklären kann was ich zufällig falsch gemacht habe. Das Programm habe ich beigelegt Vielen Danke Claude
Gast
#4649299
was willst du mit dieser Zeile erreichen?
> ldi tmp,PIND
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
Siehe AVR-Tutorial: Mehrfachverzweigung
Gast
#4649357
Da deine Tabelle im Flash steht, muss es heissen:
1 | |
2 | |
@Jürgen (Gast) >Da deine Tabelle im Flash steht, muss es heissen: > Ldi ZH,High(meinTab*2) ; High Adresse der Tabel > ldi ZL, low(meinTab*2) ; Low Adresse der Tabel Nö. https://www.mikrocontroller.net/articles/AVR-Tutorial:_Mehrfachverzweigung#Z-Pointer_leicht_verst.C3.A4ndlich
Jürgen schrieb: > Da deine Tabelle im Flash steht, muss es heissen: Daten im Flash werden als Bytes adressiert, Code aber als Worte.
Falk B. schrieb: > @Jürgen (Gast) > > >>Da deine Tabelle im Flash steht, muss es heissen: > >> Ldi ZH,High(meinTab*2) ; High Adresse der Tabel >> ldi ZL, low(meinTab*2) ; Low Adresse der Tabel es fehlt nur den: "in temp, PIN" > > > Nö.
Magst du jetzt wo dein Scheibenwischer doch funktioniert, alles nochmal in Assembler schreiben?
Eric B. schrieb: > Magst du jetzt wo dein Scheibenwischer doch funktioniert, alles nochmal > in Assembler schreiben? Jaein, Mein Vertig Bascom Programm bleibe, ich werde mir das ansehen noch mal und weichenlich ein Möglichkeit einbauen für ein verlängerung oder verkürzung der Pause. Ich hatte dieser Programm mit ASM angefangen, stillgelegt für Bascom. Und jetzt wollte ich mit dieser Sprungtabelle funktioniert, um etwas andere zu machen kein sorge der Bascom wird eingebaut. Ich habe doch noch frage darauf, das geht um die Steuerung meiner relais. Für sofort ich möchte noch mein Sprungtabelle vertigmachen Nochmal Danke für Dein Hilfe im Bascom Claude. PS Ich habe doch angekündig dass ich auch in ASM machen wollte
ein Sprungtabel funktioniere immer noch nicht, Ich verstehe nicht ganz wie die SBIC Zeile aufgebaut sein soll? Kann mir jemand helfen?
@Claude Bochard (claude44) > Tabellen.docx (13,2 KB, 3 Downloads) Was soll der Unsinn? Warum sendest du deinen ASSEMBLERquelltext nicht einfach so wie er ist, als .asm Datei? >ein Sprungtabel funktioniere immer noch nicht, >Ich verstehe nicht ganz wie die SBIC Zeile aufgebaut sein soll? >Kann mir jemand helfen? Hast du mal den Artikel gelesen? Dort steht alles drin! AVR-Tutorial: Mehrfachverzweigung
Claude B. schrieb: > Kann mir jemand helfen? Dir ist nicht zu helfen.
Marc V. schrieb: > Claude B. schrieb: >> Kann mir jemand helfen? > > Dir ist nicht zu helfen. Vielen dank Ich bin aber der Meinung dass, wenn man Kann, ou will aber man muss können, helfen ist einfach.
Falk B. schrieb: > @Claude Bochard (claude44) > >> Tabellen.docx (13,2 KB, 3 Downloads) > > Was soll der Unsinn? Warum sendest du deinen ASSEMBLERquelltext nicht > einfach so wie er ist, als .asm Datei? Sorry, wird so gemacht. Kein hatt mir gesagt, wusst ich nicht > > Hast du mal den Artikel gelesen? Dort steht alles drin! > > AVR-Tutorial: Mehrfachverzweigung Vielen Danke für der Link, habe ich mir angesehen leider ist es mir schwirig die für mein bedürfniss einzusetzen, etwas fehlt mir.
Gast
#4651173
Claude B. schrieb: > Falk B. schrieb: >> @Claude Bochard (claude44) >> >>> Tabellen.docx (13,2 KB, 3 Downloads) >> >> Was soll der Unsinn? Warum sendest du deinen ASSEMBLERquelltext nicht >> einfach so wie er ist, als .asm Datei? > Sorry, wird so gemacht. Kein hatt mir gesagt, wusst ich nicht >> >> Hast du mal den Artikel gelesen? Dort steht alles drin! >> >> AVR-Tutorial: Mehrfachverzweigung > > Vielen Danke für der Link, habe ich mir angesehen leider ist es mir > schwirig die für mein bedürfniss einzusetzen, etwas fehlt mir. Duden?
Gast
#4651187
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
Ich nehme an, dass du anhand der Ziffer in tmp nach pos_0..4 verzweigen willst ? Wenn Ja, probiere es mal so
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
Jürgen_W schrieb: > willst ? Wenn Ja, probiere es mal so Warum Leute nichtfunktionierenden Code durch falschfunktionierende Änderungen noch schlechter machen, bleibt für mich ein Rätsel.
Siehe Anhang.
Falk B. schrieb: > Siehe Anhang. Vielendank, Dein Erklärung mit Komentar waren sehr umfangreich,ich bin doch ein Schritte weiter gegangen.
@ Kurzy (Gast) >> Vielen Danke für der Link, habe ich mir angesehen leider ist es mir >> schwirig die für mein bedürfniss einzusetzen, etwas fehlt mir. >Duden? Wie man am Namen des OP erahnen kann, ist er wohl Franzose und Deutsch nicht seine Muttersprache. Comprenez-vous?
Falk B. schrieb: > @ Kurzy (Gast) > >>> Vielen Danke für der Link, habe ich mir angesehen leider ist es mir >>> schwirig die für mein bedürfniss einzusetzen, etwas fehlt mir. > >>Duden? > > Wie man am Namen des OP erahnen kann, ist er wohl Franzose und Deutsch > nicht seine Muttersprache. Genau > > Comprenez-vous? oui monsieur
Falk B. schrieb: > @ Kurzy (Gast) > >>> Vielen Danke für der Link, habe ich mir angesehen leider ist es mir >>> schwirig die für mein bedürfniss einzusetzen, etwas fehlt mir. > >>Duden? da verstehe ich nicht > > Wie man am Namen des OP erahnen kann, ist er wohl Franzose und Deutsch > nicht seine Muttersprache. Geeenau > > Comprenez-vous? oui monsieur
So ein Mist, am Ende des Programms fehlt ein ret!
Ich habe mein Sprungtabelle weiter entwickelt, und mit den Simulator durch gesielte, aber irrgentwie wille er nicht springen wo er soolt, kann mir jemand sagen wo ich ein fehler gemacht habe? Danke
Gast
#4661808
Claude B. schrieb: > und mit den Simulator > durch gesielte, dann könntest du uns ja mitteilen, was du dort sieht? Dort sind doch alle Register sichtbar - da muss man doch sehen wenn etwas drin steht was man nicht erwartet? So schwer kann das doch bei 10 Zeilen code nicht sein.
1 | |
das sieht zumindest merkwürdig aus, auch aus dem Kommentar erschließt sich mir der sinn nicht.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
Du erlaubst durch dein 'andi tmp,0x04' nur noch genau ein Pinbeinchen, nämlich Bit 2. Falk hat doch schon gepostet, ein 'andi tmp,0x07' würde alle portpins von 0 bis 2 erlauben und dir 8 Auswahlmöglichkeiten geben. Ein 'andi tmp,0x03' erlaubt dir 4 Möglichkeiten mit Pin0 und Pin1. Dann ist deine 16 bit Addition nicht vollständig. Falk hat dir hier
1 | |
2 | |
3 | |
geschrieben, was die richtige Methode ist, um einen 8-bit Wert in tmp auf ein 16bit Register zu addieren. Die Abfrage auf 0 ist unnötig, weil du in deine Sprungtabelle einfach ein 'ret' auf Position 0 schreiben kannst.
Gast
#4661823
Lieber Claude, ich empfehle Dir sehr, erst einmal zu versuchen, ein Problem detailliert zu beschreiben. Wenn Du das übst, dann ist es leichter für Dich ein Problem zu lösen. Jedenfalls ist die Beschreibung "es geht nicht", nicht zweckmäßig. Wir erfahren nicht, was tatsächlich geschieht und was stattdessen geschehen soll. Wir können uns das zwar denken, aber wichtig ist, dass DU das denken kannst. Dann empfehle ich Dir, noch einmal genau nachzulesen, was die Befehle "JMP", "CALL" und "RET" bzw. deren Pendants "IJMP" und "ICALL" tun. Beachte besonders, dass CALL und RET Paare bilden und der Ablauf durch den Inhalt des Stacks beeinflusst wird. Bis jetzt läuft der Thread darauf hinaus, dass man Dir einfach vormacht, wie es geht. Aber davon lernst Du nichts. Bonne chance.
@ Claude Bochard (claude44) >Ich habe mein Sprungtabelle weiter entwickelt, Nö, du hast ein funktionierendes Beispiel ignoriert und deine alte, fehlerhafte Version verschlimmbessert. >kann mir jemand sagen wo ich ein fehler gemacht habe? Dir fehlen massiv Grundlagen. Zeichne mal DETAILIERT auf, was dieser Befehl wohl macht und ob der Kommentar dahinter wirklich stimmt. andi tmp,0x04 ; Lösche die obere Bits Kleiner Tip: Bitmanipulation.
Claude B. schrieb: > Ich habe mein Sprungtabelle weiter entwickelt, und mit den Simulator Ich würde das nicht gerade weiterentwickeln nennen...
Marc V. schrieb: > Ich würde das nicht gerade weiterentwickeln nennen... Das habe ich gemerke Matthias S. schrieb: > Die Abfrage auf 0 ist unnötig, weil du in deine Sprungtabelle einfach > ein 'ret' auf Position 0 schreiben kannst. ich kann dann der 0 nicht benutzen. ist es aber nicht weiter schlimm, ich habe die abfrag weggenohmen, und auf 7 erhöhte. Hosenmatz schrieb: > ich empfehle Dir sehr, erst einmal zu versuchen, ein Problem detailliert > zu beschreiben. Wenn Du das übst, dann ist es leichter für Dich ein > Problem zu lösen. Jedenfalls ist die Beschreibung "es geht nicht", nicht > zweckmäßig. Danke für die Kritik,Ich versuche jetzt so zu handel, ich möchte kein fertig Programme bekommen Nun mit der Simulation, spring ich zu mein Richtig RCALL, dann zu die richtig POS_2 aber mit ret ist nicht möglich zurück zu loop, ich habe versuch mit "meinTab" RJMP LOOP er sping zu MAIN. Ich habe auch versuch am statt "rcall pos_0", ein rjmp loop zu setzen. was funktioniere Wie ich sehe, nach icall, der RJMP ist denke ich überflüssig so wie der von "meinTabel" oder sehe ich wieder Falsch? Ich habe mir viele Programmen angesehen, und ich habe KEIN Sprungtabelle gesehen, gibt es ein Grund?
Gast
#4661983
Claude B. schrieb: > Ich habe mir viele Programmen angesehen, und ich habe KEIN Sprungtabelle > gesehen, gibt es ein Grund? weil es oft einfach nicht Notwenig ist? man könnte ja einfach
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
schreiben, ja das ist etwas langsamer. Aber es funktioniert sofort und du währst schon lange fertig.
Claude B. schrieb: > Wie ich sehe, nach icall, der RJMP ist denke ich überflüssig so wie der > von "meinTabel" oder sehe ich wieder Falsch? Ja.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
@ Claude Bochard (claude44) >> Die Abfrage auf 0 ist unnötig, weil du in deine Sprungtabelle einfach >> ein 'ret' auf Position 0 schreiben kannst. > ich kann dann der 0 nicht benutzen. Musst du auch gar nicht! >Nun mit der Simulation, spring ich zu mein Richtig RCALL, dann zu die >richtig POS_2 aber mit ret ist nicht möglich zurück zu loop, Doch! >ich habe >versuch mit "meinTab" RJMP LOOP er sping zu MAIN. FALSCH! Damit läuft dir in kurzer Zeit der Stack über. Für JEDES CALL oder ICALL braucht man auch ein RET! > Ich habe auch versuch >am statt "rcall pos_0", ein rjmp loop zu setzen. was funktioniere Unsinn. >Wie ich sehe, nach icall, der RJMP ist denke ich überflüssig so wie der >von "meinTabel" oder sehe ich wieder Falsch? Wieder falsch. Du stocherst planlos rum, weil du so gut wie KEINERELEI Grundlagen kennst. Lass es. Du machst dir nur sinnlos Stress. Nimm doch verdammt nochmal einfach mal mein Programm und geh es in Einzelschritten im Simulator durch! Dann siehst du auch, wo der Programmablauf langgeht! Beitrag "Re: AVR prungtabelle"
Falk B. schrieb: > FALSCH! Damit läuft dir in kurzer Zeit der Stack über. Für JEDES CALL > oder ICALL braucht man auch ein RET! Genau. Sorry, habe gar nicht gesehen, dass du es ihm schon einmal richtig gepostet hast. Anscheinend extrem lernresistent.
Gast
#4662131
Hi, habe deinen letzten Anhang mal etwas abgeändert. schaue doch mal ob es so geht. viel Erfolg, Uwe
Gast
#4662136
Hier ist noch ein Fehler ! [c]CLR tmp ; TMP löschen adc ZH,null ; tmp ; im Z register C Addieren[c]
Karl M. schrieb: > Hier ist noch ein Fehler ! Nein, höchstens ein Befehl zuviel, aber das ist jetzt auch auskommentiert.
Ich möchte mich " als extrem lernresistent" für euer Durchalte vermögen bedanken. Das Programm läuft jetzt. Ich habe festgestell dass die Sprüngen reagieren auf binairzahl. Ich kann nur 4 Tasten benutzen Taste 0 spring auf 1 Taste 1 auf 2 Taste 2 auf 4 taste 3 auf 8 ist Correkt ?
@ Claude Bochard (claude44) >Ich habe festgestell dass die Sprüngen reagieren auf binairzahl. Ich >kann nur 4 Tasten benutzen >Taste 0 spring auf 1 >Taste 1 auf 2 >Taste 2 auf 4 >taste 3 auf 8 >ist Correkt ? Ja, aber nur, wenn deine Tasten HIGH aktiv sind und du exteren Pull Down Widerstände hast. Das widerspricht aber eine wenig der Tatsache, daß du die internen Pull-Up Widerstände eingeschaltet hast. Wie sieht deine Hardware real aus? Wenn deine Tasten low aktiv sind (schalten nach GND), dann kann man das einfach ändern, indem man das Einlesen der Pins so macht
1 | |
2 | |
Falk B. schrieb: > Ja, aber nur, wenn deine Tasten HIGH aktiv sind und du exteren Pull Down > Widerstände hast. Das widerspricht aber eine wenig der Tatsache, daß du > die internen Pull-Up Widerstände eingeschaltet hast. Wie sieht deine > Hardware real aus? Ich habe da kein Hardware, dass das für mich nur ein Lerneffect haben soll, was aber gelungen ist > > Wenn deine Tasten low aktiv sind (schalten nach GND), dann kann man das > einfach ändern, indem man das Einlesen der Pins so macht > in tmp, PINein ; Pins einlesen > com tmp ; alle Bits invertieren Das werde ich ausprobieren Danke
Gast
#4662813
Andi und Ori sind echte Raudis, die keiner so richtig mag. Deshalb nimmt man lieber sbr und cbr.
Falk B. schrieb: > Wenn deine Tasten low aktiv sind (schalten nach GND), dann kann man das > einfach ändern, indem man das Einlesen der Pins so macht > in tmp, PINein ; Pins einlesen > com tmp ; alle Bits inverti mit debuging werde das Bit 3 (8) invertirt in tmp(r16) aber nach ADD ZL wird tmp auf 00, und spring auf 0 kann man der Ihnhalt von ijmp sehen? ich habe AtmelStudio 7
Claude B. schrieb: > mit debuging werde das Bit 3 (8) invertirt in tmp(r16) aber nach ADD ZL > wird tmp auf 00, und spring auf 0 Wann hörst du endlich mit herumspielen auf ? Vor allem an Dingen die du anscheinend nicht verstehst ?
1 | |
Hier hast du gerade alle bits ausser bit3 auf 0 gesetzt. Diese sinnlose rumhüpferei im geposteten Code ist unnötig. Benutze doch das erste Programm von Falk, da ist es richtig gemacht. Und wenn du sein Programm benutztst, dann solltest du zumindest seine Ratschläge befolgen.
Marc V. schrieb: > Wann hörst du endlich mit herumspielen auf ? > Vor allem an Dingen die du anscheinend nicht verstehst ? Ich spiel nicht rum. Und wenn ich nicht verstehe, versuche ich zu Verstehen. Marc V. schrieb: > Benutze doch das erste Programm von Falk, da ist es richtig gemacht. > > Und wenn du sein Programm benutztst, dann solltest du zumindest seine > Ratschläge befolgen. Ich benützt das Programm die Funktioniere, und nach seine Ratschläge habe ich mein Programm geändert. Falk B. schrieb: > Wenn deine Tasten low aktiv sind (schalten nach GND), dann kann man das > einfach ändern, indem man das Einlesen der Pins so macht > in tmp, PINein ; Pins einlesen > com tmp ; alle Bits invertieren Und gebe die Ergebnisse Aus Marc V. schrieb: > andi tmp, 0x08 ; Lösche die obere Bits UND Verknüpfung > Hier hast du gerade alle bits ausser bit3 auf 0 gesetzt. Bit 3 soll doch stehen bleiben, nun ich möchte ein Sprung nicht nach 8 sonderd nach 3. den code "Andi tmp, 08" ist von Anfangan schon in der Programm, die leste Änderung "in tem, PINein-- com tmp" sollte mein Problème lösen, Übrigens, ich verstehe nicht dass du dich auregt, über mein Unwissen, diese Forum ist doch da, Für uns alle die etwas nicht verstanden haben, und wir versuchen mit dieser Weg unsere Probleme zu lösen Als " extrem lernresistent" bewunder ich Falk, die mir mindensten bei gebrachte wie ein Sprungtabelle funktioniere. Ich bedanke mich auch bein Dir für den Hilfe dass du bei mir geleistet habe für mein Bascom Programme aber ich bitte dich mich anders zu behandel
@Claude Bochard (claude44) >mit debuging werde das Bit 3 (8) invertirt in tmp(r16) aber nach ADD ZL >wird tmp auf 00, und spring auf 0 Logisch. Mit andi tmp, 8 werden ALLE Bits außer Bit#3 gelöscht. Das Ergebnis kann nur 0 oder 8 sein, demzufolge kann man nur nach Pos_0 oder Pos_8 springen, je nachdem, wie der Pegel an PD3 ist. Alle anderen Eingänge werden damit unwirksam!
1 | |
2 | |
3 | |
4 | |
5 | |
>kann man der Ihnhalt von ijmp sehen?
Sicher, im Register Z, welches aus R30 und R31 besteht. Aber das sieht
man doch einfach im Simulator, wo die CPU hinspringt
(Einzelschrittbetrieb mit F11!)
In deiner Skizze im Quelltext ist ein Fehler, die letzten 3 Taster
müssen zwei Pins weiter runter
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
Claude B. schrieb: > Bit 3 soll doch stehen bleiben, nun ich möchte ein Sprung nicht nach 8 > sonderd nach 3. den code "Andi tmp, 08" ist von Anfangan schon in der > Programm, die leste Änderung "in tem, PINein-- com tmp" sollte mein > Problème lösen, Wo siehst du 0x08 im Programm von Falk ? Claude B. schrieb: > Ich benützt das Programm die Funktioniere, und nach seine Ratschläge > habe ich mein Programm geändert. Nein, tust du nicht und hast du nicht.
Falk B. schrieb: > andi tmp, 8 > > werden ALLE Bits außer Bit#3 gelöscht. Das Ergebnis kann nur 0 oder 8 > sein, demzufolge kann man nur nach Pos_0 oder Pos_8 springen, je > nachdem, wie der Pegel an PD3 ist. > Alle anderen Eingänge werden damit unwirksam! > Bit 76543210 Bitnummer > PIND xxxxxxxx Eingangsdaten > 0x08 00000100 Bitmaske > -------------- > AND 00000x00 Ergebnis der UND-Verknüpfung Also wenn ich gut verstehe, der "Andi tmp" code darf nicht eingesetzt werden?. Aber kann man überhaupt das ding beibringen, wenn mein Bit 3 gesetzt ist, das ein bit 3 Interpretiere und nicht ein 8? oder bit 2 als 3 un sw. Da durch sind Natürlich mein Taster nicht korekt eingesetzt
Gast
#4663177
Hi, weil: >In deiner Skizze im Quelltext ist ein Fehler, die letzten 3 Taster >müssen zwei Pins weiter runter ist mir aufgefallen das deine Sprungtabelle zu kurz ist. Mit den Bits(Tasten)0-4 sind 31 Sprungziele erreichbar. Die Tabelle hat aber nur 9, die anderen(höheren) gehen also nicht da hin wo du möchtest. Mit 3 Tasten(0-2)ist dein Sprungbereich schon fast ausgelastet. Filtere also bitte mit andi tmp,0x07 und die Tasten 0-2 bleiben in tmp. Da langt dann auch die Sprungtabelle. viel Erfolg, Uwe
@Claude Bochard (claude44) >Also wenn ich gut verstehe, der "Andi tmp" code darf nicht eingesetzt >werden?. Nein, das verstehst du nicht gut. > Aber kann man überhaupt das ding beibringen, wenn mein Bit 3 >gesetzt ist, das ein bit 3 Interpretiere und nicht ein 8? oder bit 2 >als 3 un sw. Da durch sind Natürlich mein Taster nicht korekt eingesetzt Ist es denn SOOO schwer, einfach die entsprechenden Unterprogramme zu nutzen und die anderen einfach leer zu lassen?
@ Uwe (Gast) >Filtere also bitte mit >andi tmp,0x07 >und die Tasten 0-2 bleiben in tmp. Da langt dann auch die Sprungtabelle. Auch dieser Hinweis besteht seit Ewigkeiten.
Uwe schrieb: > Hi, > weil: >>In deiner Skizze im Quelltext ist ein Fehler, die letzten 3 Taster >>müssen zwei Pins weiter runter > ist mir aufgefallen das deine Sprungtabelle zu kurz ist. > Mit den Bits(Tasten)0-4 sind 31 Sprungziele erreichbar. Die Tabelle hat > aber nur 9, die anderen(höheren) gehen also nicht da hin wo du möchtest. > Mit 3 Tasten(0-2)ist dein Sprungbereich schon fast ausgelastet. > Filtere also bitte mit > andi tmp,0x07 > und die Tasten 0-2 bleiben in tmp. Da langt dann auch die Sprungtabelle. > > viel Erfolg, Uwe Danke für dein Antwort, in zwischen, sind wir weiter, mein Tabelle ist bis auf 8 ergänze worden, Leider ich bin davon gegangen das der Sprung nach BIT reagiere, nicht nach HEX zahl so taste 0 = 1, Taste 1 = 2, Taste 2 = 3 Taste 3 = 4, Taste 4 = 8. dadurch sind natürlich mein Taster Falsche gelegt
@ Claude Bochard (claude44) >Danke für dein Antwort, in zwischen, sind wir weiter, mein Tabelle ist >bis auf 8 ergänze worden, Das reicht aber nicht. Denn mit 4 Bits kann man 16 verschiedene Zahlen darstellen, also muss man 16 Unterprogramme bereitstellen. > Leider ich bin davon gegangen das der Sprung >nach BIT reagiere, nicht nach HEX zahl so taste 0 = 1, Taste 1 = 2, >Taste 2 = 3 >Taste 3 = 4, Taste 4 = 8. >dadurch sind natürlich mein Taster Falsche gelegt Sieht so aus. Aber um mit 5 Tasten in 5 Unterprogramme zu springen lohnt sich eine Sprungtabelle nicht. Das macht man besser mit 5 Einzelabfragen. Siehe Anhang.
Falk B. schrieb: > Ist es denn SOOO schwer, einfach die entsprechenden Unterprogramme zu > nutzen und die anderen einfach leer zu lassen? ist es überhaupt nicht schwer, und ich habe es verstanden(Ausnameweise) aber für 4 Taster, ich brauch 8 Sprünge, wieviel für 5, oder 6 Tasten? Deswegen meine Frage, kann man das so machen daß wir bit0 = 0, bit 1 = 1, Bit 2 = 2 esw.
@ Claude Bochard (claude44) >Danke für dein Antwort, in zwischen, sind wir weiter, mein Tabelle ist >bis auf 8 ergänze worden, Das reicht aber nicht. Denn mit 4 Bits kann man 16 verschiedene Zahlen darstellen, also muss man 16 Unterprogramme bereitstellen. > Leider ich bin davon gegangen das der Sprung >nach BIT reagiere, nicht nach HEX zahl so taste 0 = 1, Taste 1 = 2, >Taste 2 = 3 >Taste 3 = 4, Taste 4 = 8. >dadurch sind natürlich mein Taster Falsche gelegt Sieht so aus. Aber um mit 5 Tasten in 5 Unterprogramme zu springen lohnt sich eine Sprungtabelle nicht. Das macht man besser mit 5 Einzelabfragen. Siehe Anhang. Jetzt mit richtigem Portzugriff 8-0
Falk B. schrieb: > Sieht so aus. Aber um mit 5 Tasten in 5 Unterprogramme zu springen lohnt > sich eine Sprungtabelle nicht. Das macht man besser mit 5 > Einzelabfragen. > > Siehe Anhang. Vielen Dankefür die Anhang, du beanwortet genau meine Frage, und daß ist weichenlich der Grund warum es nie oder fast nie benutzt wird
Gast
#4663234
Claude B. schrieb: > kann man das so machen daß wir bit0 = 0, bit 1 = > 1, Bit 2 = 2 esw. und was soll bei Bit0 und Bit1 passieren? Das musst du dann sicher verhindert. Warum willst du es zwingend mit einer Sprungtabelle machen, du hast doch schon selber festgellt das es andere ohne machen. Wird wohl einen Grund haben.
Gast
#4663239
Claude B. schrieb: > ist es überhaupt nicht schwer, und ich habe es verstanden(Ausnameweise) > aber für 4 Taster, ich brauch 8 Sprünge, wieviel für 5, oder 6 Tasten? > Deswegen meine Frage, kann man das so machen daß wir bit0 = 0, bit 1 = > 1, Bit 2 = 2 esw. Die Formel für die Anzahl der Sprung Tabelleneinträge ist 2^N mit N für die Anzahl der Taster. N=3 ==> 3 Taster 2^N = 2^3 = 8, also muss man von 0,1,..,7 die Sprung Tabelleneinträge anlegen.
Peter II schrieb: > Warum willst du es zwingend mit einer Sprungtabelle machen, du hast doch > schon selber festgellt das es andere ohne machen. Wird wohl einen Grund > haben. Nein, ich hatte gedacht, dass 16 Sprünge die funktionieren wie die case-Anweisung das soll doch toll sein, pech gehabt und Vielen Dank für Deine Hilfe und die von alle Andere Claude
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.