$nomod51 ;der Modus fuer 8051 wird abgeschaltet $debug $nolist ;es wird kein Listing fuer reg535 erstellt $include(reg535.pdf) ;die 80535-spezifischen Daten $list ;es wird ein Listing erstellt $ title (INDADR.A51) ;------------------------------------------------------------------------ ;Programmbeschreibung ;------------------------------------------------------------------------ ;Programm: Demonstriert indirekte Adressierung ; T1 beschreibt den internen Speicherbereich von 30h bis 7fh mit A5h ; T2 beschreibt den internen Speicherbereich von 30h bis 7fh mit 0 ; ; ;Datum: 10.11.2005 ;Programmiert: Marcus Maurer ; ;Verwendete Einspruenge: keine ; ;Verwendete Unterprogramme: keine ; ; ;Verwendete Register und Variable: ;Registerbank(0) ;R2 ; ;Kommentar: ; ;Aenderungen: ;Datum: ; ; ;------------------------------------------------------------------------ ;Initialisierungsteil für allgemeine Konstanten ;------------------------------------------------------------------------ CSEG AT 0H ;Legt absolute Codesegmentadresse auf 0h jmp INIT ; ;------------------------------------------------------------------------ ;Interrupt-Vektoren ;------------------------------------------------------------------------ ;------------------------------------------------------------------------ ;Initialisierungsteil für On-Chip Peripherie ;------------------------------------------------------------------------ ORG 100H ;Programmstart bei 100H INIT: ;------------------------------------------------------------------------ ;Programmschleife ;------------------------------------------------------------------------ ABFRAGE: jnb P1.1, LABEL1 ;ABFRAGE T1 -> LABEL1 jnb P1.2, LABEL2 ;ABFRAGE T2 -> LABEL2 jmp ABFRAGE ;Sprung auf ABFRAGE LABEL1: ;initialisieren der Register mov R0,#030h ;in R0 steht die Adresse mov A,#0A5h ;im akku steht die Zahl A5h mov R2,#050h ;Zaehlregister mit 50h laden SCHLEIFE1: mov @R0,A ;schiebe Inhalt von akku in Adresse welche in R0 steht inc R0 ;inkrementiere R0 djnz R2,SCHLEIFE1 ;zaehlregister dekrementieren, ABFRAGE=0? jmp ABFRAGE ;Sprung auf ABFRAGE LABEL2: ;inti. der Register mov R0,#030h ;in R0 steht die Adresse mov A,#0h ;im akku steht die Zahl A0h mov R2,#050h ;Zaehlregister mit 50h laden SCHLEIFE2: mov @R0,A ;schiebe Inhalt von akku in Adresse welche in R0 steht inc R0 djnz R2,SCHLEIFE2 jmp ABFRAGE END