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


von Martin T. (Gast)


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

von M. F. (sajuuk)


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?

von Martin T. (Gast)


Angehängte Dateien:

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

von M. F. (sajuuk)


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-Tutorial:_7-Segment-Anzeige
So wie dein Code im Moment aussieht bist du glaub ich voll auf dem 
Holzweg.

von Martin T. (Gast)


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.

von Martin T. (Gast)


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.

von M. F. (sajuuk)


Lesenswert?

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

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.