Schalterinitialisierung mit 80c51 in C

Gast #708710
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
#708791
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?
Gast #708810
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...
Angehängte Dateien:
#708849
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.
Gast #708872
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.
Gast #708883
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren