Forum: Mikrocontroller und Digitale Elektronik Digitales Codeschloss


von Julian S. (julian_92)


Lesenswert?

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.

von Julian S. (julian_92)


Lesenswert?

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?

von Glaskugel in Reparatur (Gast)


Lesenswert?

Konkrete Fragen - konkrete Antworten (vielleicht)

von Julian S. (julian_92)


Angehängte Dateien:

Lesenswert?

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.

von Max H. (hartl192)


Lesenswert?

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
von Julian S. (julian_92)


Lesenswert?

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?

von Jan R. (Gast)


Lesenswert?

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??

von Daniel H. (Firma: keine) (commander)


Lesenswert?

Julian Schnee schrieb:
> Jetzt muss ich ja dann eine Abfrage erstellen welche Taste gedrückt
> wurde?

Richtig.

von Peter D. (peda)


Lesenswert?

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

von Julian S. (julian_92)


Lesenswert?

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 
:)

von Easylife (Gast)


Lesenswert?

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.

von Julian S. (julian_92)


Lesenswert?

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 :)

von Marcus W. (marcusaw)


Lesenswert?

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.

von Julian S. (julian_92)


Lesenswert?

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?

von Max H. (hartl192)


Lesenswert?

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.

von Julian S. (julian_92)


Lesenswert?

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!

von Julian S. (julian_92)


Lesenswert?

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?

von Julian S. (julian_92)


Lesenswert?

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ß

von Peter D. (peda)


Lesenswert?


von Julian S. (julian_92)


Lesenswert?

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
von Peter D. (peda)


Lesenswert?

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?

von Julian S. (julian_92)


Lesenswert?

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
von Julian S. (julian_92)


Lesenswert?

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
von Julian S. (julian_92)


Lesenswert?

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ß

von Route_66 H. (route_66)


Lesenswert?

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.

von Route_66 H. (route_66)


Lesenswert?

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.

von Julian S. (julian_92)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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.

von Julian S. (julian_92)


Angehängte Dateien:

Lesenswert?

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
von Julian S. (julian_92)


Lesenswert?

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
von Peter D. (peda)


Lesenswert?

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.

von Julian S. (julian_92)


Lesenswert?

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?

von Dauergast (Gast)


Lesenswert?

Julian Schnee schrieb:
> Woran könnte das liegen?

An deinen Änderungen im Programm
SCNR

von Julian S. (julian_92)


Lesenswert?

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 :(

von Peter D. (peda)


Lesenswert?

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
von Julian S. (julian_92)


Lesenswert?

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ß

von c-hater (Gast)


Lesenswert?

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...

von Julian S. (julian_92)


Lesenswert?

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
von Jörg E. (jackfritt)


Lesenswert?


von Julian S. (julian_92)


Lesenswert?

push

von Peter D. (peda)


Lesenswert?

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.

von Julian S. (julian_92)


Lesenswert?

@ 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.

von Peter D. (peda)


Lesenswert?

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.

von Julian S. (julian_92)


Lesenswert?

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?

von Easylife (Gast)


Lesenswert?

Meine Popcorntüte ist leer. NOP NOP NOP...

von Easylife (Gast)


Lesenswert?


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
Noch kein Account? Hier anmelden.