Einfaches Assemblerprogramm für PIC16F627A

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 28 12 2025  23:47:50      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Oszilloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte

Gehe zu Seite ( Vorherige Seite 1 | 2 )      


Autor
Einfaches Assemblerprogramm für PIC16F627A

    







BID = 561832

Ltof

Inventar



Beiträge: 9386
Wohnort: Hommingberg
 

  



Zitat :
loetlack hat am  6 Nov 2008 10:16 geschrieben :

...Bitte ein bischen mehr Code zum Benutzen...

Dazu habe ich weder Zeit, noch Lust. Ich glaube aber auch nicht, dass das nötig ist. Immerhin hast Du ja schon irgendwelche Codeschnipsel zum Laufen bekommen.

Die Aufgabe ist ja recht überschaubar. Deshalb kann man das Ganze, zwar unelegant, aber dafür leicht verständlich, Schritt für Schritt sequenziell abbarbeiten.

Ungefähr so:
******
Hauptprogramm:
LED1 an

Loop:
Warte auf Tastendruck

Warte 1ms (Prellzeit, kann hier wegen der folgenden Wartezeit von 20ms sogar weggelassen werden)

LED2 an

Warte 20ms (Überlappung)

LED1 aus

Warte auf Taste loslassen

Warte 1ms

Warte auf Tastendruck

LED2 an

Warte 20ms

LED1 aus

...und so weiter

Warte auf Tastendruck

LED1 an

Warte 20ms

LED3 aus

Warte auf Taste loslassen

Warte 1ms

Goto Loop
***

Irgendwelche brauchbaren Codeschnipsel für Warteschleifen findest Du z.B. bei Sprut. Die Warteschleifen am besten per Unterprogramm mittels "Call" aufrufen.

Gruß,
Ltof

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 562078

BjörnB

Stammposter

Beiträge: 242
Wohnort: Dortmund

 

  

@ Ltof

Sicherlich kann man auch einiges ohne Interrupt machen. Da manche meiner Programme eine Uhr enthalten oder z.B. ein Zeitintervall erfassen, sind Timer und Interrupts für exakte Verhältnisse eigentlich unerlässlich. Und wenn mir ein Controller schon ca. 20 Interruptvektoren für alle möglichen Hardwarekomponenten anbietet, dann sehe ich keinen Sinn, Interrupts nicht zu verwenden, sondern sich mit irgendwelchen Schleifen und Wait-Routinen zu behelfen.

Schönen Gruß,
Björn

BID = 562088

Ltof

Inventar



Beiträge: 9386
Wohnort: Hommingberg

Wie ich bereits weiter oben erwähnte, ist die Verwendung der Interrupts natürlich auch eine Frage des persönlichen Geschmacks.

Solange man sich nicht in der Verwendung der Interrupts verzettelt ist das ja auch in Ordnung.

Man sollte sich nur angewöhnen, mit Interrupts möglichst sparsam umzugehen. Mit Interrupts passieren zu leicht kaum noch nachvollziehbare Sachen im Programmablauf.

Einem Anfänger bei trivialen Problemstellungen den Interrupt zu empfehlen, finde ich jedenfalls kontraproduktiv.

Gruß,
Ltof

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 562093

BjörnB

Stammposter

Beiträge: 242
Wohnort: Dortmund

Du hast schon Recht, "Interrupt" und "Einfaches Assemblerprogramm" aus dem Titel des Postings widersprechen sich schon etwas. Mehr als ein Timerinterrupt wäre hier aber sowieso nicht nötig, so dass auch dann kaum Probleme zu erwarten sind. Problematisch wird es, wenn in einem Programm mehrere Interrupts gemeinsame Variablen verändern können, dann ist es wichtig, dass man das ganze geschickt synchronisiert.

Es ist sicherlich auch einfach Geschmackssache, wie man ein Problem angeht. Ich versuche beispielsweise, im Hauptprogramm nach der Initialisierung von Variablen möglichst eine leere Endlosschleife zu setzen (in der allerhöchstens zeitunkritische Sachen bei Gelegenheit abgearbeitet werden) und alles andere mit Interrupts abzuarbeiten. Damit bin ich bisher eigentlich immer recht gut gefahren. Aber das führt an dieser Stelle wohl etwas zu weit

Schönen Gruß,
Björn

BID = 562139

hajos118

Schreibmaschine



Beiträge: 2453
Wohnort: Untermaiselstein


Zitat :
BjörnB hat am  6 Nov 2008 23:35 geschrieben :

... im Hauptprogramm nach der Initialisierung von Variablen möglichst eine leere Endlosschleife zu setzen ...

Mach' ich ähnlich, nur dass ich dort den Prozessor in den "Schlaf-Modus" verbanne.

_________________
Interpunktion und Orthographie dieses Beitrags sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.
Wer einen Fehler findet, darf ihn behalten!

BID = 562200

loetlack

Gerade angekommen


Beiträge: 4
Wohnort: Frankfurt Main

Hi Racingsascha,
könntest du mir deine Version des Hauptprogrammes für den PIC16F627A ins Reine bringen und mir evtl. zumailen?
Dem Himmel sei Dank dafür und dir natürlich besonders.

Gruss Lötlack

BID = 562305

Racingsascha

Schreibmaschine



Beiträge: 2247
Wohnort: Gundelsheim
ICQ Status  

Was meinst du mit "ins Reine bringen"? In Assembler schreib ich ihn dir nicht (das musst du selber machen), wir sehen uns deinen Code aber gerne nochmal an. Den Pseudocode kann ich nochmal überarbeiten.

Pseudocode:
TRISA = 0x01 ;RA0 als Tastereingang
TRISB = 0x00 ;alles Output
PORTB = 0x01 ;erste led an

Main
Taster abfragen
wenn gedrückt, rlf PORTB
wenn RB3 = 1, Rb = 0x01
warten bis der taster losgelassen wurde
call warteschleife ;solange wie für Entprellen notwendig
goto Main

Da ist jetzt "Anti-Lauflicht" drin (es wird gewartet bis der Taster losgelassen wird), Die LEDn sind aber nicht kurz gleichzeitig an. Wenn du das haben willst, baust du Ltofs Vorschlag nach oder versuchst selbst, es in meine Variante einzubauen. Darüberhinaus kannst du mein Programm erweitern, indem du statt RB3 einen anderen Pin von PORTB abfrägst.

_________________
Fnord ist die Quelle aller Nullbits in deinem Computer.
Fnord ist die Angst, die Erleichterung, und ist die Angst.
Fnord schläft nie.

BID = 562343

BjörnB

Stammposter

Beiträge: 242
Wohnort: Dortmund


Zitat :
hajos118 hat am  7 Nov 2008 09:56 geschrieben :

Mach' ich ähnlich, nur dass ich dort den Prozessor in den "Schlaf-Modus" verbanne.

Danke für den Denkanstoß, das könnte ich in nachfolgenden Projekten auch mal in Erwägung ziehen, zumindest bei batteriegespeisten Schaltungen

Schönen Gruß,
Björn


Vorherige Seite      
Gehe zu Seite ( Vorherige Seite 1 | 2 )
Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 17 Beiträge im Durchschnitt pro Tag       heute wurden bisher 10 Beiträge verfasst
© x sparkkelsputz        Besucher : 187995911   Heute : 15147    Gestern : 11123    Online : 485        28.12.2025    23:47
7 Besucher in den letzten 60 Sekunden        alle 8.57 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0277950763702