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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.