www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mischport definieren


Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

ich möchte beim Tiny12L die ersten 4 Pins als Ausgabeport, den 5. Pin
als Eingabe und den 6. Pin wider als Ausgabeport des PortBs deklarieren
und benutzen. Wie kann man so etwas in Assembler realisieren? Was wird
genau mit dem Befehl IN eingelesen? Nur der Eingabeport oder der
komplette PortB (s. Beispiel oben)?

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch etwas: Habe ich die Möglichkeit einen Wert (z.B. 400) so vom
Mikrocontroller speichern zu lassen, dass ich ihn nach einem
Stromausfall wieder benutzen kann?

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du kannst jeden Port einzeln mit dem DDRx-Register definieren, entweder
komplett als byte:
ldi r16, 0b00010010   ;PORT 1und 4 als Ausgang
out DDRB, r16

oder auch bitweise einzeln
sbi DDRB, 4            ;setzt PORTB.4 als Ausgang

in liest den kompletten Port, wobei zu beachten ist, dass jeder Port 3
Register hat:
DDRx: Eingang/Ausgangsdefinition
PORTx: das eigentliche Portregister,
PINx: die Signale am eigentlichen Pin

Ist ein Portpin als Eingang definiert, muss man immer PINx einlesen, da
im Portregister nur steht, was man vorher reingeschrieben hat
(0:interner Pullup deaktiviert, 1: interner Pullup aktiviert).

Autor: MooseC (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und was den Wert speichern betrifft... Ja das geht mit dem internen
EEPROM. Davon hast Du 64 Bytes beim Tiny12 zu Verfügung.

MooseC

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, vielen Dank, also wenn ich wie oben beschrieben die Ports
deklariere, wie lese ich dann nur das ein, was am Pin 5 des PortBs
anliegt? Also welche Werte gibt dann PinB zurück, wenn an Pin 5 ein
high bzw. ein low anliegt?

Wie lautet der Assemblercode für die EEPROM Abspeicheraktion?

(Ich fange gerade erst an mit der Assemblerprogrammierung!)

Autor: Pete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entweder du benutzt die Sprungbefehle SBIC und SBIS (nächsten Befehl
überspringen, wenn Bit in IORegister set/cleared)

sbic PINB,5
rjmp BitSet
.
.
.

sbis PINB,5
rjmp BitCleared
.
.
.


BitSet:

BitCleared:


oder du musst dein Bit auscodieren:


in   Temp,PINB
andi Temp,0b00100000

somit steht in Temp 00100000, wenn das Bit gesetzt ist und 0, wenn das
Bit nicht gesetzt ist.

Autor: MooseC (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und was das Speichern betrifft...


Suche einfach danach, Du wärst nicht der erste der sich damit
beschäftigt. Die Beiträge hier im Forum/Codesammlung sind recht
vielfältig.

Nur einer davon:
http://www.mikrocontroller.net/forum/read-4-647.html#647

MooseC

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

mein Tiny12L läuft komischerweise nicht, mit Ponyprog kann ich Daten
erfolgreich übertragen, aber anschließend läuft dieses lachhafte
Programm nicht:
------------------------------------------------------
.include "tn12def.inc"

ldi r18, 0b11111111
out DDRB, r18

ldi r16, 0b11111111
out PORTB, r16

ende: rjmp ende

------------------------------------------------------

Ich habe kein externes Quarz angeschlossen - muss ich den internen RC
ocillator noch aktivieren?

Benjamin

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

wie kann ich einen Taster per Assembler entprellen? Ich benötige dies,
um Register hochzuzählen, wenn ich einen Taster drücke (Beim Drücken
des Tasters soll noch nichts passieren, erst beim Loslassen soll ein
Register um 1 incrementiert werden.)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.