Mikroprozessor 8051

OP #7057603
Lesenswert?
• ▲
▼
Hallo ,
ich bin frisch im Uc , im Hochschule müssen wir ein Programm schreiben , 
das am Port P1.3 in HP1 eine Rechstecksschwingung der höchsten möglichen 
Frequenz ausgibt .
anbei meine Lösung :include<stdio.h>
#include"studi.h"
unsigned char bit P13 ;  // wie kann ich wissen , welche Adresse besitzt 
P13
void main (void)     // Start des Hauptprogramms
{
        while(1)
            {
                P13=0; //Pin low
                P13=1; //Pin high
            }

}
 vielen Dank im Voraus
Gast #7057624
Lesenswert?
• ▲
▼
> unsigned char bit P13 ;  // wie kann ich wissen , welche
> Adresse besitzt P13

Also du kannst das wissen indem du das Datenblatt deines Controllers 
liesst.
Dein Compiler kann aber leider nicht lesen, deshalb sollte er eine
include-Datei haben wo jemand sowas definiert hat weil P13 nicht zum
C Standardumfang gehoert.

Olaf
Beitrag #7057674 wurde von einem Moderator gelöscht.
Beitrag #7057712 wurde von einem Moderator gelöscht.
Gast #7057727
Lesenswert?
• ▲
▼
@"Dekan"
mach mal ruhig.
Hochschule muss nicht UNI heissen.

Evtl. fehlt nur ein Punkt an der richtigen Stelle.

Und was steht in studi.h?

Mein Mi-C würde mit 2 Punkten an den richtigen Stellen ein 
funktionierendes Prog liefern.
#7057735
Lesenswert?
• ▲
▼
es braucht eine sbit deklaration, diese ist compiler spezifisch...

Keil: sbit P13 = P1^3;
SDCC: __sbit __at (P1 + 3) P13;
IAR:  __bit __no_init volatile bool P13 @ (P1 + 3);
uc51: unsigned char bit  P13 @ (P1 + 3);

Das setzt allerdings vorraus dass P1 irgendwo definiert ist, was in der 
Regel in einem CPU Header file gemacht wird.
#7059469
Lesenswert?
• ▲
▼
Jele D. schrieb:
> das am Port P1.3 in HP1 eine Rechstecksschwingung der höchsten möglichen
> Frequenz ausgibt .

Vorsicht: Wenn das kein klassicher 8051 sondern was modernes (Silabs 
C8051 oder EFM8) ist, könnte man u.U. eins der internen Taktsignale am 
Pin raus lassen.

Damit sind erheblich höhere Frequenzen möglich, denn 8051 braucht ja 
(normalerweise) mehrere Takte pro Instruktionszyklus.

Weiterhin ist
1
while(1) {
2
  P13=0; //Pin low
3
  P13=1; //Pin high
4
  P13=0;
5
  P13=1;
6
  P13=0;
7
  P13=1;
8
  P13=0;
9
  P13=1;
10
  P13=0;
11
  P13=1;
12
  P13=0;
13
  P13=1;
14
  P13=0;
15
  P13=1;
16
  P13=0;
17
  P13=1;
18
  P13=0;
19
  P13=1;
20
  P13=0;
21
  P13=1;
22
  P13=0;
23
  P13=1;
24
}

deutlich "schneller" wenn man es mit dem Oszi ausmisst, weil der 
Rücksprung seltener erfolgt. Der schluckt einen zusätzlichen 
Instruktionszyklus.
Gast #7059486
Lesenswert?
• ▲
▼
Kann man die Schleife ganz weglassen?

Den ganzen Programmspeicher mit Pin Low und Pin High vollschreiben. Und 
dann drauf verlassen, nach dem Überlauf fängt der Programmcounter wieder 
bei der Adresse 0 an.
Gast #7059837
Lesenswert?
• ▲
▼
Ein UPSD3233/4 von ST hat neben einem 8051 Kern noch ein
nettes PLD. Das kann natuerlich auch
> eine Rechstecksschwingung der höchsten möglichen Frequenz
ausgeben.
Auch asynchrone "Schweinerein" gehen damit.
Z.B. ein XOR eines Taktes mit einem etwas verzoegertem Takt.
Wenn das noch zu langsam sein sollte, und man genuegend
Exemplare zum "Testen" hat, waere auch ein Ringoszillator
eine Option.
Da ksnn auch der "Assemblerbrogrammierer" nur neidisch guggen.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.