Hallo :) Wie der Titel schon sagt möchte ich ein Digitals Codeschloss programmieren. Habe schon: - Matrix Tastatur (4x3) - 2LEDS - Minilautsprecher (für Piepston) - Lauter Kabel + eingelötete Widerstände - Verwirklichung duch LCD Anzeige. Microcontroller: Atmel AT89C5131 Bin aber erst neu dabei und bräuchte ein bisschen Hilfe, wäre sehr cool von euch. Die assemblersprache verstehe ich schon ein bisschen aber eben noch nicht ganz und alles.
Bisher ein kleiner Testcode: ----------------------------------------------------------------- code at 0 include C51rd2.inc ;Datei mit Adressen einbinden mov r0,#0 mov p0,#0 mov p2,#0 anfang: ;Schalterstellungen an LEDs übertragen ;mov p2,#0ffh ;mov p0,#0ffh clr p2.0 clr p2.1 clr p2.2 setb p2.3 setb p2.4 setb p2.5 setb p2.6 clr p2.0 setb p2.1 setb p2.2 x1: JNB p1.3,auslesen1 JNB p1.4,auslesen1 JNB p1.5,auslesen1 JNB p1.6,auslesen1 ------------------------------------------------------------------------ -- Tastatur geht jedenfalls, also die linke Spalte schonmal :) Wie siehs weiter aus? Jetzt erstmal schauen dass alle Tasten erkannt werden und dann irgendwie in ein Array die hexcodes für die jeweiligen Tasten?
Hier ein Bild. Die Tastatur ist an Port P2.0 bis P2.6 angeschlossen. Von den jeweiligen Steckern geht eine Brücke an P1.0 bis P1.6.
Julian Schnee schrieb: > 2 MB, 9 Downloads Ein bisschen groß im Verhältnis zum Informationsgehalt... Du solltest die Fotos deines Samsung Galaxy S III komprimieren bevor du sie hochladest, siehe Bildformate. Die konkrete Frage fehlt immer noch...
:
Bearbeitet durch User
Also mach ich jetzt einfach eine Schleife die abfrägt welche Tasten gedrückt wurde? geht ja mit "db" aber wie mach ich das dann genau mit den Tasten, bei Ziffern z.B. gebe ich es ja als hexcode an, aber wie bei Tasten? Drücke ich "1" leuchtet die LED P2.3 Drücke ich "2" leuchtet die LED P2.4 Drücke ich "3" leuchtet die LED P2.5 Drücke ich "*" leuchtet die LED P2.6 Jetzt muss ich ja dann eine Abfrage erstellen welche Taste gedrückt wurde?
Julian Schnee schrieb: > Hier ein Bild. > > Die Tastatur ist an Port P2.0 bis P2.6 angeschlossen. > > Von den jeweiligen Steckern geht eine Brücke an P1.0 bis P1.6. Was ist das für ein Developerboard, hab ich irgendwo schonma gesehen, weiß wer nicht wo Polin??
Julian Schnee schrieb: > Jetzt muss ich ja dann eine Abfrage erstellen welche Taste gedrückt > wurde? Richtig.
Man kann nicht so einfach drauf losprogrammieren. Man muß sich erstmal überlegen, wie was ablaufen könnte und es dann in Worten hinschreiben. Und dann erst kann man die Worte in Code umsetzen. Und immer schön kommentieren, was man sich dabei gedacht hat, sonst weiß man morgen nicht mehr, was das ganze soll. Eine Matrix besteht aus Zeilen und Spalten. Drückt man eine Taste, wird eine Zeile mit einer Spalte verbunden. Nun muß man bloß noch rauskriegen welche. Dazu legt man eine Zeile auf low und alle anderen Anschlüsse auf Pullup. Nun prüft man Spalte für Spalte, welche ebenfals low ist. Ist es keine, gehts mit der nächsten Zeile auf low weiter, bis man alle 12 Kombinationen getestet hat. Damit man weiß, welche Taste Erfolg hatte, läßt man einen Zähler runter zählen. Läuft der Zähler bis 0 durch, wurde keine gedrückte Taste gefunden. Nun muß man nur noch die Tastennummer dem Tastencode zuweisen. Das geht am einfachsten mit einer LUT. Und so könnte das dann als Code aussehen (ungetestet):
1 | ; scan key matrix 3 * 4 |
2 | ; p2.3 .. p2.0 = row 3 .. 0 |
3 | ; p2.6 .. p2.4 = column 2 .. 0 |
4 | ; output: A = key code: key pressed, A = 0: no key pressed |
5 | keyscan: |
6 | mov r7, #12 ; 1. key number |
7 | mov a, #0FEh ; prepare 1. row = low |
8 | _keysc1: |
9 | mov p2, a ; set p2 with selected row, columns with pullups |
10 | rl a ; prepare next row = low |
11 | jnb p2.4, _keysc2 ; check column 0 |
12 | dec r7 ; count down key number |
13 | jnb p2.5, _keysc2 ; check column 1 |
14 | dec r7 |
15 | jnb p2.6, _keysc2 ; check column 2 |
16 | djnz r7, _keysc1 ; next row |
17 | clr a |
18 | ret ; A = 0: no key found |
19 | _keysc2: |
20 | mov a, r7 |
21 | movc a, @a+pc ; convert 1 .. 12 to key code |
22 | ret |
23 | db 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ; key code LUT |
Hey, cool danke. Habe mir jetzt auch ein wenig Gedanken gemacht und werde es die nächsten Tage mal testen. Gehe gerade das AVR Tutorial durch um noch mehr Verständnis zu bekommen :)
Evtl. böte es sich ja auch an, das ganze in C zu schreiben statt in Assembler. Das ist ja keine Aufgabe, bei der es auf Ausreizung der maximal möglichen Geschwindigkeit geht, und eine Hochsprache ist für Anfänger wesentlich leichter erlernbar.
Easylife schrieb: > Evtl. böte es sich ja auch an, das ganze in C zu schreiben statt in > Assembler. > > Das ist ja keine Aufgabe, bei der es auf Ausreizung der maximal > möglichen Geschwindigkeit geht, und eine Hochsprache ist für Anfänger > wesentlich leichter erlernbar. Würde es schon gerne mit Assembler schaffen :)
Leider ist ein derartiges Ansinnen - zumindest für eine Eingangstür - Versicherungstechnisch genauso, wie wenn du den Schlüssel steckengelassen hast. Gibt einen Grund, wieso professionelle Lösungen Geld kosten: Sie wurden auf Versicherungsunbedenklichkeit geprüft.
Marcus W. schrieb: > Leider ist ein derartiges Ansinnen - zumindest für eine Eingangstür - > Versicherungstechnisch genauso, wie wenn du den Schlüssel > steckengelassen hast. Gibt einen Grund, wieso professionelle Lösungen > Geld kosten: Sie wurden auf Versicherungsunbedenklichkeit geprüft. Dann probiere ich erst zuerst einmal mit einer LCD Anzeige? Und arbeite mich nun schnell in Assembler ein :) Wie kann ich die LCD Anzeige einbauen?
Ich würde erst mal ein paar LEDs blinken lassen und Taster einlesen und dann erst zum LCD übergehen. Zum LCD: Datenblatt lesen, wie in DB beschrieben verkabeln, wie im DB beschrieben programmieren.
Max H. schrieb: > Ich würde erst mal ein paar LEDs blinken lassen und Taster einlesen und > dann erst zum LCD übergehen. > > Zum LCD: Datenblatt lesen, wie in DB beschrieben verkabeln, wie im DB > beschrieben programmieren. Also ich habe mal ein LED Lauflicht programmiert. Ebenso ein Zähler von 0-99 auf der Dezimalanzeige. Versuche mal die LCD anzusteuern und dort den Zähler auszugeben. Habe nur Schwierigkeiten mit der Tastatureinlesung, könnte mir da jemand bitte unter die Arme greifen, wäre echt super!
Problem ist eben, dass ich nicht weiß wie ich es einlesen soll. Also wenn ich z.B. Taste "1" drücke, wie mache ich es, dass der Controller weiß, dass es Taste "1" ist?
Vermutlich ist bei mir am Mikrocontroller etwas zerschossen, wisst ihr ob es einen virtuellen Mikrocontrollertest gibt? Also dass ich weiterhin meine Programm testen kann? Gruß
Danke! Habe jetzt die meisten Unterprogramme geschrieben. Nun zum wesentlichen, der Tastatureinlesung wo mein Problem liegt: Die Zeilen schließe ich an P1.0 bis P1.3 an. Die Spalten bei P2.4 bis P2.6. Will ich jedoch Tasten einlesen geht es nicht, hier mein Programm: ------------------------------------------------------------ Alle LCDS Codes sind eingebunden aber will hier nicht alles reinhauen sonst wird es zu lange. init: tastenfeld data p1 tastatureinlesung: setb p2.4 setb p2.5 setb p2.6 clr p2.4 mov a,tastenfeld cjne a,#11111111b,sichern1 setb p2.4 clr p2.5 mov a,tastenfeld cjne a,#11111111b,sichern2 setb p2.5 clr p2.6 mov a,tastenfeld cjne a,#11111111b,sichern3 setb p2.6 sjmp return sichern1: clr acc.4 ;Bit im Register löschen ret sichern2: clr acc.5 ret sichern3: clr acc.6 ret return: ret ------------------------------------------------------------ Hier das Board das ich verwende: http://www.ces.karlsruhe.de/bubbers/images/stories/platinen/maxi-usb-board2.jpg Hier die Tastatur: http://www.produktinfo.conrad.com/datenblaetter/700000-724999/709840-da-01-en-TASTATUR_MATRIX_3X4.pdf Sollte doch funktionieren oder? Drücke ich eine Taste in der linken Spalte (1,4,7,*), dann leuchtet p2.4 Drücke ich eine Taste in der linken Spalte (2,5,8,0), dann leuchtet p2.5 Drücke ich eine Taste in der linken Spalte (3,6,9,#), dann leuchtet p2.6
:
Bearbeitet durch User
Julian Schnee schrieb: > Hier das Board das ich verwende: Ein Bild ist völlig nutzlos. Du mußt schon den Schaltplan zeigen. Welchen Grund gibt es, die Tasten nicht an einen Port zu hängen?
Hier schonmal die PDF mit Schaltplänen http://www.atmel.com/Images/doc4245.pdf Hier ausführlicher: http://www.atmel.com/Images/doc4136.pdf Um rauszufinden welche Taste gedrückt wurde, muss ja an jede Spalte nacheinander ein 0-Signal gelegt werden (wegen den Pull-up-widerständen?) und die Zeilen werden eingelesen. Deswegen wird der Inhalt von Port1 ins Register A geladen. Zeilen sind wie oben schon beschrieben p1.0 - p1.3, und daraus geben dann die ersten 4 Bits im Akku die jeweilige Zeile an. Bit4, 5, 6 vom Akku werden für die Angabe der durchgeschalteten Spalte benutzt. Ist zB gerade die Taste mit der Spalte an p2.5 gedrückt, wird bit 5 im akku auf 0 gesetzt. gruß
:
Bearbeitet durch User
push, bitte helfen :) meine tastatureinlesung geht nicht :( also p1.x liest aus an meinem Controller kann ich in Assembler nicht einfach if-abfragen machen? zB würde ich alles an p1.0 - p1.6 anschließen p1.0 - p1.3 = zeilen p1.4 - p1.6 = zeilen Die tastatur sieht so aus: (z = zeile, s = spalte) s1 | s2 | s3 z1 1 2 3 z2 4 5 6 z3 7 8 9 z4 * 0 # if (s1&&z1) a (meine variable) = 1 if (s1&&z2) a = 4 würde so etwas gehen? bitte, is dringend für ein schulprojekt Kann mir bitte jemand helfen? BITTE Ich habe schon über 10 Seiten Quellcode, mir fehlt nur noch die Einlesung der Tastatur. gruß
:
Bearbeitet durch User
Oder will jemand über meinen Code drüberschauen? Kann es als word.doc verschicken, wäre echt super. Wenn ja private Nachricht mit der Email bitte hinterlassen. Gruß
Hallo! Julian Schnee schrieb: > Ich habe schon über 10 Seiten Quellcode, Für ein Codeschloss? Unfassbar! Julian Schnee schrieb: > Kann es als word.doc verschicken, Das ist ein Dateiformat, welches kein Programmierer mag. Nur mal so als Tipp: > mov a,tastenfeld > cjne a,#11111111b,sichern1 Wenn am Port "tastenfeld" noch andere Leitungen hängen, darfst Du nicht auf #11111111b testen, sondern musst die relevanten Portpins ausmaskieren. Da fällt es mir schwer hier: Julian Schnee schrieb: > zB würde ich alles an p1.0 - p1.6 anschließen > > p1.0 - p1.3 = zeilen > p1.4 - p1.6 = zeilen durchzublicken und Hilfe zu geben.
Hallo! Die Abfrage einer Matrix-Tastatur ist ja nichts Neues. Zunächst muss man festlegen, ob gleichzeitige Mehrfachbetätigung zulässig ist. Die Hardware muss es dann auch ermöglichen (Enkoppeldioden). Für Deinen Zweck braucht man es nicht. Die erste gefundene Taste wird als gültig angenommen. Eine Entprellung ist unbedingt notwendig. Damit werden außerdem Störsignale auf den Tastaturanschlüssen unterdrückt. Vorgehensweise: Regelmässig, vorzugsweise im Timer-Interrupt, wird die Matrix abgefragt. Zunächst alle Zeilen auf LOW. Abfrage: ist jetzt eine Spalte auf LOW gegangen? Nein, dann keine Taste, Flag setzen "keine Taste" und raus, aus der Abfrage. Bei Ja müssen wir weiter gucken. Also Zeilen und Spalten nacheinander durchgehen, bis man eine Taste gefunden hat. Jetzt erst mal nicht in Hektik verfallen, sondern zunächst entprellen- kann ja ein Störsignal sein. Was war eigentlich beim letzten Tastatur-Timer-Interrupt? Da war nichts und jetzt habe ich die 5. Also die 5 merken. Wenn jetzt beim nächsten Mal die 3 kommt, dann wirfst Du die 5 weg und merkst Dir die 3. Dann kommt wieder die 5, also 3 weg und 5 merken. Wenn jetzt wieder die 5 kommt, dann ist es ein heißer Kandidat, und schon mal markieren. Beim dritten mal die 5, dann wird sie gültig gesetzt und an die Tastaturabfrage gemeldet: Taste erkannt, "5". Im Umkehrschluss: wird bei der dritten Erkennung die 4 gefunden, fängt das Spiel von vorn an. Solch eine Abfrage einer Matrix-Tastatur erfolgt sinnvollerweise im Timer-Interrupt mit passenden Intervallen. Etwa alle 10 ms ist ein akzeptabler Wert für Prellunterdrückung und Haptik; d.h. man hat nicht das Gefühl, die Technik reagiert lahm. Für Dich als Programmierer bleibt nur noch ein Flag abzufragen: "ist eine Taste gedrückt?". Bei "Ja" dann abholen: welche Taste war es? Fertig ist die Laube! Wenn Du selbst schon 10 Seiten lauffähigen Code geschrieben hast, dürfte die Umsetzun meine obigen Romans ja kein Problem sein. Viel Erfolg.
Route 66 schrieb: > Nur mal so als Tipp: >> mov a,tastenfeld >> cjne a,#11111111b,sichern1 > Wenn am Port "tastenfeld" noch andere Leitungen hängen, darfst Du nicht > auf #11111111b testen, sondern musst die relevanten Portpins > ausmaskieren. > Hier ist nur die Tastatur angehänt :) Ok ich versuche es noch einmal in der Hoffnung dass es klappen wird ;) Danke
Julian Schnee schrieb: > Kann es als word.doc verschicken, wäre echt super. Bist Du jetzt völlig des Wahnsinns? Seit wann versteht ein Assembler *.doc? Mach es wie jeder hier, sende die echte *.asm oder *.a51 ganz einfach als Dateianhang. Wenn es mehrere (>3) sind, kannst Du sie auch zippen. Wenn Dir mein Beispiel zu kompliziert war, kannst Du es auch ausrollen. Dann sind es eben 12 Zuweisungen + 12 Bittests und die LUT braucht man nicht. Die Funktionserklärung bleibt im Prinzip die gleiche.
Julian Schnee schrieb: > mir fehlt nur noch die > Einlesung der Tastatur. Das glaube ich Dir nicht. Die Tastaturabfrage ist mit Abstand nicht der komplizierte Teil der Aufgabe. D.h. der bereits fertige Code müßte schon deutlich mehr Gehirnschmalz beinhalten. Oder er ist einfach nur von woanders zusammenkopiert, dann wird er nicht funktionieren, ist also alles andere als fertig.
Wenn Dir jemand einen Beispielcode zeigt, ist es für den deutlich einfacher, Du stellst konkrete Fragen dazu, anstatt ihn zu ignorieren. Dann kann man auch besser erkennen, auf welchem Stand Deine Programmierkenntnisse sind und in welche Richtung Hilfe benötigt wird.
Peter Dannegger schrieb: > Wenn Dir jemand einen Beispielcode zeigt, ist es für den deutlich > einfacher, Du stellst konkrete Fragen dazu, anstatt ihn zu ignorieren. > > Dann kann man auch besser erkennen, auf welchem Stand Deine > Programmierkenntnisse sind und in welche Richtung Hilfe benötigt wird. Also gehen wir von deinem oben geposteten Beispiel mit der Einlesung aus. Ich probiere es gerade noch einmal und melde mich dann gleich :) Weißt du was an meinem geposteten Code falsch ist? --------------------------------------------------- init: tastenfeld data p1 tastatureinlesung: setb p2.4 setb p2.5 setb p2.6 clr p2.4 mov a,tastenfeld cjne a,#11111111b,sichern1 setb p2.4 clr p2.5 mov a,tastenfeld cjne a,#11111111b,sichern2 setb p2.5 clr p2.6 mov a,tastenfeld cjne a,#11111111b,sichern3 setb p2.6 sjmp return sichern1: clr acc.4 ;Bit im Register löschen ret sichern2: clr acc.5 ret sichern3: clr acc.6 ret return: ret --------------------------------------------------------------- EDIT: Bei deinem obigen Code kommt nur das im Anhang, am Anfang durchgehend Fragezeichen, bei manchen Tasten kommen Hieroglyphen und nach ein paar Tastendrücken kommen immer Hieroglyphen.
:
Bearbeitet durch User
So, jedes mal wenn ich jetzt eine Taste drücke kommt ein Binärcode der stimmt, super :) Also klappt das schonmal! Muss ich nur noch schaffen, dass es in Dezimal kommt :) gruß
:
Bearbeitet durch User
Julian Schnee schrieb: > Bei deinem obigen Code kommt nur das im Anhang, am Anfang > durchgehend Fragezeichen Nun wissen wir ja schon endlich, daß Du versuchst, die Tasten als ASCII auszugeben. Warum wartest Du mit wichtigen Informationen nicht noch weitere 100 Posts? Gehe einfach mal davon aus, daß keiner in Deinen Kopf schauen kann. Willst Du ASCII, mußt Du die Tasten auch als ASCII definieren. Die LUT könnte dafür z.B. so aussehen:
1 | db '1', '2', '3', '4', '5', '6' |
2 | db '7', '8', '9', 'A', 'B', 'C' ; key code LUT |
P.S.: Wer Sarkasmus findet, darf ihn behalten.
Peter Dannegger schrieb: > Julian Schnee schrieb: >> Bei deinem obigen Code kommt nur das im Anhang, am Anfang >> durchgehend Fragezeichen > > Nun wissen wir ja schon endlich, daß Du versuchst, die Tasten als ASCII > auszugeben. Warum wartest Du mit wichtigen Informationen nicht noch > weitere 100 Posts? > Gehe einfach mal davon aus, daß keiner in Deinen Kopf schauen kann. > > Willst Du ASCII, mußt Du die Tasten auch als ASCII definieren. > Die LUT könnte dafür z.B. so aussehen: db '1', '2', '3', > '4', '5', '6' > db '7', '8', '9', 'A', 'B', 'C' ; key code LUT > > P.S.: > Wer Sarkasmus findet, darf ihn behalten. Danke. Also nach vielen weiteren versuchen (noch vorher) ging es einmal und hat nur "0"en ausgespuckt und bei jedem Tastendruck den binärcode. Jedoch spinnt jetzt irgendwas, und trotz des selben Programms wie vorher kommen wieder komische Symbole. Woran könnte das liegen?
Dauergast schrieb: > Julian Schnee schrieb: >> Woran könnte das liegen? > > An deinen Änderungen im Programm > SCNR Habe nix geändert, auch wenn ich jetzt das Programm von oben ausführe. Die LCD bleibt gleich oder es kommen wieder nur Hieroglyphen? Ich verstehe es nicht, bitte helfen :(
Julian Schnee schrieb: > Ich verstehe es nicht, bitte helfen :( Was kann man aus kleinen Schnipseln erkennen? Richtig, absolut garnichts. 1000 Fusseln vom Mund wisch, niemand kann in Deinen Kopf oder auf Deinen PC schauen. 0 Code = 0 Hilfe. Oder geh zum Wahrsager.
:
Bearbeitet durch User
Kommt schon, einer muss das doch können? Kann mir jemand bitte bitte ein kleines Programm schreiben wo ich eine Taste drücke und diese dann in einer Variablen, zB in 30h gespeichert wird und dann ausgibt an die LCD, BITTE. Falls es möglich wäre mit Kommentaren Gruß
Julian Schnee schrieb: > Kommt schon, einer muss das doch können? Einer? Dieses überaus triviale Problem könnten sicher wenigstens einige Dutzend oder sogar einige Hundert der Leute lösen, die hier regelmäßig lesen und schreiben. > Kann mir jemand bitte bitte ein kleines Programm schreiben wo ich eine > Taste drücke und diese dann in einer Variablen, zB in 30h gespeichert > wird und dann ausgibt an die LCD, BITTE. Nein. Hier kriegst du Hilfe zur Selbsthilfe, keine fertigen Programme für deine privaten Zwecke. Wenn du sowas haben willst, mußt du dafür löhnen wie jeder andere auch. Oder sie halt selbst schreiben. > Falls es möglich wäre mit Kommentaren Dürfen wir es auch noch hübsch mit Schleifchen verpacken und an's Bett tragen? Tss...
c-hater schrieb: > Julian Schnee schrieb: > >> Kommt schon, einer muss das doch können? > > Einer? Dieses überaus triviale Problem könnten sicher wenigstens einige > Dutzend oder sogar einige Hundert der Leute lösen, die hier regelmäßig > lesen und schreiben. > >> Kann mir jemand bitte bitte ein kleines Programm schreiben wo ich eine >> Taste drücke und diese dann in einer Variablen, zB in 30h gespeichert >> wird und dann ausgibt an die LCD, BITTE. > > Nein. Hier kriegst du Hilfe zur Selbsthilfe, keine fertigen Programme > für deine privaten Zwecke. Wenn du sowas haben willst, mußt du dafür > löhnen wie jeder andere auch. Oder sie halt selbst schreiben. > >> Falls es möglich wäre mit Kommentaren > > Dürfen wir es auch noch hübsch mit Schleifchen verpacken und an's Bett > tragen? Tss... Ja, aber auch keiner hat den Lust mein 3 Beiträge über diesem hier anzuschauen? Was darf ich dann bitte noch fragen wenn keiner mein Programm beeurteilen will und keiner sonst was sagt? PS: Wie viel würdet ihr denn haben wollen? Schreibt mir ne Mail wie viel, dass es bis morgen geht! Soll an P2 ausgelesen werden. julian_schnee92@web.de
:
Bearbeitet durch User
Julian Schnee schrieb im Beitrag #3698295: > Nach ein paar mal ausführen und neu draufspielen spinnt mein Controller? Und wie groß ist das Netz inzwischen? Gib zu, damit kann keiner was anfangen. Julian Schnee schrieb im Beitrag #3698295: > Nur der Code, sonst nix in der a.51 Datei und es spinnt. Was soll der Code alleine denn bewirken? Ohne Mainloop geht garnichts. Die Routine ist auch nur der Teil zum Tasten einlesen. Es fehlt noch die Entprellung und die Flankenerkennung. Julian Schnee schrieb: > push Das hier ist keine 24h Hotline. Die Leute sitzen am PC, wann sie lustig sind. Du mußt Dein Programm in Module zerlegen. Wenn Du z.B. die Tastenroutine testen willst, dann rufe sie auf und gib den Output z.B. mit der 7S-Anzeige, dem LCD oder der UART aus. Den ganzen anderen Schrunz vegiß derweil. Erst wenn alle Module laufen, kann man sie kombinieren. Eine Tastenroutine ruft man auch nicht an 100 Stellen auf, sondern nur einmal in der Mainloop. Das macht die Auswertung einfacher und man behält den Überblick.
@ Peter Ich habe doch gesagt was mein Problem ist, du hast mir ein Programm gegeben welches die Tasten eingelesen und ausgegeben hat, dieses ging einmal und OHNE DAS ICH ETWAS VERÄNDERT HABE zeigt die LCD nun Hieroglyphen an, weiß jemand woran es liegen kann? Oder könntest du bitte noch einmal den Code überprüfen und vllt verändern dass am Anfang die LCD gelöscht wird (der Speicher) das Programm dann abläuft in der Endlosschleife, wäre echt total super und nett von dir.
Julian Schnee schrieb: > dieses ging > einmal und OHNE DAS ICH ETWAS VERÄNDERT HABE zeigt die LCD nun > Hieroglyphen an, weiß jemand woran es liegen kann? Programmiertakt zu hoch. Ist denn das Verify erfolgreich? Oder Wackelkontakt, Spannung instabil usw. Es lief also einmal, das ist doch schon was.
Oke soweit ist nun alles okay bei meiner Tastatur. Aus Hardwaregründen habe ich alles auf low gesetzte anstatt auf High, eine spalte wird demnach nun immer auf high gesetzt zum prüfen. Frage: Da nun alles auf "0 0 0 0 0 0 0 0" ist muss ich es ja vor weiteren Schritten wieder auf den normalen Binärcode wandeln. Wie geht das? Mit einem NOR Befehl, aber wie mache ich das in assembler?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.