mikrocontroller.net

Forum: Projekte & Code Kurzzeittimer mit PIC


Autor: Steffen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier ein kleines Beispiel für einen Kurzzeittimer, den ich mir für ein 
Belichtungsgerät geschrieben habe. Zur Anwendung kommt ein PIC16F876(A) 
oder ein PIC16F873(A). Eine genaue Zeitbasis von 10ms wird durch Timer1 
und das CCP-Modul erzeugt. Die Zeit wird auf einem LCD-Display 8x2 
dargestellt. Bedient wird die Uhr über 4 Tasten.
MfG
Steffen

Autor: absolut beginner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
GUTE ARBEIT! respect

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die "Blumen".

MfG
Steffen

Autor: Steffen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Durch eine andere Diskussion ist mir aufgefallen, das bei dem Beispiel 
in der ISR das Status-Register mit movf gesichert wird (das Programm ist 
schon etwas älter, ich habs nur noch etwas kommentiert) und nicht mit 
swapf. Movf beeinflusst das Z-Flag. Daraus folgt, das STATUS,Z falsch 
wieder hergestellt wird (wenn es gesetzt war wird es zurückgesetzt). Das 
Programm läuft zwar bei mir schon eine ganze Weile fehlerfrei aber es 
könnte doch irgendwann ein Fehler auftreten.

Als Anhang die korrigierte Version.

MfG
Steffen

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Steffen,

beim Ansehen des Programms ist mir folgendes aufgefallen:

Die Tastenpins werden ja schön definiert mit

#define    BT_Set    Taste,0

Das könnte dazu verleiten, diese umzudefinieren. Jedoch wird man damit 
auf die Nase fallen, da ja an anderer Stelle doch wieder eine feste Zahl 
verwendet wird:

andlw  00010111b  ; nur Tasteneingänge


Ich kenne den PIC nicht so gut, aber beim AVR kann man das so machen:

.equ BT_Set = 0
.equ BT_Up = 1
.equ BT_Down = 2
.equ BT_Start = 4

und dann im Programm:

andi r16, 1<<BT_Set ^ 1<<BT_Up ^ 1<<BT_Down ^ 1<<BT_Start

Dann kann man die Tasten ohne Gefahr zumindest am gleichen 8Bit-Port 
umdefinieren.
Gibts da beim PIC nicht was ähnlich komfortables ?


Ich versuche ja auch immer möglichst viel mit Definitionen variabel zu 
halten und nur selten feste Zahlen mitten im Programm zu verwenden.


Peter

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

die Kritik ist angebracht. Bei MPLAB geht das genauso.

Die Implementierung könnte dann so aussehen:
; Tastenzuordnung zu PORTB, bei Umbelegung nur diese Werte ändern

Taste_Set  =  0
Taste_Up  =  1
Taste_Down  =  2
Taste_Start  =  4

; ab hier braucht dann nichts mehr geändert zu werden

; Maske für Feststellung ob Taste gedrückt bzw. Up Down gedrückt und 
TRISB

Tasten_Mask  =  1<<Taste_Set ^ 1<<Taste_Up ^ 1<<Taste_Down ^ 
1<<Taste_Start
UpDown_Mask  =  1<<Taste_Up ^ 1<<Taste_Down

Im Programm müssten dann alle 00010111b-Werte in der Tastenauswertung 
durch Tasten_Mask und beim Test, ob Up und Down gleichzeitig gedrückt 
sind 00000110b durch UpDown_Mask ersetzt werden.

MfG
Steffen

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bin ich froh, daß es endlich mal einer nicht persönlich nimmt :-)

Aber man muß doch auch mal Tips geben können, wie es besser ist oder 
auch nur eine andere Meinung vertreten, sonst lernt doch keiner was.

Ich machs doch auch nicht immer richtig (bin auch nur ein Mensch).

Kritik sollte immer willkommen sein.


Peter

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

@Peter

Wahre Worte!
Hoffentlich reagierst du bei Kritiken deiner Progr.auch so wie Steffen 
und setzt auch um was du gerade geschrieben hast.

MFG Uwe

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Uwe,

aber selbstverständlich, ich will ja auch meine Programme verbessern.

Wenns aber einer gar nicht erst ausprobiert oder nur weit entfernt 
ähnlich oder nur etwas vermutet, dann kann ich natürlich nicht 
überprüfen, ob wirklich mein Programm Probleme macht oder nicht.


Peter

Autor: Steffen (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Aufgrund einer Nachfrage habe ich die HEx-Dezimal(ASCII)-Umwandlung und 
die Ausgabe an das LCD-Display noch etwas kommentiert. Die Quellen 
findet ihr im Anhang.
MfG
Steffen

Autor: sunny198828 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
wie ist denn überhaupt die beschaltung?

mfg sunny

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.