Forum: Mikrocontroller und Digitale Elektronik AT89C5131 declarieren


von Lisa K. (Firma: RockwellCollins) (kleine)


Lesenswert?

Hallo zusammen,

ich erstelle zur Zeit ein Assemblerprogramm für den AT89C5131.
Diesbezüglich habe ich 3 Fragen.

1.) Ich muss die Ports declarieren, welche Funktion diese haben sollen.
Jedoch finde ich im Datenblatt und in Internet nicht wie ich dies machen 
kann.
Kann mir jemand sagen wie ich diese declarieren kann?

2.) Intern hat der 89C5131 ja 4 Registerbänke mit je 8 Registern ich 
hatte geplant die Registerbank 3 ganz und von der Registerbank 4 nur R0 
zu verwenden, wie lauten dazu die Adressen?

3.) Ich brauche in den Programm ein Interrupt, das Interruptprogramm 
selbst habe ich schon geschrieben weiß aber nicht, wie ich die Interrupt 
Initialisierung auslösen kann.

Vielen Dank schonmal im voraus für die Hilfe

Gruß Lisa

von 8051 (Gast)


Lesenswert?


von Georg G. (df2au)


Lesenswert?

Lisa Kaminski schrieb:
> 1.) Ich muss die Ports declarieren, welche Funktion diese haben sollen.
> Jedoch finde ich im Datenblatt und in Internet nicht wie ich dies machen
> kann.
> Kann mir jemand sagen wie ich diese declarieren kann?
Leider verstehe ich deine Frage nicht. Was willst du deklarieren? Die 
Ports sind Standard bidirektionale Ports wie in jedem normalen MCS51 
System. Oder willst du die "alternate functions" aktivieren?


> 2.) Intern hat der 89C5131 ja 4 Registerbänke mit je 8 Registern ich
> hatte geplant die Registerbank 3 ganz und von der Registerbank 4 nur R0
> zu verwenden, wie lauten dazu die Adressen?
Wozu brauchst du die Adressen? Mit "sel rbx" und dann den Namen der 
Register (R0, R1 usw) geht es simpel. In welcher Sprache programmierst 
du? Warum nicht RB0 verwenden? Das ist die Grundeinstellung nach Reset. 
Die Adressen sind übrigens wie in jedem MCS51 System.

> 3.) Ich brauche in den Programm ein Interrupt, das Interruptprogramm
> selbst habe ich schon geschrieben weiß aber nicht, wie ich die Interrupt
> Initialisierung auslösen kann.
Auch diese Frage verstehe ich nicht. Leg deine ISR an die passende 
Adresse (auf Seite 84 des Datenblattes findest du sie), gib den 
Interrupt selbst frei und auch die globale Interrupt Freigabe und alles 
ist gut.

Du solltest dir vielleicht ein Grundlagen Buch über MCS51 besorgen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Lisa Kaminski schrieb:
> 1.) Ich muss die Ports declarieren, welche Funktion diese haben sollen.
> Jedoch finde ich im Datenblatt und in Internet nicht wie ich dies machen
> kann.
> Kann mir jemand sagen wie ich diese declarieren kann?

Das hängt von deiner Entwicklungsumgebung ab. Die Adressen stehen im 
Datenblatt, aber wie genau so eine Deklaration aussieht, liegt an deiner 
IDE.
hier mal ein paar Beispiele - musst du mal in den mitgelieferten 
Beispielen deiner IDE schauen:
1
.equ PCON 0x87
2
.equ USBCON 0xBC
3
; oder eher in Intel Nomenklatur
4
.def PCON 087h
5
.def USBCON 0BCh

> 2.) Intern hat der 89C5131 ja 4 Registerbänke mit je 8 Registern ich
> hatte geplant die Registerbank 3 ganz und von der Registerbank 4 nur R0
> zu verwenden, wie lauten dazu die Adressen?
Auch das steht im Datenblatt. Alles was nicht neu im 89C5131 ist, ist 
wie beim 80C51 - du brauchst also auch dessen DB.
Registerbank 0 liegt also wie immer bei 00h bis 07h, Bank 1 bei 08h bis 
0fh usw.

> 3.) Ich brauche in den Programm ein Interrupt, das Interruptprogramm
> selbst habe ich schon geschrieben weiß aber nicht, wie ich die Interrupt
> Initialisierung auslösen kann.
Auch das steht in der Registerbeschreibung deines MC, bei 
Standardperipherie im DB des 80C51, sonst im DB des 89C5131.
Also: Vektortabelle mit jmp an der richtigen Adress am Anfang des Flash 
und in der Initialisierung im IE Register das Interrupt-Enable setzen.
z.B. für Timer 0:
1
     .org 000h
2
     ajmp RESET
3
     .org 00bh
4
     ajmp MyTimerISR
5
6
     .org 100h
7
MyTimerISR:
8
; hier wird der Timer interrupt bearbeitet
9
     reti
10
RESET:
11
     mov  IE,#(1<<ET0)   ; setzen des Timer0 bits für ISR
12
; usw.
Besorg dir also noch die Hardware Referenz für die 80C51 Familie.

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.