mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Schalterinitialisierung mit 80c51 in C


Autor: Martin T. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag miteinander

Habe eine Projektarbeit (mache auf dem Mikrokontroller 80c51f020 eine 
7-Segment-Anzeige, die mit 3 Schaltern bestückt ist für 
sek|min|h|-Einstellung und einem Umschalter mit 3 Zuständen: einer für 
den Programmiermodus der Zeit, einer für die Uhrzeit und einer für die 
Temperaturanzeige) am laufen und komme gerade nicht weiter.

Nun ich habe den Eingang auf P3 und den Ausgang auf P2. Wenn ich im 
Assembler einen Port initialisieren wollte, musste ich nur z.B "h_switch 
equ P1.0" und der Schalter machte was ich wollte.

Kann mir jemand sagen, welche Befehle ich benötige, das ich die Schalter 
korrekt initialisiere?

(Habe den Rest der C-Datei weggelassen)

*
*
*
#include <c8051F020.h>
*
*
*

 sek=P3^0;                 //  Sekundenumschalter
 min=P3^1;                   //  Minutenumschalter
 stu=P3^2;                //  Stundenumschalter
 pro=P3^3;                   //  Programmumschalter
 tem=P3^4;                   //  Temperaturumschalter
 uhr=P3^5;                //  Uhranzeigeumschalter

sbit sanz=P2^0;                    //  Erste Sekundenanzeige
sbit ssanz=P2^1;              //  Zweite Sekundenanzeige
sbit manz=P2^2;                //  Erste Minutenanzeige
sbit mmanz=P2^3;              //  Zweite Minutenanzeige
sbit hanz=P2^4;                //  Erste Stundenanzeige
sbit hhanz=P2^5;              //  Zweite Stundenanzeige

Autor: M. Faid (sajuuk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich geh mal davon aus das du nicht nur eine 7Segment-Anzeige hast, den 
zum darstellen einer Uhrzeit im HH-MM-SS braucht man mindestens 6.

> Schalter korrekt initialisiere?
Was meinst du mit initialisieren?

>Assembler einen Port initialisieren wollte, musste ich nur z.B "h_switch
>equ P1.0" und der Schalter machte was ich wollte.
Was soll er denn machen?
Möchtest du das zB. eine Sekunde hochgezählt wird wenn du den schalter 
betätigst?

Könntest du bitte mal ne Stromlaufplan und den gesamten Quelltext posten
Ach ja welchen Compiler benutzt du denn?

Autor: Martin T. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Ja ich habe 6-7-Segment-Displays.
Ja ich möchte softwaremässig raufzählen wenn ich den Taster betätige.
Ich arbeite mit dem Keil Uvision3

> Schalter korrekt initialisiere?
Damit meine ich, dass ich die die 3 Taster und den Umschalter mit 
Variablen brauchen kann.

zb:

#define P3.0 sekswitch
#define P3.1 minswitch
etc...

Autor: M. Faid (sajuuk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja das Prog kann nicht Funktionieren alles was du bisher zustande 
bekommen hast ist ne schleife.
Hast du eigentlich erfahrung mit C?

Hast du noch nen Stromlaufplan würd gern mal sehen wie du die 
7Segmentanzeigen an den µC Angeschlossen hast.

Schau dir mal den link an
http://www.mikrocontroller.net/articles/AVR-Tutori...
So wie dein Code im Moment aussieht bist du glaub ich voll auf dem 
Holzweg.

Autor: Martin T. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja ich habe schon Erfahrung mit C, doch habe ich noch nie eine eigene 
Hardware dazu gefertigt und hatte nun Mühe mit dem Zuweisen der Ports...

Danke für die Infos, habe es jetzt endlich hingebracht.

Autor: Martin T. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe momentan Mühe mit programmieren, da ich schon länger nichts 
mehr gemacht habe.

Wieso meinst du ich sei völlig auf dem Holzweg? Ich habe das Schema 
leider nicht hier, doch du kannst es dir gut vorstellen: insgesamt 6x 
das Schieberegister (74HC595D). Je einen Vorwiderstand für die 
Siebensegmentanzeigen und pro Schalter/Taster einen Pull-Up-Widerstand.

Autor: M. Faid (sajuuk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja ok wusste nicht das du schieberegister verwendest. also gehts jetzt?

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.